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