Quellcode durchsuchen

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

Conflicts:
	.gitignore
	asuzr/tables.py
	record/settings.py
Anastasia vor 10 Jahren
Ursprung
Commit
ec6fbc0607

+ 1 - 0
.gitignore

@@ -3,3 +3,4 @@
 db*
 .directory
 sketches/*
+media/*

+ 5 - 1
asuzr/models.py

@@ -88,6 +88,10 @@ class Order(models.Model):
   def approved_date(self):
     return self.approved.strftime("%d/%m/%Y %H:%M")
   
+  @property
+  def sketch(self):
+    return len(Sketch.objects.filter(order = self))
+
   @property
   def ostatok(self):
     return self.price-self.paid
@@ -101,7 +105,7 @@ class Order(models.Model):
   
 #Эскизы
 class Sketch(models.Model):
-  sketch_file = models.FileField(upload_to = 'sketches')	#путь к файу
+  sketch_file = models.FileField(upload_to = 'sketches/')	#путь к файу
   order = models.ForeignKey(Order)	#id заказа
 
   def __unicode__(self):

+ 13 - 2
asuzr/tables.py

@@ -11,9 +11,16 @@ def editable(field_name):
 class EditableColumn(tables.TemplateColumn):
   def __init__(self, field_name, *args, **kwargs):
     super(tables.TemplateColumn, self).__init__(*args, **kwargs)
+    print kwargs
     template = '{{% load inplace_edit %}}\n\n{{% inplace_edit "record.{field}" auto_height = 1 %}}'.format(field = field_name)
     self.template_code = template
 
+class ThumbnailColumn(tables.TemplateColumn):
+  def __init__(self, field_name, *args, **kwargs):
+    super(tables.TemplateColumn, self).__init__(*args, **kwargs)
+    template = '{{% load thumbnail %}}\n\n{{% thumbnail record.{field} "100x100" as im %}}<img src="{{{{ im.url }}}}">{{% endthumbnail %}}'.format(field = field_name)
+    self.template_code = template
+
 class TestTable(tables.Table):
     name = EditableColumn('name', "Наименование")
     prod_period = EditableColumn('prod_period', "Время производства")
@@ -33,7 +40,7 @@ class OrdersTable(tables.Table):
   paid = EditableColumn('paid', verbose_name = 'Оплачено')
   ostatok = tables.Column(verbose_name = 'Остаток')
   approved = EditableColumn('approved', verbose_name = 'Согласовано')
-  sketch = tables.LinkColumn('sketches', verbose_name = 'Эскиз')
+  sketch = tables.LinkColumn('asuzr.views.sketches', verbose_name = 'Эскизы', args=[tables.utils.A('pk')])
   executor = EditableColumn('executor', verbose_name = 'Исполнитель')
   is_done = EditableColumn('is_done', verbose_name = 'Сдан')
   id = tables.Column(visible = False)
@@ -82,6 +89,10 @@ class DesignerTable(tables.Table):
   
   def render_sum_price(self, value):
     return '%0.1f' % value
-  
+
+class SketchesTable(tables.Table):
+  sketch_file = tables.FileColumn(verbose_name = 'Имя файла')
+  sketch_image = ThumbnailColumn('sketch_file', verbose_name = 'Эскиз', orderable = False)
+
   class Meta:
     attrs = {'class': 'paleblue'}

+ 0 - 0
asuzr/templatetags/__init__.py


+ 9 - 0
asuzr/templatetags/filters.py

@@ -0,0 +1,9 @@
+from django import template
+from django.contrib.auth.models import Group
+
+register = template.Library()
+
+@register.filter(name='has_group')
+def has_group(user, group_name):
+    group = Group.objects.get(name=group_name)
+    return True if group in user.groups.all() else False

+ 8 - 1
asuzr/views.py

@@ -105,6 +105,13 @@ def main(request, day, month, year):
     })
   return HttpResponse(t.render(c))
 
+@login_required
+def sketches(request, order_id):
+  curr_order = Order.objects.get(pk = order_id)
+  table = SketchesTable(Sketch.objects.filter(order = curr_order))
+  RequestConfig(request).configure(table)
+  return render(request, 'asuzr/table.html', {'table': table, 'title': 'Эскизы заказа %s' % curr_order})
+
 @login_required 
 def orders(request, archive):
   is_archive = (archive == '1')
@@ -137,4 +144,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))

+ 7 - 2
record/settings.py

@@ -39,7 +39,8 @@ INSTALLED_APPS = (
     'django.contrib.staticfiles',
     'inplaceeditform',
     'django_tables2',
-    'asuzr'
+    'sorl.thumbnail',
+    'asuzr',
 )
 
 MIDDLEWARE_CLASSES = (
@@ -85,6 +86,10 @@ USE_TZ = True
 
 STATIC_URL = '/static/'
 
-TEMPLATE_DIRS = ('/home/anastasia/projects/django/record/templates/')
+TEMPLATE_DIRS = ('templates/')
 
 TEMPLATE_CONTEXT_PROCESSORS += ('django.core.context_processors.request',)
+
+MEDIA_ROOT = 'media/'
+
+MEDIA_URL = 'http://127.0.0.1:8000/media/'

+ 10 - 3
record/urls.py

@@ -1,5 +1,8 @@
 from django.conf.urls import patterns, include, url
 from django.contrib.auth.views import login, logout
+from django.conf.urls.static import static
+from django.contrib.staticfiles.urls import staticfiles_urlpatterns
+from django.conf import settings
 
 from django.contrib import admin
 admin.autodiscover()
@@ -9,18 +12,22 @@ js_info_dict = {
 }
 
 urlpatterns = patterns('',
-    # Examples:
-    # url(r'^$', 'record.views.home', name='home'),
-    # url(r'^blog/', include('blog.urls')),
     url(r'^product/$', 'asuzr.views.prod_list'),
     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'^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'^admin/', include(admin.site.urls)),
     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),
 )
+
+if settings.DEBUG:
+    # static files (images, css, javascript, etc.)
+    urlpatterns += patterns('',
+        (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
+        'document_root': settings.MEDIA_ROOT}))

BIN
sketches/front_view.PDF


BIN
sketches/top_view.PDF


+ 23 - 8
templates/asuzr/base.html

@@ -1,4 +1,6 @@
 {% load inplace_edit %}
+{% load filters %}
+
 <html>
 <head>
   <title>Автоматическая система учета заказов студии мебели Рекорд</title> 
@@ -16,16 +18,29 @@
       border: 1px solid #000; /* Рамка вокруг текста */
       padding: 3px; /* Поля вокруг текста */
     }
-  </style>
+    #user {
+      float: right;
+      text-align: right;
+    }
+    #menu, #user {
+      display: inline;
+    }
+ </style>
 </head>
 <body> 
-{% block 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>
+{% block 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>
+ {% if request.user.is_staff %}<li><a href={% url 'admin:index' %}>Администрирование</a></li>{% endif %}
+</ul>
+<div id="user">
+{% if request.user.is_authenticated %} Добро пожаловать, {{ request.user.first_name }}
+{% else %}<a href="{% url 'django.contrib.auth.views.login' %}">Вход</a>{% endif %}
+<br><a href="{% url 'django.contrib.auth.views.logout' %}">Выход</a>
+</div>
 {% endblock %}
 <H1>{% block title %}{{ title }}{% endblock %}</H1>