forms.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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, FilteredSelectMultiple, RelatedFieldWidgetWrapper
  6. from django.forms.extras.widgets import Select
  7. from django.db.models.fields.related import ManyToOneRel
  8. from asuzr.models import *
  9. from django.core.urlresolvers import reverse
  10. from django.utils.safestring import mark_safe
  11. from django.forms import widgets
  12. from django.conf import settings
  13. class RelatedFieldWidgetCanAdd(widgets.Select):
  14. def __init__(self, related_model, related_url=None, *args, **kw):
  15. super(RelatedFieldWidgetCanAdd, self).__init__(*args, **kw)
  16. if not related_url:
  17. rel_to = related_model
  18. info = (rel_to._meta.app_label, rel_to._meta.object_name.lower())
  19. related_url = 'admin:%s_%s_add' % info
  20. # Be careful that here "reverse" is not allowed
  21. self.related_url = related_url
  22. def render(self, name, value, *args, **kwargs):
  23. self.related_url = reverse(self.related_url)
  24. output = [super(RelatedFieldWidgetCanAdd, self).render(name, value, *args, **kwargs)]
  25. output.append(u'<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> ' % (self.related_url, name))
  26. output.append(u'<img src="%sadmin/img/icon_addlink.gif" width="10" height="10" alt="%s"/></a>' % (settings.STATIC_URL, ('Add Another')))
  27. return mark_safe(u''.join(output))
  28. class DateForm (forms.Form):
  29. date = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  30. label = u'Дата',
  31. initial = date.today)
  32. class DiapDateForm (forms.Form):
  33. sdate = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  34. label = u'С', initial = date.today)
  35. edate = forms.DateField(widget = AdminDateWidget(format='%d.%m.%Y'),
  36. label = u'по', initial = date.today)
  37. class OrderForm(ModelForm):
  38. class Meta:
  39. model = Order
  40. fields = ['product', 'price', 'paid', 'address', 'designer', 'deadline', 'delivery', 'lifting']
  41. submit_text = "Добавить заказ"
  42. product = forms.ModelChoiceField(
  43. required=False,
  44. queryset = Product.objects.all(),
  45. widget=RelatedFieldWidgetCanAdd(Product)
  46. )
  47. designer = forms.ModelChoiceField(queryset = User.objects.filter(groups__name='designers'))
  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. )