Sfoglia il codice sorgente

Исправлены конфликты

Anastasia 10 anni fa
parent
commit
239d19f23b
5 ha cambiato i file con 62 aggiunte e 10 eliminazioni
  1. 22 0
      asuzr/models.py
  2. 18 7
      asuzr/tables.py
  3. 17 2
      asuzr/views.py
  4. 1 0
      record/urls.py
  5. 4 1
      templates/asuzr/base.html

+ 22 - 0
asuzr/models.py

@@ -4,6 +4,8 @@
 from django.db import models
 from django.contrib.auth.models import User
 from datetime import date, timedelta
+from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed
+from django.contrib.admin.models import LogEntry
 
 #Изделия
 class Product(models.Model):
@@ -158,3 +160,23 @@ class OrderCosts(models.Model):
   
   def __unicode__(self):
    return ', '.join((self.order.product.name, self.cost_item.name))
+
+
+############################################################################################
+# Signal handlers
+############################################################################################
+
+def auth_log(message, user = None):
+  if user == None:
+    user = User.objects.get(pk = 1)
+
+  entry = LogEntry(user = user, object_repr = message, action_flag = 4)
+  entry.save()
+
+on_login = lambda **kwargs: auth_log(u'Вход в систему', kwargs['user'])
+on_logout = lambda **kwargs: auth_log(u'Выход из системы', kwargs['user'])
+on_login_error = lambda **kwargs: auth_log(u'Ошибка входа пользователя %s' % kwargs['credentials']['username']) 
+
+user_logged_in.connect(on_login)
+user_logged_out.connect(on_logout)
+user_login_failed.connect(on_login_error)

+ 18 - 7
asuzr/tables.py

@@ -3,6 +3,7 @@
 from django.core.urlresolvers import reverse
 from django.utils.safestring import mark_safe
 from django.utils.html import escape
+from django.contrib.admin.models import LogEntry
 import django_tables2 as tables
 from models import *
 
@@ -48,7 +49,7 @@ class ThumbnailColumn(tables.TemplateColumn):
     template = '''
                  {{% load thumbnail %}}
 
-                 {{% thumbnail record.{field} "100x100" as im %}}
+                 {{% thumbnail record.{field} "200x200" as im %}}
                    <img src="{{{{ im.url }}}}">
                  {{% endthumbnail %}}
                '''.format(field = field_name)
@@ -162,10 +163,11 @@ class VisitTable(tables.Table):
 class DayOrdersTable(OrdersTable):
   designer = tables.Column(verbose_name = 'Дизайнер')
 
-  summary = ['Итого:', 0, '', '', '',]
+  summary = ['Итого:', 0, 0, '', '', '', '', '']
 
-  def set_summary(self, price):
+  def set_summary(self, price, paid):
     self.summary[1] = price
+    self.summary[2] = paid
 
   def render_designer(self, value):
     return ' '.join((value.first_name, value.last_name))
@@ -174,9 +176,6 @@ class DayOrdersTable(OrdersTable):
     empty_text = 'Заказов для этого дня нет'
     attrs = {'class': 'paleblue'}
     exclude = ('date',
-               'delivery', 
-               'lifting', 
-               'paid', 
                'ostatok', 
                'approved', 
                'sketch', 
@@ -184,7 +183,8 @@ class DayOrdersTable(OrdersTable):
                'is_done',
               )
     sequence = ('product', 
-                'price', 
+                'price',
+                'paid',
                 'address', 
                 'designer', 
                 'deadline',
@@ -220,3 +220,14 @@ class ProductionTable(tables.Table):
   class Meta:
     attrs = {'class': 'paleblue'}
     template = 'asuzr/totals_table.html'
+
+class LogTable(tables.Table):
+  def render_action_flag(self, value):
+    return {1: 'Добавление', 
+            2: 'Изменение', 
+            3: 'Удаление',
+            4: 'Авторизация'}[value]
+
+  class Meta:
+    model = LogEntry
+    attrs = {'class': 'paleblue'}

+ 17 - 2
asuzr/views.py

@@ -3,6 +3,7 @@
 from django.shortcuts import render, redirect, get_object_or_404
 from django.http import HttpResponse, HttpResponseRedirect
 from django.template import RequestContext, Context, loader
+from django.contrib.admin.models import LogEntry
 from asuzr.models import *
 from datetime import datetime, date, timedelta
 import calendar
@@ -93,17 +94,24 @@ def get_attendance_table(year, month, prefix):
 
 def get_day_orders_table(date, prefix):
   orders = Order.objects.filter(date = date)
-  orders_price = orders.aggregate(Sum('price'))
+  summaries = orders.aggregate(Sum('price'), Sum('paid'))
   table = DayOrdersTable(orders, prefix = prefix)
   table.verbose_name = 'Заказы на %s' % date.strftime('%d %B %Y г')
-  table.set_summary(orders_price['price__sum'] or 0)
+  table.set_summary(summaries['price__sum'] or 0, summaries['paid__sum'] or 0)
 
   return table 
 
+def create_attendance_if_need(date):
+  attendance, created = Attendance.objects.get_or_create(date = date,
+          defaults={'calls': 0, 'visits': 0})
+  if created:
+      attendance.save()
+
 @login_required
 def visit_view(request):
   curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y')
   form = DateForm({'date':curr_date})
+  create_attendance_if_need(curr_date)
   attendance_table, add_info = get_attendance_table(curr_date.year, curr_date.month, 'attendance-')
   RequestConfig(request, paginate={'per_page': 32}).configure(attendance_table)
 
@@ -271,3 +279,10 @@ def prod_plan_view(request):
   form = DateForm({'date':curr_date})
   RequestConfig(request).configure(table)
   return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'form': form})
+
+@login_required
+def log_view(request):
+  log = LogEntry.objects.all()
+  table = LogTable(log)
+  RequestConfig(request).configure(table)
+  return render(request, 'asuzr/table.html', {'table': table, 'title': 'Журнал операций'})

+ 1 - 0
record/urls.py

@@ -23,6 +23,7 @@ urlpatterns = patterns('',
     url(r'^sketches/delete/$', 'asuzr.views.delete_sketch'),
     url(r'^prodplan/$', 'asuzr.views.prod_plan_view'),
     url(r'^admin/', include(admin.site.urls)),
+    url(r'^log/$', 'asuzr.views.log_view'),
     url(r'^inplaceeditform/', include('inplaceeditform.urls')),
     url(r'^accounts/login/$',  login),
     url(r'^accounts/logout/$', logout),

+ 4 - 1
templates/asuzr/base.html

@@ -48,7 +48,10 @@
  <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 %}
+ {% if request.user.is_staff %}
+   <li><a href={% url 'asuzr.views.log_view' %}>Журнал операций</a></li>
+   <li><a href={% url 'admin:index' %}>Администрирование</a></li>
+ {% endif %}
 </ul>
 <div id="user">
 {% if request.user.is_authenticated %}