From ca42f55ae05c099b21e3314492430007eaa5475e Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Mon, 1 Jun 2015 15:20:11 +0500 Subject: [PATCH 1/9] Settings was remove --- .gitignore | 1 + record/settings.py | 85 ---------------------------------------------- 2 files changed, 1 insertion(+), 85 deletions(-) delete mode 100644 record/settings.py diff --git a/.gitignore b/.gitignore index 1b470ef..bda459f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *swp *.pyc db* +record/settings.py sketches/* diff --git a/record/settings.py b/record/settings.py deleted file mode 100644 index e7cc877..0000000 --- a/record/settings.py +++ /dev/null @@ -1,85 +0,0 @@ -""" -Django settings for record project. - -For more information on this file, see -https://docs.djangoproject.com/en/1.6/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/1.6/ref/settings/ -""" - -# Build paths inside the project like this: os.path.join(BASE_DIR, ...) -import os -BASE_DIR = os.path.dirname(os.path.dirname(__file__)) - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = ')-s&c_)jnmzoslf=9rnav9qqadd#l$46jt+m51ppu!lril3g89' - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -TEMPLATE_DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = ( - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'asuzr' -) - -MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', -) - -ROOT_URLCONF = 'record.urls' - -WSGI_APPLICATION = 'record.wsgi.application' - - -# Database -# https://docs.djangoproject.com/en/1.6/ref/settings/#databases - -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), - } -} - -# Internationalization -# https://docs.djangoproject.com/en/1.6/topics/i18n/ - -LANGUAGE_CODE = 'en-us' - -TIME_ZONE = 'Asia/Yekaterinburg' - -USE_I18N = True - -USE_L10N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/1.6/howto/static-files/ - -STATIC_URL = '/static/' - -TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/') From c100612285c88d2700d2db65753205fe67d36dd1 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Mon, 1 Jun 2015 17:06:08 +0500 Subject: [PATCH 2/9] =?UTF-8?q?=D0=A0=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B2=D1=8F?= =?UTF-8?q?=D0=B7=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D1=8D=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=BE=D0=B2.=20=D0=98=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B2=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/asuzr/attendance.html | 4 ++-- templates/asuzr/orders.html | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/asuzr/attendance.html b/templates/asuzr/attendance.html index 8528cde..842ea68 100644 --- a/templates/asuzr/attendance.html +++ b/templates/asuzr/attendance.html @@ -15,8 +15,8 @@ {{ attend.date.date_dd_mm_yy}} {{ attend.date.weekday_name}} - {% inplace_edit "attend.attend.calls" %} - {% inplace_edit "attend.attend.visits" %} + {% if attend.attend %}{% inplace_edit "attend.attend.calls" %}{% endif %} + {% if attend.attend %}{% inplace_edit "attend.attend.visits" %}{% endif %} {{ attend.orders_count}} {{ attend.orders_price}} {{ attend.designers}} diff --git a/templates/asuzr/orders.html b/templates/asuzr/orders.html index fd9e134..4d7fc42 100644 --- a/templates/asuzr/orders.html +++ b/templates/asuzr/orders.html @@ -28,7 +28,7 @@ {{ order.date_dmy }} {{ order.deadline_dmy }} - {% inplace_edit "order.product.name" %} + {% inplace_edit "order.product" %} {%if order.delivery%} Да {% else %} Нет {% endif %} {%if order.lifting%} Да {% else %} Нет {% endif %} {% inplace_edit "order.address" %} From 2bb8d69d05c13b39ee056a1cefd3099e856d36d7 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Thu, 4 Jun 2015 16:14:45 +0500 Subject: [PATCH 3/9] Stylesheet for tables2 --- templates/asuzr/base.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/asuzr/base.html b/templates/asuzr/base.html index bc0e969..9c62365 100644 --- a/templates/asuzr/base.html +++ b/templates/asuzr/base.html @@ -4,6 +4,7 @@ Автоматическая система учета заказов студии мебели Рекорд {% inplace_static %} + {% block menu %} From a84abc0c7793b683a64356f51afd1386c622b1f2 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Thu, 4 Jun 2015 16:15:44 +0500 Subject: [PATCH 4/9] Table for testing --- asuzr/tables.py | 16 ++++++++++++++++ asuzr/views.py | 7 ++++++- record/urls.py | 1 + templates/asuzr/tabletest.html | 8 ++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 asuzr/tables.py create mode 100644 templates/asuzr/tabletest.html diff --git a/asuzr/tables.py b/asuzr/tables.py new file mode 100644 index 0000000..ce153d5 --- /dev/null +++ b/asuzr/tables.py @@ -0,0 +1,16 @@ +# -*- 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 TestTable(tables.Table): + name = tables.TemplateColumn(editable('name'),verbose_name = "Наименование") + prod_period = tables.TemplateColumn(editable('prod_period'),verbose_name = "Время производства") + + class Meta: + model = Product + attrs = {"class": "paleblue"} diff --git a/asuzr/views.py b/asuzr/views.py index d2b90fb..5e3415c 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -10,6 +10,8 @@ from datetime import datetime, date, timedelta import calendar from django.db.models import Count, Sum from asuzr.common import custom_date +from tables import * +from django_tables2 import RequestConfig def prod_list(request): product_list = Product.objects.all() @@ -127,7 +129,10 @@ def desreport(request): }) return HttpResponse(t.render(c)) - +def table_test(request): + table = TestTable(Product.objects.all()) + RequestConfig(request).configure(table) + return render(request, 'asuzr/tabletest.html', {'table': table, 'action': Product.objects.all()[0]}) diff --git a/record/urls.py b/record/urls.py index dfca360..a5e27b8 100644 --- a/record/urls.py +++ b/record/urls.py @@ -13,5 +13,6 @@ urlpatterns = patterns('', url(r'^orders/(?P\d+)/$', 'asuzr.views.orders'), url(r'^desreport/$', 'asuzr.views.desreport'), url(r'^admin/', include(admin.site.urls)), + url(r'^table/', 'asuzr.views.table_test'), url(r'^inplaceeditform/', include('inplaceeditform.urls')), ) diff --git a/templates/asuzr/tabletest.html b/templates/asuzr/tabletest.html new file mode 100644 index 0000000..03283a7 --- /dev/null +++ b/templates/asuzr/tabletest.html @@ -0,0 +1,8 @@ +{% extends "asuzr/base.html" %} +{% load inplace_edit %} +{% load render_table from django_tables2 %} + +{% block page %} + {% render_table table %} +{% endblock %} + From fac2533b63b4d592049ab6d929eec7fc98ba4294 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Thu, 4 Jun 2015 16:17:11 +0500 Subject: [PATCH 5/9] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D1=82=D0=B8=D0=BB=D0=B5=D0=B9=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20tables2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Для корректной работы изменений необходимо установить пакет django-tables2: sudo pip install django-tables2 --- templates/asuzr/base.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/asuzr/base.html b/templates/asuzr/base.html index bc0e969..9c62365 100644 --- a/templates/asuzr/base.html +++ b/templates/asuzr/base.html @@ -4,6 +4,7 @@ Автоматическая система учета заказов студии мебели Рекорд {% inplace_static %} + {% block menu %} From 7712e1068208e9de6b0fc54b7e03fbdc7657e21f Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Sat, 6 Jun 2015 15:50:19 +0500 Subject: [PATCH 6/9] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=20=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=86=D1=8B,=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=D0=BB=20=D0=BD=D0=B0=20=D0=BD=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=83=20=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=C2=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asuzr/models.py | 2 +- asuzr/tables.py | 55 ++++++++++++++++++- asuzr/views.py | 22 +++++--- record/urls.py | 5 ++ templates/asuzr/base.html | 2 +- .../asuzr/{tabletest.html => table.html} | 0 6 files changed, 73 insertions(+), 13 deletions(-) rename templates/asuzr/{tabletest.html => table.html} (100%) diff --git a/asuzr/models.py b/asuzr/models.py index 1002069..037c6f5 100644 --- a/asuzr/models.py +++ b/asuzr/models.py @@ -68,7 +68,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)) diff --git a/asuzr/tables.py b/asuzr/tables.py index ce153d5..e100799 100644 --- a/asuzr/tables.py +++ b/asuzr/tables.py @@ -7,10 +7,61 @@ 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 = tables.TemplateColumn(editable('name'),verbose_name = "Наименование") - prod_period = tables.TemplateColumn(editable('prod_period'),verbose_name = "Время производства") + 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',) diff --git a/asuzr/views.py b/asuzr/views.py index 5e3415c..3700aa5 100644 --- a/asuzr/views.py +++ b/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 @@ -101,16 +103,21 @@ def main(request, day, month, year): }) return HttpResponse(t.render(c)) -def orders (request, archive): +def order_list(request): + table = OrdersTable(Order.objects.filter(is_done=False)) + RequestConfig(request).configure(table) + return render(request, 'asuzr/table.html', {'table': table, 'title': 'Таблица выхода заказов'}) + +def orders(request, archive): if archive=='0': - is_done_value=False + return order_list(request) else: is_done_value=True - order_list = Order.objects.filter(is_done=is_done_value).order_by('-id') + o_list = Order.objects.filter(is_done=is_done_value).order_by('-id') t=loader.get_template('asuzr/orders.html') c=RequestContext(request, { - 'order_list': order_list, + 'order_list': o_list, 'archive': is_done_value, }) return HttpResponse(t.render(c)) @@ -130,9 +137,6 @@ def desreport(request): return HttpResponse(t.render(c)) def table_test(request): - table = TestTable(Product.objects.all()) + table = OrdersTable(Order.objects.filter(is_done=False)) RequestConfig(request).configure(table) - return render(request, 'asuzr/tabletest.html', {'table': table, 'action': Product.objects.all()[0]}) - - - + return render(request, 'asuzr/tabletest.html', {'table': table}) diff --git a/record/urls.py b/record/urls.py index a5e27b8..9af9b3c 100644 --- a/record/urls.py +++ b/record/urls.py @@ -3,6 +3,10 @@ from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() +js_info_dict = { + 'packages': ('django.conf',), +} + urlpatterns = patterns('', # Examples: # url(r'^$', 'record.views.home', name='home'), @@ -15,4 +19,5 @@ urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^table/', 'asuzr.views.table_test'), url(r'^inplaceeditform/', include('inplaceeditform.urls')), + url(r'^jsi18n$', 'django.views.i18n.javascript_catalog', js_info_dict), ) diff --git a/templates/asuzr/base.html b/templates/asuzr/base.html index 9c62365..b30152b 100644 --- a/templates/asuzr/base.html +++ b/templates/asuzr/base.html @@ -15,7 +15,7 @@
  • Отчет по дизайнерам
  • {% endblock %} -

    {% block title %}Заголовок страницы{% endblock %}

    +

    {% block title %}{{ title }}{% endblock %}

    {% block page %} Тело страницы diff --git a/templates/asuzr/tabletest.html b/templates/asuzr/table.html similarity index 100% rename from templates/asuzr/tabletest.html rename to templates/asuzr/table.html From f3245e62a6f0d9a22bb40762292ce14ee441f38a Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Sat, 6 Jun 2015 15:51:55 +0500 Subject: [PATCH 7/9] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D1=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asuzr/views.py | 4 ---- record/urls.py | 1 - 2 files changed, 5 deletions(-) diff --git a/asuzr/views.py b/asuzr/views.py index 3700aa5..ae96457 100644 --- a/asuzr/views.py +++ b/asuzr/views.py @@ -136,7 +136,3 @@ def desreport(request): }) return HttpResponse(t.render(c)) -def table_test(request): - table = OrdersTable(Order.objects.filter(is_done=False)) - RequestConfig(request).configure(table) - return render(request, 'asuzr/tabletest.html', {'table': table}) diff --git a/record/urls.py b/record/urls.py index 9af9b3c..eea5b5b 100644 --- a/record/urls.py +++ b/record/urls.py @@ -17,7 +17,6 @@ urlpatterns = patterns('', url(r'^orders/(?P\d+)/$', 'asuzr.views.orders'), url(r'^desreport/$', 'asuzr.views.desreport'), url(r'^admin/', include(admin.site.urls)), - url(r'^table/', 'asuzr.views.table_test'), url(r'^inplaceeditform/', include('inplaceeditform.urls')), url(r'^jsi18n$', 'django.views.i18n.javascript_catalog', js_info_dict), ) From de3d4fde8208b3ff1dd55c2092fc48f7e58d4ad1 Mon Sep 17 00:00:00 2001 From: "Denis V. Dedkov" Date: Sun, 7 Jun 2015 15:07:06 +0500 Subject: [PATCH 8/9] =?UTF-8?q?=D0=9C=D0=B5=D0=BD=D1=8E=20=D0=BF=D0=BE=20?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D0=B8=D0=B7=D0=BE=D0=BD=D1=82=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавил стиль для id = "menu" --- templates/asuzr/base.html | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/templates/asuzr/base.html b/templates/asuzr/base.html index b30152b..be82a8d 100644 --- a/templates/asuzr/base.html +++ b/templates/asuzr/base.html @@ -5,10 +5,22 @@ {% inplace_static %} + {% block menu %} -