diff --git a/asuzr/models.py b/asuzr/models.py index f5e660c..900078b 100644 --- a/asuzr/models.py +++ b/asuzr/models.py @@ -115,6 +115,9 @@ class Sketch(models.Model): class Action(models.Model): name = models.CharField(max_length=150) #наименование действия + def __unicode__(self): + return self.name + #Производственный план class ProdPlan(models.Model): start_date = models.DateField() #дата начала @@ -123,6 +126,9 @@ class ProdPlan(models.Model): executor = models.ForeignKey(User) #id исполнителя action = models.ForeignKey(Action) #id действия + def __unicode__(self): + return ', '.join((str(self.start_date), self.order.product.name, self.action.name, self.executor.first_name)) + #Протокол доступа class AccessProtocol(models.Model): time = models.DateTimeField() #время diff --git a/asuzr/tables.py b/asuzr/tables.py index e2e7691..30a29e4 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -97,6 +97,9 @@ class DesignerTable(tables.Table): def render_sum_price(self, value): return '%0.1f' % value + + class Meta: + attrs = {'class': 'paleblue'} class Meta: attrs = {'class': 'paleblue'} @@ -168,3 +171,13 @@ class DayOrdersTable(OrdersTable): 'deadline', ) template = 'asuzr/totals_table.html' + +class ProdPlanTable(tables.Table): + date = tables.Column(verbose_name = 'Дата') + week_day = tables.Column(verbose_name = 'День недели', accessor = 'date.weekday_name') + executor = EditableColumn('executor', 'prodplan',verbose_name = 'Исполнитель') + order = EditableColumn('order', 'prodplan', verbose_name = 'Заказ') + action = EditableColumn('action', 'prodplan', verbose_name = 'Действие') + + class Meta: + attrs = {'class': 'paleblue'} diff --git a/asuzr/views.py b/asuzr/views.py index 4183db5..1902bfa 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -8,6 +8,7 @@ from asuzr.models import Attendance from asuzr.models import Order from asuzr.models import OrderPlan from asuzr.models import Schedule +from asuzr.models import ProdPlan from datetime import datetime, date, timedelta import calendar from django.db.models import Count, Sum @@ -84,6 +85,7 @@ def get_attendance_table(year, month, prefix): table = VisitTable(month_days.values(), prefix = prefix) table.verbose_name = 'Сводная информация' + table.set_summaries({ 'calls': attend_sum['calls__sum'] or 0, 'visits': attend_sum['visits__sum'] or 0, @@ -120,6 +122,13 @@ def visit_view(request): @login_required def main(request, day, month, year): + if day == None: + day = str(date.today().day) + if month == None: + month = str(date.today().month) + if year == None: + year = str(date.today().year) + d,m,y=int(day),int(month), int(year) attend_list = Attendance.objects.all().order_by('date') @@ -221,3 +230,23 @@ def production_table(request, order_id): 'cost_items' : cost_items, }) return HttpResponse(t.render(c)) + +@login_required +def prod_plan_view(request): + curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y') + y,m = curr_date.year, curr_date.month + wd = curr_date.weekday() + sdate = curr_date - timedelta(days = wd) + edate = curr_date + timedelta(days = 6-wd) + + week_days = {i: {'date': custom_date(y,m,sdate.day+i)} for i in range(0,7)} + + prodplan_list = ProdPlan.objects.filter(start_date__range = (sdate,edate)) + + for prodplan in prodplan_list: + week_days[prodplan.start_date.weekday()]['prodplan'] = prodplan + + table = ProdPlanTable(week_days.values()) + title = u'Производственный план на %s - %s' % (sdate.strftime('%d.%m.%Y'), edate.strftime('%d.%m.%Y')) + RequestConfig(request).configure(table) + return render(request, 'asuzr/table.html', {'table': table, 'title': title}) diff --git a/record/settings.py b/record/settings.py index 6183520..f0d872e 100644 --- a/record/settings.py +++ b/record/settings.py @@ -56,7 +56,6 @@ ROOT_URLCONF = 'record.urls' WSGI_APPLICATION = 'record.wsgi.application' - # Database # https://docs.djangoproject.com/en/1.6/ref/settings/#databases diff --git a/record/urls.py b/record/urls.py index 8de3484..ca3f3ee 100644 --- a/record/urls.py +++ b/record/urls.py @@ -14,12 +14,13 @@ js_info_dict = { urlpatterns = patterns('', url(r'^product/$', 'asuzr.views.prod_list'), url(r'^product/(?P\d+)/$', 'asuzr.views.prod_detail'), - url(r'^main/(?P\d+)/(?P\d+)/(?P\d+)/$', 'asuzr.views.main', name='asuzr-main'), + url(r'^main/?(?P\d+)?/?(?P\d+)?/?(?P\d+)?/$', 'asuzr.views.main', name='asuzr-main'), url(r'^visits/$', 'asuzr.views.visit_view'), url(r'^orders/(?P\d+)/$', 'asuzr.views.orders',name='asuzr-orders'), url(r'^desreport/$', 'asuzr.views.desreport'), url(r'^production_table/(?P\d+)/$', 'asuzr.views.production_table'), url(r'^sketches/(?P\d+)/$', 'asuzr.views.sketches'), + url(r'^prodplan/$', 'asuzr.views.prod_plan_view'), url(r'^admin/', include(admin.site.urls)), url(r'^inplaceeditform/', include('inplaceeditform.urls')), url(r'^accounts/login/$', login), diff --git a/templates/asuzr/attend_order.html b/templates/asuzr/attend_order.html index 2490922..acbf097 100644 --- a/templates/asuzr/attend_order.html +++ b/templates/asuzr/attend_order.html @@ -4,8 +4,8 @@ {% block page %} - - + +
{% include 'asuzr/attendance.html' %}{% include 'asuzr/attendance.html' %} {% include 'asuzr/orders_detail.html' %}
diff --git a/templates/asuzr/attendance.html b/templates/asuzr/attendance.html index 842ea68..be933b4 100644 --- a/templates/asuzr/attendance.html +++ b/templates/asuzr/attendance.html @@ -17,7 +17,7 @@ {{ attend.date.weekday_name}} {% if attend.attend %}{% inplace_edit "attend.attend.calls" %}{% endif %} {% if attend.attend %}{% inplace_edit "attend.attend.visits" %}{% endif %} - {{ attend.orders_count}} + {{ attend.orders_count}} {{ attend.orders_price}} {{ attend.designers}} diff --git a/templates/asuzr/base.html b/templates/asuzr/base.html index f288331..15e799a 100644 --- a/templates/asuzr/base.html +++ b/templates/asuzr/base.html @@ -3,7 +3,7 @@ - Автоматическая система учета заказов студии мебели Рекорд + Автоматизированная система учета заказов студии мебели Рекорд {% inplace_static %} @@ -44,6 +44,7 @@
  • Таблица выхода заказов
  • Архивная таблица
  • Отчет по дизайнерам
  • +
  • Производственный план
  • {% if request.user.is_staff %}
  • Администрирование
  • {% endif %}