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

Conflicts:
	asuzr/forms.py
This commit is contained in:
2015-08-04 21:56:39 +05:00
9 changed files with 108 additions and 34 deletions

View File

@@ -10,6 +10,7 @@ from asuzr.models import Attendance
from asuzr.models import Schedule
from asuzr.models import OrderCosts
from asuzr.models import CostItem
from asuzr.forms import *
# Register your models here.

View File

@@ -2,8 +2,35 @@
from django import forms
from django.forms import ModelForm
from datetime import date
from django.contrib.admin.widgets import AdminDateWidget
from asuzr.models import Order
from django.contrib.admin.widgets import AdminDateWidget, FilteredSelectMultiple, RelatedFieldWidgetWrapper
from django.forms.extras.widgets import Select
from django.db.models.fields.related import ManyToOneRel
from asuzr.models import *
from django.core.urlresolvers import reverse
from django.utils.safestring import mark_safe
from django.forms import widgets
from django.conf import settings
class RelatedFieldWidgetCanAdd(widgets.Select):
def __init__(self, related_model, related_url=None, *args, **kw):
super(RelatedFieldWidgetCanAdd, self).__init__(*args, **kw)
if not related_url:
rel_to = related_model
info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
related_url = 'admin:%s_%s_add' % info
# Be careful that here "reverse" is not allowed
self.related_url = related_url
def render(self, name, value, *args, **kwargs):
self.related_url = reverse(self.related_url)
output = [super(RelatedFieldWidgetCanAdd, self).render(name, value, *args, **kwargs)]
output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % (self.related_url, name))
output.append(u'<img src="%sadmin/img/icon_addlink.gif" width="10" height="10" alt="%s"/></a>' % (settings.STATIC_URL, ('Add Another')))
return mark_safe(u''.join(output))
class DateForm (forms.Form):
date = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
@@ -19,5 +46,22 @@ class DiapDateForm (forms.Form):
class OrderForm(ModelForm):
class Meta:
model = Order
fields = ['product', 'price', 'paid', 'address', 'deadline', 'delivery', 'lifting']
fields = ['product', 'price', 'paid', 'address', 'designer', 'deadline', 'delivery', 'lifting']
product = forms.ModelChoiceField(
required=False,
queryset = Product.objects.all(),
widget=RelatedFieldWidgetCanAdd(Product)
)
class ProdTableForm(ModelForm):
class Meta:
model = OrderCosts
fields = ['cost_item', 'value']
cost_item = forms.ModelChoiceField(
required=False,
queryset = CostItem.objects.all(),
widget=RelatedFieldWidgetCanAdd(CostItem)
)

View File

@@ -172,7 +172,7 @@ class OrderCosts(models.Model):
formula = models.CharField(max_length=150, null=True, blank = True)
def __unicode__(self):
return ', '.join((self.order.product.name, self.cost_item.name))
return ', '.join((str(self.order.id), self.order.product.name, self.cost_item.name))
############################################################################################
@@ -205,7 +205,7 @@ def construct_log_entry(**kwargs):
log_entry['object_id'] = instance.id
return log_entry
@receiver(post_save)
#@receiver(post_save)
def after_save(*args, **kwargs):
instance = kwargs['instance']
if isinstance(instance, LogEntry): return
@@ -216,7 +216,7 @@ def after_save(*args, **kwargs):
entry = LogEntry(**log_entry)
entry.save()
@receiver(post_delete)
#@receiver(post_delete)
def after_delete(*args, **kwargs):
instance = kwargs['instance']
if isinstance(instance, Session): return

View File

@@ -229,7 +229,7 @@ class ProductionTable(tables.Table):
class Meta:
attrs = {'class': 'paleblue'}
template = 'asuzr/totals_table.html'
template = 'asuzr/table_with_form.html'
class LogTable(tables.Table):
def render_action_flag(self, value):

View File

@@ -120,7 +120,7 @@ def visit_view(request):
orders_table = get_day_orders_table(curr_date, 'orders-')
RequestConfig(request).configure(orders_table)
order_form = OrderForm()
order_form = OrderForm(initial = {'designer': request.user})
title = u'Таблица посещаемости на %s' % dateformat.format(curr_date, 'F Y')
return render(request, 'asuzr/table2.html', {
@@ -129,7 +129,8 @@ def visit_view(request):
'additional_info': add_info,
'title': title,
'dateform': form,
'model_form': order_form
'add_form': order_form,
'form_action': 'add-order'
})
@login_required
@@ -221,7 +222,7 @@ def sketches(request, order_id):
'title': u'Эскизы заказа %s' % curr_order})
def add_order(request):
new_order = Order(date=date.today(), designer = request.user)
new_order = Order(date=date.today())
form = OrderForm(request.POST, instance = new_order)
form.save()
return redirect(visit_view)
@@ -260,16 +261,28 @@ def desreport(request):
@log_view_call
@login_required
def production_table(request, order_id):
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))
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))
form = ProdTableForm()
RequestConfig(request).configure(table)
return render(request, 'asuzr/table.html',
{'table': table, 'title': title, 'add_form': form, 'form_action': 'add-cost-items', 'params': order_id})
def production_table_add_item(request, order_id):
curr_order = Order.objects.get(pk = order_id)
new_item = OrderCosts(order=curr_order)
form = ProdTableForm(request.POST, instance = new_item)
form.save()
return redirect(production_table, order_id = order_id)
@log_view_call
@login_required