Merge branch 'master' of ssh://192.168.100.6/repo/record
Conflicts: asuzr/forms.py
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,6 +20,7 @@ urlpatterns = patterns('',
|
||||
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'^production_table/add_item/(?P<order_id>\d+)$', 'asuzr.views.production_table_add_item', name = 'add-cost-items'),
|
||||
url(r'^sketches/(?P<order_id>\d+)/$', 'asuzr.views.sketches'),
|
||||
url(r'^sketches/delete/$', 'asuzr.views.delete_sketch', name = 'asuzr-del-sketch'),
|
||||
url(r'^prodplan/$', 'asuzr.views.prod_plan_view'),
|
||||
|
||||
@@ -8,6 +8,22 @@
|
||||
{% inplace_static %}
|
||||
<link rel="stylesheet" href="{{ STATIC_URL }}django_tables2/themes/paleblue/css/screen.css" />
|
||||
<link rel="stylesheet" href="{{ STATIC_URL }}admin/css/base.css" />
|
||||
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js">
|
||||
|
||||
function showAddAnotherPopup(triggeringLink) {
|
||||
var name = triggeringLink.id.replace(/^add_/, '');
|
||||
name = id_to_windowname(name);
|
||||
href = triggeringLink.href
|
||||
if (href.indexOf('?') == -1) {
|
||||
href += '?_popup=1';
|
||||
} else {
|
||||
href += '&_popup=1';
|
||||
}
|
||||
var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
|
||||
win.focus();
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
#menu {
|
||||
margin: 0; /* Обнуляем значение отступов */
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block page %}
|
||||
<div class="inline" style="width:38%;"><div><h3>{{ table1.verbose_name }}</h3></div>{% render_table table1 %}</div>
|
||||
<div class="inline" style="width:20%;"><div><h3>{{ table2.verbose_name }}</h3></div>{% render_table table2 %}</div>
|
||||
<div class="inline"><div><h3>{{ table1.verbose_name }}</h3></div>{% render_table table1 %}</div>
|
||||
<div class="inline"><div><h3>{{ table2.verbose_name }}</h3></div>{% render_table table2 %}</div>
|
||||
{% if order_form %}
|
||||
<form action="{% url 'add-order' %}" method="POST" >
|
||||
{% csrf_token %}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
{% load django_tables2 %}
|
||||
{% load i18n %}
|
||||
{% block table.tbody %}
|
||||
|
||||
<tbody>
|
||||
{% for row in table.page.object_list|default:table.rows %} {# support pagination #}
|
||||
{% block table.tbody.row %}
|
||||
@@ -18,21 +19,19 @@
|
||||
{% endblock table.tbody.empty_text %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if model_form %}
|
||||
<form action="{% url 'add-order' %}" method="POST" >
|
||||
{% if add_form %}
|
||||
{% if params %}
|
||||
<form action="{% url form_action params %}" method="POST" >
|
||||
{% else %}
|
||||
<form action="{% url form_action %}" method="POST" >
|
||||
{% endif %}
|
||||
{% csrf_token %}
|
||||
<tr>
|
||||
<td>{{model_form.product}}</td>
|
||||
<td>{{model_form.price}}</td>
|
||||
<td>{{model_form.paid}}</td>
|
||||
<td>{{model_form.address}}</td>
|
||||
<td></td>
|
||||
<td>{{model_form.deadline}}</td>
|
||||
<td>{{model_form.delivery}}</td>
|
||||
<td>{{model_form.lifting}}</td>
|
||||
{% for field in add_form %}
|
||||
<td>{{field}}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td><td></td><td></td><td></td><td></td><td></td><td></td>
|
||||
<td><input type="submit" text="Добавить заказ"></td>
|
||||
</tr>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user