parent
2d968c670b
commit
5440e8758a
15 changed files with 348 additions and 16 deletions
@ -0,0 +1,28 @@ |
|||||||
|
from django import forms |
||||||
|
from .models import PrintOrder, PrintDocuments |
||||||
|
|
||||||
|
|
||||||
|
class PrintOrderForm(forms.ModelForm): |
||||||
|
files = forms.ModelMultipleChoiceField( |
||||||
|
queryset=PrintDocuments.objects.none(), |
||||||
|
widget=forms.CheckboxSelectMultiple, |
||||||
|
required=False, |
||||||
|
) |
||||||
|
|
||||||
|
class Meta: |
||||||
|
model = PrintOrder |
||||||
|
|
||||||
|
fields = ( |
||||||
|
'sender', |
||||||
|
'phone', |
||||||
|
'address', |
||||||
|
'shipping', |
||||||
|
'files', |
||||||
|
'text', |
||||||
|
) |
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs): |
||||||
|
self.request = kwargs.pop('request') |
||||||
|
super().__init__(*args, **kwargs) |
||||||
|
if self.instance.pk: |
||||||
|
self.fields['files'].queryset = self.instance.files |
||||||
@ -0,0 +1,49 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-29 12:30 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.db.models.deletion |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0001_initial'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.CreateModel( |
||||||
|
name='PrintDocuments', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('file', models.FileField(upload_to='common/printdocuments/')), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Документы на распечатку', |
||||||
|
'verbose_name_plural': 'Документы на распечатку', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.CreateModel( |
||||||
|
name='PrintOrder', |
||||||
|
fields=[ |
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||||
|
('sender', models.CharField(max_length=150)), |
||||||
|
('phone', models.CharField(max_length=50)), |
||||||
|
('address', models.CharField(max_length=255)), |
||||||
|
('created', models.DateTimeField(default=django.utils.timezone.now)), |
||||||
|
('shipping', models.CharField(choices=[('self_delivery', 'Самовывоз'), ('courier_delivery', 'Доставка курьером')], default='self_delivery', max_length=30)), |
||||||
|
('text', models.TextField()), |
||||||
|
], |
||||||
|
options={ |
||||||
|
'verbose_name': 'Заявка на распечатку', |
||||||
|
'verbose_name_plural': 'Заявки на распечатку', |
||||||
|
}, |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='printdocuments', |
||||||
|
name='printorder', |
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='print_documents', to='common.PrintOrder'), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-29 14:47 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('common', '0002_auto_20160729_1530'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AddField( |
||||||
|
model_name='settings', |
||||||
|
name='document_send_description', |
||||||
|
field=models.TextField(blank=True), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='settings', |
||||||
|
name='document_send_email', |
||||||
|
field=models.EmailField(default='muhtarzubanchi05@gmail.com', max_length=100), |
||||||
|
), |
||||||
|
migrations.AddField( |
||||||
|
model_name='settings', |
||||||
|
name='document_send_time_remove', |
||||||
|
field=models.IntegerField(default=14), |
||||||
|
), |
||||||
|
] |
||||||
@ -0,0 +1,4 @@ |
|||||||
|
|
||||||
|
Welcome {{ username }}! |
||||||
|
|
||||||
|
Your username is {{ username }} and your password is {{ files }}. |
||||||
@ -0,0 +1,100 @@ |
|||||||
|
{% extends 'partials/base.html' %} |
||||||
|
{% load staticfiles %} |
||||||
|
{% load thumbnail %} |
||||||
|
{% block content %} |
||||||
|
{% include 'partials/header.html' %} |
||||||
|
<div class="container mainScore"> |
||||||
|
<div class="row"> |
||||||
|
<h1>Услуга по распечатке документов</h1> |
||||||
|
<form method="POST" enctype="multipart/form-data" novalidate> |
||||||
|
{% csrf_token %} |
||||||
|
|
||||||
|
<div class="chatBlock new-rass new-rass2 disTab"> |
||||||
|
<div class="col-lg-7"> |
||||||
|
<p class="new-pp new-pp3">Формирование заказа</p> |
||||||
|
|
||||||
|
{% if form.non_field_errors %} |
||||||
|
<div class="new-pp3" style="color: red; margin-top: 70px">{{ form.non_field_errors }}</div> |
||||||
|
{% endif %} |
||||||
|
<div class="col-lg-3 wrChat1"> |
||||||
|
|
||||||
|
<div id="fileUploadContainer" class="col-lg-12 documentsChat"> |
||||||
|
<div class="upload"> |
||||||
|
<p id="fileUploadAddBtn" style="margin: 0">+ добавить файл (до 100 файлов)</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<ul class="list-new-new"> |
||||||
|
<li class="file-upload-widget" style="display: none"> |
||||||
|
<input type="file" name="new_files" class="file-upload-input" |
||||||
|
style="position: absolute; top: -1000px; left: -1000px"> |
||||||
|
<p class="file-upload-label"></p> |
||||||
|
<div class="file-upload-remove-btn"></div> |
||||||
|
</li> |
||||||
|
</ul> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
|
<p>Описание <span style="color: red">{{ form.text.errors.as_text }}</span></p> |
||||||
|
<textarea name="{{ form.text.html_name }}" id="text-new">{{ form.text.value }}</textarea> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="searchF1 polsF1 polsFF radio-afer"> |
||||||
|
<div class="col-lg-6"> |
||||||
|
<label> |
||||||
|
<input |
||||||
|
type="radio" |
||||||
|
name="{{ form.shipping.html_name }}" |
||||||
|
value="self_delivery"> |
||||||
|
<span></span> |
||||||
|
</label> |
||||||
|
<p class="text-afer">Самовывоз</p> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="col-lg-6"> |
||||||
|
<label> |
||||||
|
<input |
||||||
|
type="radio" |
||||||
|
name="{{ form.shipping.html_name }}" |
||||||
|
value="courier_delivery"> |
||||||
|
|
||||||
|
<span></span> |
||||||
|
</label> |
||||||
|
|
||||||
|
<p class="text-afer">Доставка курьером</p> |
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
|
<p>Получатель<span style="color: red">{{ form.sender.errors.as_text }}</span></p> |
||||||
|
<input type="text" class="box-sizing" name="{{ form.sender.html_name }}" |
||||||
|
value="{{ form.sender.value }}"> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
|
<p>Телефон<span style="color: red">{{ form.phone.errors.as_text }}</span></p> |
||||||
|
<input type="text" class="box-sizing" name="{{ form.phone.html_name }}" |
||||||
|
value="{{ form.phone.value }}"> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="textAreaBlock2 text-nn box-sizing disTab"> |
||||||
|
<p>Адрес<span style="color: red">{{ form.address.errors.as_text }}</span></p> |
||||||
|
<input type="text" class="box-sizing" name="{{ form.address.html_name }}" |
||||||
|
value="{{ form.address.value }}"> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="searchF1 polsF1 polsFF links-filter"> |
||||||
|
<input class="btn-submit-link" type="submit" value="Отправить"> |
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
<div class="col-lg-5"> |
||||||
|
<p class="new-pp new-pp3">Описание услуги и расценки</p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
{% include 'partials/footer.html' %} |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
{% endblock %} |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
from django.conf import urls |
||||||
|
|
||||||
|
from .views import ( |
||||||
|
PrintDocumentCreate, |
||||||
|
) |
||||||
|
|
||||||
|
app_name = 'common' |
||||||
|
|
||||||
|
urlpatterns = [ |
||||||
|
urls.url(r'^printdocument/create/$', PrintDocumentCreate.as_view(), name='create'), |
||||||
|
] |
||||||
@ -1,3 +1,49 @@ |
|||||||
from django.shortcuts import render |
from django.shortcuts import render, redirect |
||||||
|
from django.contrib import messages |
||||||
|
from django.core.mail import send_mail |
||||||
|
from django.template.loader import get_template |
||||||
|
from django.template import Context |
||||||
|
from django.http import HttpResponse |
||||||
|
from django.views.generic import View |
||||||
|
from archilance.mixins import BaseMixin |
||||||
|
|
||||||
# Create your views here. |
from .forms import PrintOrderForm |
||||||
|
from .models import PrintDocuments, PrintOrder |
||||||
|
|
||||||
|
|
||||||
|
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() |
||||||
|
|
||||||
|
send_mail('Заявка на распечатку', |
||||||
|
get_template('document_email.html').render( |
||||||
|
{ |
||||||
|
'username': 'Mukhtar', |
||||||
|
'files': 'This is files list' |
||||||
|
} |
||||||
|
), |
||||||
|
'dagdahzub@mail.ru', |
||||||
|
['muhtarzubanchi05@gmail.com'], |
||||||
|
fail_silently=True |
||||||
|
) |
||||||
|
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) |
||||||
|
|||||||
@ -0,0 +1,21 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# Generated by Django 1.9.7 on 2016-07-29 09:09 |
||||||
|
from __future__ import unicode_literals |
||||||
|
|
||||||
|
from django.db import migrations, models |
||||||
|
import django.utils.timezone |
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration): |
||||||
|
|
||||||
|
dependencies = [ |
||||||
|
('wallets', '0002_auto_20160727_1835'), |
||||||
|
] |
||||||
|
|
||||||
|
operations = [ |
||||||
|
migrations.AlterField( |
||||||
|
model_name='invoicehistory', |
||||||
|
name='created', |
||||||
|
field=models.DateTimeField(default=django.utils.timezone.now), |
||||||
|
), |
||||||
|
] |
||||||
Loading…
Reference in new issue