From 9ef0d2557b21184f90ef35fcd3669295fca05977 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Wed, 29 Jul 2015 23:52:53 +0500 Subject: [PATCH 1/5] =?UTF-8?q?=D0=A2=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=B5=D1=82=D0=B8=D1=82=D0=B5=D0=BB=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Изменил формат даты --- record/settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/record/settings.py b/record/settings.py index fe485f5..e1ba6e5 100644 --- a/record/settings.py +++ b/record/settings.py @@ -78,10 +78,11 @@ TIME_ZONE = 'Asia/Yekaterinburg' USE_I18N = True -USE_L10N = True +USE_L10N = False USE_TZ = True +DATE_FORMAT = 'd/m/Y' # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.6/howto/static-files/ From fc876e1c5c08916d6228e078d5878167ff1115ba Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Fri, 31 Jul 2015 23:22:57 +0500 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил декоратор логирования для вьюх --- asuzr/common.py | 18 ++++++++++++++++++ asuzr/tables.py | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/asuzr/common.py b/asuzr/common.py index d1d14ba..bf6f8be 100644 --- a/asuzr/common.py +++ b/asuzr/common.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- from datetime import date +from django.contrib.admin.models import LogEntry +from django.contrib.auth.models import User class custom_date(date): @@ -21,3 +23,19 @@ class custom_date(date): @property def is_weekend(self): return self.weekday() >= 5 + + +def log_view_call(fn): + ''' + Wrapper for views log + ''' + def wrapper(*args, **kwargs): + log_entry = {} + request = args[0] + log_entry['user'] = User.objects.get(username = request.META['USER']) + log_entry['object_repr'] = fn.__name__ + log_entry['action_flag'] = 5 + entry = LogEntry(**log_entry) + entry.save() + return fn(*args, **kwargs) + return wrapper diff --git a/asuzr/tables.py b/asuzr/tables.py index ae30324..ec24486 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -226,7 +226,8 @@ class LogTable(tables.Table): return {1: 'Добавление', 2: 'Изменение', 3: 'Удаление', - 4: 'Авторизация'}[value] + 4: 'Авторизация', + 5: 'Открытие страницы',}[value] class Meta: model = LogEntry From a78ea68da8976b3de147497eab469dd55c8a3826 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Fri, 31 Jul 2015 23:25:48 +0500 Subject: [PATCH 3/5] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Задекорировал вьюхи --- asuzr/views.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/asuzr/views.py b/asuzr/views.py index 71d7fdc..7d3cb17 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -9,7 +9,7 @@ from datetime import datetime, date, timedelta from django.utils import dateformat import calendar from django.db.models import Count, Sum -from asuzr.common import custom_date +from asuzr.common import * from django.contrib.auth.decorators import login_required from asuzr.tables import * from asuzr.forms import * @@ -108,6 +108,7 @@ def create_attendance_if_need(date): if created: attendance.save() +@log_view_call @login_required def visit_view(request): curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y') @@ -197,6 +198,7 @@ def main(request, day, month, year): }) return HttpResponse(t.render(c)) +@log_view_call @login_required def sketches(request, order_id): curr_order = Order.objects.get(pk = order_id) @@ -208,11 +210,11 @@ def sketches(request, order_id): instance.save() return redirect(sketches, order_id = order_id) - sketch_list = Sketch.objects.filter(order = curr_order) - #RequestConfig(request).configure(table) + table = SketchesTable(Sketch.objects.filter(order = curr_order)) + RequestConfig(request).configure(table) return render(request, 'asuzr/sketches.html', { 'order_id': order_id, - 'sketch_list': sketch_list, + 'table': table, 'title': u'Эскизы заказа %s' % curr_order}) def delete_sketch(request): @@ -222,6 +224,7 @@ def delete_sketch(request): sketch.delete() return redirect(sketches, order_id = order_id) +@log_view_call @login_required def orders(request, archive): is_archive = (archive == '1') @@ -231,6 +234,7 @@ def orders(request, archive): RequestConfig(request).configure(table) return render(request, 'asuzr/table.html', {'table': table, 'title': title}) +@log_view_call @login_required def desreport(request): start_date = request.GET.get('sdate', date.today().strftime('%d.%m.%Y')) @@ -244,20 +248,21 @@ def desreport(request): RequestConfig(request).configure(table) return render(request, 'asuzr/table.html', {'table': table, 'title': title, 'form': form}) +@log_view_call @login_required def production_table(request, order_id): - order_costs = OrderCosts.objects.filter(order=order_id) - table = ProductionTable(order_costs) - curr_order = Order.objects.get(pk = order_id) - title = u'Производственная таблица' - table.verbose_name = u'Заказ: %s' % (', '.join((curr_order.product.name, curr_order.address))) - table.verbose_name2 = u'Стоимость: %s' % str(curr_order.price) - costs_sum = order_costs.aggregate(Sum('value')) - table.set_summary(costs_sum['value__sum'] or 0) - table.set_balance(curr_order.price - (costs_sum['value__sum'] or 0)) - RequestConfig(request).configure(table) - return render(request, 'asuzr/table.html', {'table': table, 'title': title}) + order_list = Order.objects.filter(is_done=False).order_by('-id') + sel_order = Order.objects.filter(id=order_id) + cost_items = sel_order.values('cost_items') + t=loader.get_template('asuzr/order_costs.html') + c=RequestContext(request,{ + 'order_list' : order_list, + 'sel_order' : sel_order, + 'cost_items' : cost_items, + }) + return HttpResponse(t.render(c)) +@log_view_call @login_required def prod_plan_view(request): curr_date = datetime.strptime(request.GET.get('date', date.today().strftime('%d.%m.%Y')), '%d.%m.%Y') From 139a9eb2bc03e89d59db964999f7c41288c05307 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Fri, 31 Jul 2015 23:41:36 +0500 Subject: [PATCH 4/5] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D1=8D=D1=81?= =?UTF-8?q?=D0=BA=D0=B8=D0=B7=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asuzr/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/asuzr/views.py b/asuzr/views.py index e83a82a..51750a2 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -214,11 +214,10 @@ def sketches(request, order_id): instance.save() return redirect(sketches, order_id = order_id) - table = SketchesTable(Sketch.objects.filter(order = curr_order)) - RequestConfig(request).configure(table) + sketch_list = Sketch.objects.filter(order = curr_order) return render(request, 'asuzr/sketches.html', { 'order_id': order_id, - 'table': table, + 'sketch_list': sketch_list, 'title': u'Эскизы заказа %s' % curr_order}) def add_order(request): From f6ee180a95f88721fabae106a1c28f24fdc9a256 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Fri, 31 Jul 2015 23:52:27 +0500 Subject: [PATCH 5/5] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Какие-то баги при сохранении сессии --- asuzr/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/asuzr/models.py b/asuzr/models.py index 4f8239c..e9c6a19 100644 --- a/asuzr/models.py +++ b/asuzr/models.py @@ -6,6 +6,7 @@ from django.contrib.auth.models import User from datetime import date, timedelta from django.utils import dateformat from django.contrib.auth.signals import user_logged_in, user_logged_out, user_login_failed +from django.contrib.sessions.models import Session from django.db.models.signals import post_save, post_delete from django.contrib.admin.models import LogEntry, ADDITION, CHANGE, DELETION from django.contrib.contenttypes.models import ContentType @@ -208,6 +209,7 @@ def construct_log_entry(**kwargs): def after_save(*args, **kwargs): instance = kwargs['instance'] if isinstance(instance, LogEntry): return + if isinstance(instance, Session): return log_entry = construct_log_entry(**kwargs) created = kwargs['created'] log_entry['action_flag'] = ADDITION if created else CHANGE @@ -216,6 +218,8 @@ def after_save(*args, **kwargs): @receiver(post_delete) def after_delete(*args, **kwargs): + instance = kwargs['instance'] + if isinstance(instance, Session): return log_entry = construct_log_entry(**kwargs) log_entry['action_flag'] = DELETION entry = LogEntry(**log_entry)