Merge branch 'master' of ssh://192.168.100.6/repo/record

Conflicts:
	asuzr/common.py
	asuzr/views.py
This commit is contained in:
2015-07-31 23:32:35 +05:00
13 changed files with 138 additions and 25 deletions

View File

@@ -16,15 +16,10 @@ class custom_date(date):
def weekday_color(self):
return self.day_colors[self.weekday()]
@property
def date_dd_mm_yy(self):
return self.strftime('%d/%m/%Y')
@property
def is_weekend(self):
return self.weekday() >= 5
def log_view_call(fn):
'''
Wrapper for views log

View File

@@ -1,7 +1,9 @@
# -*- coding: utf-8 -*-
from django import forms
from django.forms import ModelForm
from datetime import date
from django.contrib.admin.widgets import AdminDateWidget
from asuzr.models import Order
class DateForm (forms.Form):
date = forms.DateField(widget = AdminDateWidget, label = u'Дата', initial = date.today)
@@ -9,3 +11,9 @@ class DateForm (forms.Form):
class DiapDateForm (forms.Form):
sdate = forms.DateField(widget = AdminDateWidget, label = u'С', initial = date.today)
edate = forms.DateField(widget = AdminDateWidget, label = u'по', initial = date.today)
class OrderForm(ModelForm):
class Meta:
model = Order
fields = ['product', 'price', 'paid', 'address', 'deadline', 'delivery', 'lifting']

View File

@@ -112,6 +112,13 @@ class Order(models.Model):
return need_color
def save(self, *args, **kwargs):
super(Order, self).save(*args, **kwargs)
cost_items = CostItem.objects.filter(default_item = True)
for ci in cost_items:
new_order_cost = OrderCosts(order = self, cost_item = ci, value = 0, formula = '')
new_order_cost.save()
#Эскизы
class Sketch(models.Model):
def get_sketch_path(self, file_name):

BIN
asuzr/static/del.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
asuzr/static/rubbish.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

View File

@@ -7,6 +7,17 @@ from django.contrib.admin.models import LogEntry
import django_tables2 as tables
from models import *
class StaffLinkColumn(tables.TemplateColumn):
def __init__(self, view, *args, **kwargs):
template = '''
{{% if request.user.is_staff %}}
<a href={{% url '{view}' record.id %}}>{{{{ record.product }}}}</a>
{{% else %}}
{{{{ record.product }}}}
{{% endif %}}
'''.format(view = view)
super(StaffLinkColumn, self).__init__(template, *args, **kwargs)
class EditableColumn(tables.TemplateColumn):
def __init__(self, field_name, object_name = '', *args, **kwargs):
template = '''
@@ -56,9 +67,10 @@ class ThumbnailColumn(tables.TemplateColumn):
super(ThumbnailColumn, self).__init__(template, *args, **kwargs)
class OrdersTable(tables.Table):
date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
deadline = tables.DateColumn('d/m/Y', verbose_name = 'Срок сдачи')
product = tables.LinkColumn('asuzr.views.production_table', verbose_name = 'Наименование', args=[tables.utils.A('pk')])
date = tables.DateColumn('d.m.Y', verbose_name = 'Дата')
deadline = tables.DateColumn('d.m.Y', verbose_name = 'Срок сдачи')
#product = tables.LinkColumn('asuzr.views.production_table', verbose_name = 'Наименование', args=[tables.utils.A('pk')])
product = StaffLinkColumn(view = 'asuzr.views.production_table', verbose_name = 'Наименование')
delivery = EditableColumn('delivery', verbose_name = 'Доставка')
lifting = EditableColumn('lifting', verbose_name = 'Подъем')
address = tables.Column(verbose_name = 'Адрес')
@@ -147,6 +159,7 @@ class VisitTable(tables.Table):
idx = indexes[s]
self.summary[idx] = summaries[s]
def render_orders(self, value, record, column):
value = 0 if value == None else value
return mark_safe('<a href="%s?date=%s">%s</a>' % (
@@ -189,7 +202,7 @@ class DayOrdersTable(OrdersTable):
'designer',
'deadline',
)
template = 'asuzr/totals_table.html'
template = 'asuzr/table_with_form.html'
class ProdPlanTable(tables.Table):
date = tables.Column(verbose_name = 'Дата')
@@ -203,14 +216,11 @@ class ProdPlanTable(tables.Table):
class ProductionTable(tables.Table):
cost_item = tables.Column(verbose_name = 'Комплектующие')
value = tables.Column(verbose_name = 'Стоимость')
value = EditableColumn('value', verbose_name = 'Стоимость')
summary = ['Итого затрат', 0]
balance = ['Прибыль', 0]
def render_value(self, value):
return '%0.2f' % value
def set_summary(self, value):
self.summary[1] = value

View File

@@ -119,6 +119,8 @@ def visit_view(request):
orders_table = get_day_orders_table(curr_date, 'orders-')
RequestConfig(request).configure(orders_table)
order_form = OrderForm()
title = u'Таблица посещаемости на %s' % dateformat.format(curr_date, 'F Y')
return render(request, 'asuzr/table2.html', {
@@ -126,7 +128,9 @@ def visit_view(request):
'table2': orders_table,
'additional_info': add_info,
'title': title,
'form': form})
'dateform': form,
'model_form': order_form
})
@login_required
def main(request, day, month, year):
@@ -217,6 +221,12 @@ def sketches(request, order_id):
'table': table,
'title': u'Эскизы заказа %s' % curr_order})
def add_order(request):
new_order = Order(date=date.today(), designer = request.user)
form = OrderForm(request.POST, instance = new_order)
form.save()
return redirect(visit_view)
def delete_sketch(request):
pk = request.GET.get('pk', -1)
sketch = get_object_or_404(Sketch, pk = pk)
@@ -246,7 +256,7 @@ def desreport(request):
title = u'Отчет по дизайнерам за '+' - '.join((start_date, end_date))
form = DiapDateForm({'sdate': sdate, 'edate': edate})
RequestConfig(request).configure(table)
return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'form': form})
return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'dateform': form})
@log_view_call
@login_required
@@ -282,7 +292,7 @@ def prod_plan_view(request):
title = u'Производственный план на %s - %s' % (sdate.strftime('%d.%m.%Y'), edate.strftime('%d.%m.%Y'))
form = DateForm({'date':curr_date})
RequestConfig(request).configure(table)
return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'form': form})
return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'dateform': form})
@login_required
def log_view(request):

View File

@@ -109,3 +109,4 @@ from django.utils.safestring import mark_safe
INPLACEEDIT_EDIT_EMPTY_VALUE = mark_safe(u'<div class="gray">Редактировать</div>')
ADAPTOR_INPLACEEDIT_EDIT = 'inplaceeditform.perms.AdminDjangoPermEditInline'

View File

@@ -16,11 +16,12 @@ urlpatterns = patterns('',
url(r'^product/(?P<prod_id>\d+)/$', 'asuzr.views.prod_detail'),
url(r'^main/?(?P<day>\d+)?/?(?P<month>\d+)?/?(?P<year>\d+)?/$', 'asuzr.views.main', name='asuzr-main'),
url(r'^visits/$', 'asuzr.views.visit_view'),
url(r'^order/add/$', 'asuzr.views.add_order', name = 'add-order'),
url(r'^orders/(?P<archive>\d+)/$', 'asuzr.views.orders',name='asuzr-orders'),
url(r'^desreport/$', 'asuzr.views.desreport'),
url(r'^production_table/(?P<order_id>\d+)/$', 'asuzr.views.production_table'),
url(r'^sketches/(?P<order_id>\d+)/$', 'asuzr.views.sketches'),
url(r'^sketches/delete/$', 'asuzr.views.delete_sketch'),
url(r'^sketches/delete/$', 'asuzr.views.delete_sketch', name = 'asuzr-del-sketch'),
url(r'^prodplan/$', 'asuzr.views.prod_plan_view'),
url(r'^admin/', include(admin.site.urls)),
url(r'^log/$', 'asuzr.views.log_view'),
@@ -34,4 +35,5 @@ if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}))
'document_root': settings.MEDIA_ROOT}))

View File

@@ -37,6 +37,13 @@
.gray {
color: lightgray;
}
#dateform {
margin-left: 12px;
margin-top: 6px;
}
body {
background: #F5F5F5
}
</style>
</head>
<body>
@@ -65,9 +72,9 @@
{% block controls %}
{% if form %}
<form method="get">
{{ form }}
{% if dateform %}
<form id='dateform' method="get">
{{ dateform }}
<input type="submit" value="OK" />
</form>
{% endif %}

View File

@@ -1,19 +1,43 @@
{% extends "asuzr/base.html" %}
{% load thumbnail %}
{% load staticfiles %}
{% block page %}
<style>
#list li{
list-style-type: none; /* Прячем исходные маркеры */
display: inline; /* Отображать как строчный элемент */
margin-right: 10px; /* Отступ слева */
padding: 5px; /* Поля вокруг текста */
}
#sketch {
width: 200px;
margin: 0px;
}
#sketch li {
position: relative;
}
.sketch_img {
display: inline-block;
width: 200px;
height: 200px;
z-index: 1;
}
.del_icon {
display: inline-block;
z-index: 2;
margin-left: -30px;
width: 20px;
height: 20px;
}
</style>
{% if sketch_list %}
<ul id = "list">
{% for sketch in sketch_list %}
<li> {% thumbnail sketch.sketch_file "200x200" crop="center" as im %} <a href = {{sketch.sketch_file.url}}> <img src = "{{ im.url }}"> </a>{% endthumbnail %} </li>
<li id="sketch"> {% thumbnail sketch.sketch_file "200x200" crop="center" as im %} <a class = "sketch_img" href = {{sketch.sketch_file.url}}> <img src = "{{ im.url }}"/> </a>{% endthumbnail %} <a class = "del_icon" title = "Удалить" href= "{% url 'asuzr-del-sketch' %}?pk={{sketch.id}}"><img src = "{% static "del.png" %}"/></a></li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
{% block additional %}
<div class="inline">
@@ -25,3 +49,4 @@
</form>
</div>
{% endblock %}
{% endblock %}

View File

@@ -3,8 +3,15 @@
{% load render_table from django_tables2 %}
{% block page %}
<div class="inline"><div><h3>{{ table1.verbose_name }}</h3></div>{% render_table table1 %}</div>
<div class="inline"><div><h3>{{ table2.verbose_name }}</h3></div>{% render_table table2 %}</div>
<div class="inline" style="width:38%;"><div><h3>{{ table1.verbose_name }}</h3></div>{% render_table table1 %}</div>
<div class="inline" style="width:20%;"><div><h3>{{ table2.verbose_name }}</h3></div>{% render_table table2 %}</div>
{% if order_form %}
<form action="{% url 'add-order' %}" method="POST" >
{% csrf_token %}
{{order_form}}
<input type="submit" text="Добавить заказ">
</form>
{% endif %}
{% if additional_info %}
<div>
<hr>

View File

@@ -0,0 +1,41 @@
{% extends "asuzr/totals_table.html" %}
{% load django_tables2 %}
{% load i18n %}
{% block table.tbody %}
<tbody>
{% for row in table.page.object_list|default:table.rows %} {# support pagination #}
{% block table.tbody.row %}
<tr class="{{ forloop.counter|divisibleby:2|yesno:"even,odd" }}"> {# avoid cycle for Django 1.2-1.6 compatibility #}
{% for column, cell in row.items %}
<td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
{% endfor %}
</tr>
{% endblock table.tbody.row %}
{% empty %}
{% if table.empty_text %}
{% block table.tbody.empty_text %}
<tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
{% endblock table.tbody.empty_text %}
{% endif %}
{% endfor %}
{% if model_form %}
<form action="{% url 'add-order' %}" method="POST" >
{% csrf_token %}
<tr>
<td>{{model_form.product}}</td>
<td>{{model_form.price}}</td>
<td>{{model_form.paid}}</td>
<td>{{model_form.address}}</td>
<td></td>
<td>{{model_form.deadline}}</td>
<td>{{model_form.delivery}}</td>
<td>{{model_form.lifting}}</td>
</tr>
<tr>
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
<td><input type="submit" text="Добавить заказ"></td>
</tr>
</form>
{% endif %}
</tbody>
{% endblock table.tbody %}