diff --git a/asuzr/common.py b/asuzr/common.py index bf6f8be..80d5049 100644 --- a/asuzr/common.py +++ b/asuzr/common.py @@ -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 diff --git a/asuzr/forms.py b/asuzr/forms.py index f02adf5..4cfee75 100644 --- a/asuzr/forms.py +++ b/asuzr/forms.py @@ -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'] + \ No newline at end of file diff --git a/asuzr/models.py b/asuzr/models.py index 0606b62..4f8239c 100644 --- a/asuzr/models.py +++ b/asuzr/models.py @@ -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): diff --git a/asuzr/static/del.png b/asuzr/static/del.png new file mode 100644 index 0000000..4ac4b81 Binary files /dev/null and b/asuzr/static/del.png differ diff --git a/asuzr/static/rubbish.png b/asuzr/static/rubbish.png new file mode 100644 index 0000000..679fe94 Binary files /dev/null and b/asuzr/static/rubbish.png differ diff --git a/asuzr/tables.py b/asuzr/tables.py index ec24486..a29d868 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -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 %}} + {{{{ record.product }}}} + {{% 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('%s' % ( @@ -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 diff --git a/asuzr/views.py b/asuzr/views.py index 7d3cb17..e83a82a 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -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): diff --git a/record/settings.py b/record/settings.py index e1ba6e5..7d9d4aa 100644 --- a/record/settings.py +++ b/record/settings.py @@ -109,3 +109,4 @@ from django.utils.safestring import mark_safe INPLACEEDIT_EDIT_EMPTY_VALUE = mark_safe(u'