Przeglądaj źródła

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

Conflicts:
	asuzr/tables.py
	asuzr/views.py
	templates/asuzr/base.html
Denis V. Dedkov 10 lat temu
rodzic
commit
f5f13f1e3b

+ 6 - 0
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()				#время

+ 13 - 0
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'}

+ 29 - 0
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})

+ 0 - 1
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
 

+ 2 - 1
record/urls.py

@@ -14,12 +14,13 @@ js_info_dict = {
 urlpatterns = patterns('',
     url(r'^product/$', 'asuzr.views.prod_list'),
     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'^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'^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'^prodplan/$', 'asuzr.views.prod_plan_view'),
     url(r'^admin/', include(admin.site.urls)),
     url(r'^inplaceeditform/', include('inplaceeditform.urls')),
     url(r'^accounts/login/$',  login),

+ 2 - 2
templates/asuzr/attend_order.html

@@ -4,8 +4,8 @@
 {% block page %}
 <table WIDTH="100%">
   <TR VALIGN=top>
-    <TD WIDTH="50%">{% include 'asuzr/attendance.html' %}</TD>
-    <TD WIDTH="5%"></TD>
+    <TD WIDTH="51%">{% include 'asuzr/attendance.html' %}</TD>
+    <TD WIDTH="3%"></TD>
     <TD WIDTH="45%">{% include 'asuzr/orders_detail.html' %}</TD>
   </TR>
 </table>

+ 1 - 1
templates/asuzr/attendance.html

@@ -17,7 +17,7 @@
 	  <TD>{{ attend.date.weekday_name}}</TD>
 	  <TD>{% if attend.attend %}{% inplace_edit "attend.attend.calls" %}{% endif %}</TD>
 	  <TD>{% if attend.attend %}{% inplace_edit "attend.attend.visits" %}{% endif %}</TD>
-	  <TD><a href="{% url 'asuzr-main' attend.date.day attend.date.month attend.date.year %}">{{ attend.orders_count}}</a></TD>
+	  <TD><a href="{% url 'asuzr-main' %}{{attend.date.day}}/{{attend.date.month}}/{{attend.date.year}}">{{ attend.orders_count}}</a></TD>
 	  <TD>{{ attend.orders_price}}</TD>
 	  <TD>{{ attend.designers}}</TD>
         </TR>

+ 2 - 1
templates/asuzr/base.html

@@ -3,7 +3,7 @@
 
 <html>
 <head>
-  <title>Автоматическая система учета заказов студии мебели Рекорд</title> 
+  <title>Автоматизированная система учета заказов студии мебели Рекорд</title> 
   <script src="{{ STATIC_URL }}admin/js/jquery.min.js" type="text/javascript"></script>
   {% inplace_static %}
   <link rel="stylesheet" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" />
@@ -44,6 +44,7 @@
  <li><a href={% url 'asuzr.views.orders' 0 %}>Таблица выхода заказов</a></li>
  <li><a href={% url 'asuzr.views.orders' 1 %}>Архивная таблица</a></li>
  <li><a href={% url 'asuzr.views.desreport' %}>Отчет по дизайнерам</a></li>
+ <li><a href={% url 'asuzr.views.prod_plan_view' %}>Производственный план</a></li>
  {% if request.user.is_staff %}<li><a href={% url 'admin:index' %}>Администрирование</a></li>{% endif %}
 </ul>
 <div id="user">