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.

forms.py 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. class PartnerSearchForm(forms.Form):
  10. name = forms.CharField(required=False, label=_("Partner name"))
  11. class PartnerCreateForm(forms.ModelForm):
  12. class Meta:
  13. model = Partner
  14. fields = ('name',)
  15. class NewUserForm(EmailUserCreationForm):
  16. def __init__(self, partner, *args, **kwargs):
  17. self.partner = partner
  18. super(NewUserForm, self).__init__(host=None, *args, **kwargs)
  19. def save(self):
  20. user = super(NewUserForm, self).save(commit=False)
  21. user.is_staff = True
  22. user.save()
  23. self.partner.users.add(user)
  24. return user
  25. class Meta:
  26. model = User
  27. fields = ('first_name', 'last_name', 'email', 'password1', 'password2')
  28. class ExistingUserForm(forms.ModelForm):
  29. """
  30. Slightly different form that makes
  31. * makes saving password optional
  32. * doesn't regenerate username
  33. * doesn't allow changing email till #668 is resolved
  34. """
  35. password1 = forms.CharField(
  36. label=_('Password'),
  37. widget=forms.PasswordInput,
  38. required=False,
  39. validators=[validators.MinLengthValidator(6),
  40. CommonPasswordValidator()])
  41. password2 = forms.CharField(
  42. required=False,
  43. label=_('Confirm Password'),
  44. widget=forms.PasswordInput)
  45. def clean_password2(self):
  46. password1 = self.cleaned_data.get('password1', '')
  47. password2 = self.cleaned_data.get('password2', '')
  48. if password1 != password2:
  49. raise forms.ValidationError(_("The two password fields didn't match."))
  50. return password2
  51. def save(self, commit=True):
  52. user = super(ExistingUserForm, self).save(commit=False)
  53. if self.cleaned_data['password1']:
  54. user.set_password(self.cleaned_data['password1'])
  55. if commit:
  56. user.save()
  57. return user
  58. class Meta:
  59. model = User
  60. fields = ('first_name', 'last_name', 'password1', 'password2')
  61. class UserEmailForm(forms.Form):
  62. # We use a CharField so that a partial email address can be entered
  63. email = forms.CharField(
  64. label=_("Email address"), max_length=100)