You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 OrderSearchForm(forms.Form):
  8. order_number = forms.CharField(required=False, label="Order number")
  9. name = forms.CharField(required=False, label="Customer name")
  10. product_title = forms.CharField(required=False, label="Product name")
  11. product_id = forms.CharField(required=False, label="Product ID")
  12. status_choices = (('', '---------'),) + tuple([(v, v) for v in Order.all_statuses()])
  13. status = forms.ChoiceField(choices=status_choices, label="Status", required=False)
  14. date_formats = ('%d/%m/%Y',)
  15. date_from = forms.DateField(required=False, label="Date from", input_formats=date_formats)
  16. date_to = forms.DateField(required=False, label="Date to", input_formats=date_formats)
  17. voucher = forms.CharField(required=False, label="Voucher code")
  18. method_choices = (('', '---------'),) + tuple([(src.code, src.name) for src in SourceType.objects.all()])
  19. payment_method = forms.ChoiceField(label="Payment method", required=False,
  20. choices=method_choices)
  21. format_choices = (('html', 'HTML'),
  22. ('csv', 'CSV'),)
  23. response_format = forms.ChoiceField(widget=forms.RadioSelect,
  24. choices=format_choices, initial='html', label="Get results as")
  25. class OrderSummaryForm(forms.Form):
  26. date_from = forms.DateField(required=False, label="From")
  27. date_to = forms.DateField(required=False, label="To")
  28. def get_filters(self):
  29. date_from = self.cleaned_data['date_from']
  30. date_to = self.cleaned_data['date_to']
  31. if date_from and date_to:
  32. return {'date_placed__range': [date_from, date_to]}
  33. elif date_from and not date_to:
  34. return {'date_placed__gt': date_from}
  35. elif not date_from and date_to:
  36. return {'date_placed__lt': date_to}
  37. return {}
  38. class OrderNoteForm(forms.ModelForm):
  39. class Meta:
  40. model = OrderNote
  41. exclude = ('order', 'user', 'note_type')
  42. class ShippingAddressForm(forms.ModelForm):
  43. class Meta:
  44. model = ShippingAddress
  45. exclude = ('search_text',)