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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from django import forms
  2. from django.core import validators
  3. from django.db.models import get_model
  4. from django.utils.translation import ugettext_lazy as _
  5. from oscar.apps.customer.forms import EmailUserCreationForm, CommonPasswordValidator
  6. from oscar.core.compat import get_user_model
  7. User = get_user_model()
  8. Partner = get_model('partner', 'Partner')
  9. PartnerAddress = get_model('partner', 'PartnerAddress')
  10. class PartnerSearchForm(forms.Form):
  11. name = forms.CharField(required=False, label=_("Partner name"))
  12. class PartnerCreateForm(forms.ModelForm):
  13. class Meta:
  14. model = Partner
  15. fields = ('name',)
  16. class NewUserForm(EmailUserCreationForm):
  17. def __init__(self, partner, *args, **kwargs):
  18. self.partner = partner
  19. super(NewUserForm, self).__init__(host=None, *args, **kwargs)
  20. def save(self):
  21. user = super(NewUserForm, self).save(commit=False)
  22. user.is_staff = True
  23. user.save()
  24. self.partner.users.add(user)
  25. return user
  26. class Meta:
  27. model = User
  28. fields = ('first_name', 'last_name', 'email', 'password1', 'password2')
  29. class ExistingUserForm(forms.ModelForm):
  30. """
  31. Slightly different form that makes
  32. * makes saving password optional
  33. * doesn't regenerate username
  34. * doesn't allow changing email till #668 is resolved
  35. """
  36. password1 = forms.CharField(
  37. label=_('Password'),
  38. widget=forms.PasswordInput,
  39. required=False,
  40. validators=[validators.MinLengthValidator(6),
  41. CommonPasswordValidator()])
  42. password2 = forms.CharField(
  43. required=False,
  44. label=_('Confirm Password'),
  45. widget=forms.PasswordInput)
  46. def clean_password2(self):
  47. password1 = self.cleaned_data.get('password1', '')
  48. password2 = self.cleaned_data.get('password2', '')
  49. if password1 != password2:
  50. raise forms.ValidationError(_("The two password fields didn't match."))
  51. return password2
  52. def save(self, commit=True):
  53. user = super(ExistingUserForm, self).save(commit=False)
  54. if self.cleaned_data['password1']:
  55. user.set_password(self.cleaned_data['password1'])
  56. if commit:
  57. user.save()
  58. return user
  59. class Meta:
  60. model = User
  61. fields = ('first_name', 'last_name', 'password1', 'password2')
  62. class UserEmailForm(forms.Form):
  63. # We use a CharField so that a partial email address can be entered
  64. email = forms.CharField(
  65. label=_("Email address"), max_length=100)
  66. class PartnerAddressForm(forms.ModelForm):
  67. class Meta:
  68. fields = ('line1', 'line2', 'line3', 'line4',
  69. 'state', 'postcode', 'country')
  70. model = PartnerAddress