from django.shortcuts import render, redirect from django.contrib import messages from django.core.mail import send_mail, EmailMultiAlternatives from django.template.loader import get_template, render_to_string from django.views.generic import View, DetailView from archilance.mixins import BaseMixin from .forms import PrintOrderForm from .models import PrintDocuments, PrintOrder, Settings class PrintOrderDetailView(DetailView): model = PrintOrder template_name = 'printorder_detail.html' class PrintDocumentCreate(BaseMixin, View): form_class = PrintOrderForm template_name = 'printdocument_create.html' def get(self, request, *args, **kwargs): form = self.form_class(request=request) return render(request, self.template_name, {'form': form}) def post(self, request, *args, **kwargs): form = self.form_class(request.POST, request.FILES, request=request) if form.is_valid(): print_order = form.save(commit=False) print_order.save() for file in request.FILES.getlist('new_files'): print_doc = PrintDocuments.objects.create(file=file, printorder=print_order) print_doc.save() print_documents = print_order.print_documents.all() limit_size = 10 * 1024 * 1024 attachments = [] link_files = [] for f in print_documents: if f.file.size > limit_size: link_files.append(f.file.path) else: attachments.append(f.file.path) ctx_dict = { 'username': print_order.sender, 'phone': print_order.phone, 'address': print_order.address, 'files': link_files, } settings = Settings.objects.all().first() subject, from_email, to = 'Заявка на распечатку', 'mukhtar@mukhtar', settings.document_send_email text_content = render_to_string('document_email.txt', ctx_dict) html_content = get_template('document_email.html').render(ctx_dict) msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") for attach in attachments: msg.attach_file(attach) msg.send() messages.info(request, 'Заявка на распечатку принята') return redirect('common:print-order-detail',pk=print_order.pk) # import code; code.interact(local=dict(globals(), **locals())) else: context = self.get_context_data(**kwargs) context.update({'form': form}) return render(request, self.template_name, context)