Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from django import forms
  2. from django.db.models.loading import get_model
  3. Order = get_model('order', 'Order')
  4. OrderNote = get_model('order', 'OrderNote')
  5. ShippingAddress = get_model('order', 'ShippingAddress')
  6. SourceType = get_model('payment', 'SourceType')
  7. class OrderStatsForm(forms.Form):
  8. date_from = forms.DateField(required=False, label="From")
  9. date_to = forms.DateField(required=False, label="To")
  10. _filters = _description = None
  11. def _determine_filter_metadata(self):
  12. self._filters = {}
  13. self._description = 'All orders'
  14. if self.errors:
  15. return
  16. date_from = self.cleaned_data['date_from']
  17. date_to = self.cleaned_data['date_to']
  18. if date_from and date_to:
  19. self._filters = {'date_placed__range': [date_from, date_to]}
  20. self._description = 'Orders placed between %s and %s' % (date_from, date_to)
  21. elif date_from and not date_to:
  22. self._filters = {'date_placed__gt': date_from}
  23. self._description = 'Orders placed since %s' % (date_from,)
  24. elif not date_from and date_to:
  25. self._filters = {'date_placed__lt': date_to}
  26. self._description = 'Orders placed before %s' % (date_to,)
  27. else:
  28. self._filters = {}
  29. self._description = 'All orders'
  30. def get_filters(self):
  31. if self._filters is None:
  32. self._determine_filter_metadata()
  33. return self._filters
  34. def get_filter_description(self):
  35. if self._description is None:
  36. self._determine_filter_metadata()
  37. return self._description
  38. class OrderSearchForm(forms.Form):
  39. order_number = forms.CharField(required=False, label="Order number")
  40. name = forms.CharField(required=False, label="Customer name")
  41. product_title = forms.CharField(required=False, label="Product name")
  42. product_id = forms.CharField(required=False, label="Product ID")
  43. status_choices = (('', '---------'),) + tuple([(v, v) for v in Order.all_statuses()])
  44. status = forms.ChoiceField(choices=status_choices, label="Status", required=False)
  45. date_formats = ('%d/%m/%Y',)
  46. date_from = forms.DateField(required=False, label="Date from", input_formats=date_formats)
  47. date_to = forms.DateField(required=False, label="Date to", input_formats=date_formats)
  48. voucher = forms.CharField(required=False, label="Voucher code")
  49. method_choices = (('', '---------'),) + tuple([(src.code, src.name) for src in SourceType.objects.all()])
  50. payment_method = forms.ChoiceField(label="Payment method", required=False,
  51. choices=method_choices)
  52. format_choices = (('html', 'HTML'),
  53. ('csv', 'CSV'),)
  54. response_format = forms.ChoiceField(widget=forms.RadioSelect,
  55. choices=format_choices, initial='html', label="Get results as")
  56. class OrderNoteForm(forms.ModelForm):
  57. class Meta:
  58. model = OrderNote
  59. exclude = ('order', 'user', 'note_type')
  60. class ShippingAddressForm(forms.ModelForm):
  61. class Meta:
  62. model = ShippingAddress
  63. exclude = ('search_text',)