Труды КНЦ вып.8 (ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ вып. 3/2017(8))
Следующий компонент архитектуры MVС - вид, отвечающий за обработку загрузки файлов в проект. 1 from django.views import View 2 import subprocess, os 3 from .forms import DocForm 4 from .models import Doc 10 class ProgressBarUpload (View): 12 def get(self, request) : 13 docs list = Doc.objects.all() 14 return render(self.request, 'docs/progress bar upload/index.html', {'docs': docs list}) 15 def post(self, request): 16 form = DocForm(self.request.POST, self.request.FILES) 17 if form.is valid(): 18 doc = form.save() 19 data = {'is valid': True, 'name': doc.file.name, 'url': doc.file.url} 20 else: 21 data = {'is valid': False} 22 return JsonResponse(data) Данная функция выполняет загрузку файлов, a JavaScript на странице пользователя показывает прогресс данной операции, в строках 19-22 происходит асинхронная (без перезагрузки страницы) передача данных. Там же в представлении выполняется преобразование файлов в формат Pdf: 41 def all to pdf(request): 42 doc list = Doc.objects.all() 43 pa = '/home/user/doc env/multiple/media/' 44 for doc in doc list: 45 if doc.file.name.split('.')[1] != 'pdf': 46 pam = doc.file.name 47 subprocess.call('unoconv '+pa+pam, shell=True) 48 dox = '.'+(pam.split('.')[-1]) 49 Doc.objects.filter(file = pam) .update(file = pam.replace(dox,".pdf")) 50 return render(request, 'docs/progress bar upload/index.html', {'docs': doc list}) В строке 41 объявляется функция для преобразования, переменная «ра» (строка 43) хранит путь до рабочего каталога с документами, далее циклом (строки 44 - 49) перебираем все файлы в БД. Если файл имеет формат отличный 169
Made with FlippingBook
RkJQdWJsaXNoZXIy MTUzNzYz