Дипломная работа: Автоматизация процесса введения документации и отчетности в ООО "Аэрофильтр"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
91
file = await self.gridfs.get(doc['fileid'])
return file
import aiohttp_jinja2
from aiohttp import web
from datetime import datetime
from tempfile import NamedTemporaryFile
from aiohttp_session import get_session
from settings import config
from components.documents.models import Document
from utils.jinjia_utils import complete_response
class Download(web.View):
async def get(self):
_id = self.request.match_info.get('id')
if not _id:
raise web.HTTPFound(self.request.app.router['main']._path)
d = Document(self.request.app.db)
file = await d.download(_id)
92
headers = {
'Content-Type': 'application/octet-stream',
'Content-Disposition': 'attachment; filename=%s' % file.filename
}
return web.Response(body=await file.read(), headers=headers)
class AddNew(web.View):
@aiohttp_jinja2.template('documents/add_new.jinja2')
@complete_response
async def get(self):
return {
'document_types': config.get('document_types') or {}
}
@aiohttp_jinja2.template('documents/add_new.jinja2')
@complete_response
async def post(self):
reader = await self.request.multipart()
93
data = {}
while True:
field = await reader.next()
if not field:
break
if field.name == 'fileinput':
filename = field.filename
with NamedTemporaryFile(delete=False, suffix=filename) as f:
while True:
chunk = await field.read_chunk()
if not chunk:
break
f.write(chunk)
data['filename'] = filename
data['filepath'] = f.name
else:
data[field.name] = (await field.read()).decode('utf-8')
data['created'] = datetime.now()
94
if data.get('date'):
try:
_ = datetime.strptime(data['date'], '%Y-%m-%d')
except:
_ = data['created']
data['date'] = _
else:
data['date'] = data['created']
errors = []
if not data.get('filename'):
errors.append('Не задан файл документа')
if not data.get('title'):
errors.append('Неверный заголовок')
if not data.get('type') or not config.document_types.get(data.get('type', '')):
errors.append('Неверный тип документа')
if errors:
return dict(document_types=config.get('document_types') or {}, errors=errors,
**data)
session = await get_session(self.request)
95
user = session.get('user')
data['author'] = user['login']
data['access_level'] = -1
d = Document(self.request.app.db)
if not await d.process_document(data):
errors.append('Неверный файл документа')
if errors:
return dict(document_types=config.get('document_types') or {},
errors=errors, **data)
session = await get_session(self.request)
session['success'] = 'Документ добавлен'
return web.HTTPSeeOther(self.request.app.router['main']._path)
import datetime
import phonenumbers
from bson.objectid import ObjectId
from dotted.collection import DottedDict
Источник: https://baza.diplomsite.ru/previewfile/2029