You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.6 KiB
65 lines
2.6 KiB
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
|
|
from archilance.mixins import BaseMixin
|
|
|
|
from .forms import PrintOrderForm
|
|
from .models import PrintDocuments, PrintOrder, Settings
|
|
|
|
|
|
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 = PrintDocuments.objects.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:create')
|
|
# 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)
|
|
|