forms.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. from django import forms
  3. from django.forms import ModelForm
  4. from datetime import date
  5. from django.contrib.admin.widgets import AdminDateWidget
  6. from django.forms.extras.widgets import Select
  7. from asuzr.models import *
  8. from django.core.urlresolvers import reverse
  9. from django.utils.safestring import mark_safe
  10. from django.forms import widgets
  11. from django.conf import settings
  12. class RelatedFieldWidgetCanAdd(widgets.Select):
  13. def __init__(self, related_model, related_url=None, *args, **kw):
  14. super(RelatedFieldWidgetCanAdd, self).__init__(*args, **kw)
  15. if not related_url:
  16. rel_to = related_model
  17. info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
  18. related_url = 'admin:%s_%s_add' % info
  19. # Be careful that here "reverse" is not allowed
  20. self.related_url = related_url
  21. def render(self, name, value, *args, **kwargs):
  22. self.related_url = reverse(self.related_url)
  23. output = [super(RelatedFieldWidgetCanAdd, self).render(name, value, *args, **kwargs)]
  24. output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % (self.related_url, name))
  25. output.append(u'<img src="%sadmin/img/icon_addlink.gif" width="10" height="10" alt="%s"/></a>' % (settings.STATIC_URL, ('Add Another')))
  26. return mark_safe(u''.join(output))
  27. class DateForm (forms.Form):
  28. date = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  29. label = u'Дата',
  30. initial = date.today)
  31. class DiapDateForm (forms.Form):
  32. sdate = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  33. label = u'С', initial = date.today)
  34. edate = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  35. label = u'по', initial = date.today)
  36. class OrderForm(ModelForm):
  37. class Meta:
  38. model = Order
  39. fields = ['product', 'price', 'paid', 'address', 'designer', 'deadline', 'delivery', 'lifting']
  40. submit_text = "Добавить заказ"
  41. product = forms.ModelChoiceField(
  42. required=False,
  43. queryset = Product.objects.all(),
  44. widget=RelatedFieldWidgetCanAdd(Product)
  45. )
  46. designer = forms.ModelChoiceField(queryset = User.objects.filter(groups__name='Дизайнеры'))
  47. deadline = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'))
  48. class ProdTableForm(ModelForm):
  49. class Meta:
  50. model = OrderCosts
  51. fields = ['cost_item', 'value']
  52. submit_text = "Добавить"
  53. cost_item = forms.ModelChoiceField(
  54. required=False,
  55. queryset = CostItem.objects.all(),
  56. widget=RelatedFieldWidgetCanAdd(CostItem)
  57. )
  58. class ProdPlanForm(ModelForm):
  59. class Meta:
  60. model = ProdPlan
  61. fields = ['executor','order' ,'action']
  62. submit_text = "Добавить"