Explorar o código

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

Conflicts:
	asuzr/common.py
	asuzr/views.py
Denis V. Dedkov %!s(int64=10) %!d(string=hai) anos
pai
achega
604b716fc4

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

+ 8 - 0
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']
+  

+ 7 - 0
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):

BIN=BIN
asuzr/static/del.png


BIN=BIN
asuzr/static/rubbish.png


+ 18 - 8
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 %}}
+                  <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
     

+ 13 - 3
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):

+ 1 - 0
record/settings.py

@@ -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'
+

+ 4 - 2
record/urls.py

@@ -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})) 
+

+ 10 - 3
templates/asuzr/base.html

@@ -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 %}

+ 27 - 2
templates/asuzr/sketches.html

@@ -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 %}

+ 9 - 2
templates/asuzr/table2.html

@@ -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>

+ 41 - 0
templates/asuzr/table_with_form.html

@@ -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 %}