Bläddra i källkod

Устранены конфликты

Anastasia 10 år sedan
förälder
incheckning
8e0b5e0ca8
8 ändrade filer med 117 tillägg och 27 borttagningar
  1. 1 0
      .gitignore
  2. 1 1
      asuzr/models.py
  3. 73 0
      asuzr/tables.py
  4. 12 22
      asuzr/views.py
  5. 5 0
      record/urls.py
  6. 2 2
      templates/asuzr/attendance.html
  7. 15 2
      templates/asuzr/base.html
  8. 8 0
      templates/asuzr/table.html

+ 1 - 0
.gitignore

@@ -1,4 +1,5 @@
 *swp
 *.pyc
 db*
+record/settings.py
 sketches/*

+ 1 - 1
asuzr/models.py

@@ -71,7 +71,7 @@ class Order(models.Model):
   contact = models.CharField(max_length=150, null=True, blank = True)	#контактное лицо
   phone_num = models.CharField(max_length=150,null=True, blank = True)	#контактный телефон
   cancelled = models.BooleanField(default=False)			#отменен
-  cost_items = models.ManyToManyField(CostItem, through='OrderCosts')   #статьи затрат
+  cost_items = models.ManyToManyField(CostItem, through='OrderCosts', related_name='+', null=True, blank=True)   #статьи затрат
 
   def __unicode__(self):
     return ', '.join((self.date.strftime('%d %b %Y'), self.product.name, self.address))

+ 73 - 0
asuzr/tables.py

@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+from django.utils.safestring import mark_safe
+import django_tables2 as tables
+from models import *
+
+def editable(field_name):
+  return '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
+
+
+class EditableColumn(tables.TemplateColumn):
+  def __init__(self, field_name, *args, **kwargs):
+    super(tables.TemplateColumn, self).__init__(*args, **kwargs)
+    template = '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
+    self.template_code = template
+
+class TestTable(tables.Table):
+    name = EditableColumn('name', "Наименование")
+    prod_period = EditableColumn('prod_period', "Время производства")
+
+    class Meta:
+        model = Product
+        attrs = {"class": "paleblue"}
+
+class OrdersTable(tables.Table):
+  date = tables.DateColumn('d/m/Y', verbose_name = 'Дата')
+  deadline = tables.DateColumn('d/m/Y/', verbose_name = 'Срок сдачи')
+  product = tables.Column(verbose_name = 'Наименование') 
+  delivery = EditableColumn('delivery', verbose_name = 'Доставка')
+  lifting = EditableColumn('lifting', verbose_name = 'Подъем')
+  address = tables.Column(verbose_name = 'Адрес')
+  price = tables.Column(verbose_name = 'Стоимость')
+  paid = EditableColumn('paid', verbose_name = 'Оплачено')
+  ostatok = tables.Column(verbose_name = 'Остаток')
+  approved = EditableColumn('approved', verbose_name = 'Согласовано')
+  sketch = tables.LinkColumn('sketches', verbose_name = 'Эскиз')
+  executor = EditableColumn('executor', verbose_name = 'Исполнитель')
+  is_done = EditableColumn('is_done', verbose_name = 'Сдан')
+  id = tables.Column(visible = False)
+  designer = tables.Column(visible = False)
+  calls = tables.Column(visible = False)
+  contact = tables.Column(visible = False)
+  phone_num = tables.Column(visible = False)
+  cancelled = tables.Column(visible = False)
+
+  def render_price(self, value):
+    return '%0.1f' % value
+
+  def render_ostatok(self, value):
+    return '%0.1f' % value
+
+  class Meta:
+    model = Order
+    attrs = {'class': 'paleblue'}
+    sequence = ('date', 
+                'deadline', 
+                'product', 
+                'delivery', 
+                'lifting', 
+                'address',
+                'price',
+                'paid',
+                'ostatok',
+                'approved',
+                'sketch',
+                'executor',
+                'is_done',)
+
+class ArchiveOrdersTable(OrdersTable):
+  calls = EditableColumn('calls', verbose_name = 'Обзвон')
+
+  class Meta:
+    attrs = {'class': 'paleblue'}

+ 12 - 22
asuzr/views.py

@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
 from django.shortcuts import render
 from django.http import HttpResponse
 from django.template import RequestContext, Context, loader
@@ -11,6 +13,8 @@ import calendar
 from django.db.models import Count, Sum
 from asuzr.common import custom_date
 from django.contrib.auth.decorators import login_required
+from tables import *
+from django_tables2 import RequestConfig
 
 @login_required 
 def prod_list(request):
@@ -102,23 +106,13 @@ def main(request, day, month, year):
   return HttpResponse(t.render(c))
 
 @login_required 
-def orders (request, archive):
-  if archive=='0':
-      is_done_value=False
-  else:
-      is_done_value=True
-  order_id=request.GET.get('order_id',0)
-  order_list = Order.objects.filter(is_done=is_done_value).order_by('-id')
-  sel_order = Order.objects.filter(id=order_id)
-  cost_items = sel_order.values('cost_items')
-  t=loader.get_template('asuzr/orders.html')
-  c=RequestContext(request, {
-      'order_list': order_list,
-      'archive': is_done_value,
-      'sel_order' : sel_order,
-      'cost_items' : cost_items,
-      })
-  return HttpResponse(t.render(c))
+def orders(request, archive):
+  is_archive = (archive == '1')
+  Table = ArchiveOrdersTable if is_archive else OrdersTable
+  table = Table(Order.objects.filter(is_done = is_archive))
+  title = 'Архивная таблица заказов' if is_archive else 'Таблица выхода заказов'
+  RequestConfig(request).configure(table)
+  return render(request, 'asuzr/table.html', {'table': table, 'title': title})
 
 @login_required 
 def desreport(request):
@@ -146,8 +140,4 @@ def production_table(request, order_id):
     'sel_order' : sel_order,
     'cost_items' : cost_items,
     })
-  return HttpResponse(t.render(c))
-
-  
-
-
+  return HttpResponse(t.render(c))

+ 5 - 0
record/urls.py

@@ -4,6 +4,10 @@ from django.contrib.auth.views import login, logout
 from django.contrib import admin
 admin.autodiscover()
 
+js_info_dict = {
+    'packages': ('django.conf',),
+}
+
 urlpatterns = patterns('',
     # Examples:
     # url(r'^$', 'record.views.home', name='home'),
@@ -18,4 +22,5 @@ urlpatterns = patterns('',
     url(r'^inplaceeditform/', include('inplaceeditform.urls')),
     url(r'^accounts/login/$',  login),
     url(r'^accounts/logout/$', logout),
+    url(r'^jsi18n$', 'django.views.i18n.javascript_catalog', js_info_dict),
 )

+ 2 - 2
templates/asuzr/attendance.html

@@ -15,8 +15,8 @@
         <TR bgcolor={{attend.date.weekday_color}}>
 	  <TD>{{ attend.date.date_dd_mm_yy}}</TD>
 	  <TD>{{ attend.date.weekday_name}}</TD>
-	  <TD>{{attend.attend.calls}}</TD>
-	  <TD>{{attend.attend.visits}}</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>{{ attend.orders_price}}</TD>
 	  <TD>{{ attend.designers}}</TD>

+ 15 - 2
templates/asuzr/base.html

@@ -4,17 +4,30 @@
   <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" />
+  <style>
+    #menu {
+      margin: 0; /* Обнуляем значение отступов */
+      padding: 4px; /* Значение полей */
+    }
+    #menu li {
+      display: inline; /* Отображать как строчный элемент */
+      margin-right: 5px; /* Отступ слева */
+      border: 1px solid #000; /* Рамка вокруг текста */
+      padding: 3px; /* Поля вокруг текста */
+    }
+  </style>
 </head>
 <body> 
 {% block menu %} 
-    <ul id="menu">
+    <ul id="menu" class="hr">
      <li><a href={% url 'asuzr-main' 1 5 2015 %}>Таблица посещаемости</a></li>
      <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>
    </ul>
 {% endblock %}
-<H1>{% block title %}Заголовок страницы{% endblock %}</H1> 
+<H1>{% block title %}{{ title }}{% endblock %}</H1> 
 
 {% block page %}
 Тело страницы

+ 8 - 0
templates/asuzr/table.html

@@ -0,0 +1,8 @@
+{% extends "asuzr/base.html" %}
+{% load inplace_edit %}
+{% load render_table from django_tables2 %}
+
+{% block page %}
+  {% render_table table %}
+{% endblock %}
+