forms.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. # -*- coding: utf-8 -*-
  2. from django import forms
  3. from django.contrib.auth.forms import PasswordResetForm, ReadOnlyPasswordHashField
  4. from coin.members.models import Member
  5. class MemberCreationForm(forms.ModelForm):
  6. """
  7. This form was inspired from django.contrib.auth.forms.UserCreationForm
  8. and adapted to coin specificities
  9. """
  10. username = forms.RegexField(required=False,
  11. label="Nom d'utilisateur", max_length=30, regex=r"^[\w.@+-]+$",
  12. help_text=u"Laisser vide pour le générer automatiquement à partir du "
  13. u"nom et du prénom")
  14. password = forms.CharField(required=False, label='Mot de passe', widget=forms.PasswordInput)
  15. class Meta:
  16. model = Member
  17. fields = '__all__'
  18. def save(self, commit=True):
  19. """
  20. Save member, then set his password
  21. """
  22. member = super(MemberCreationForm, self).save(commit=False)
  23. member.set_password(self.cleaned_data["password"])
  24. if commit:
  25. member.member()
  26. return member
  27. class MemberChangeForm(forms.ModelForm):
  28. """
  29. This form was inspired from django.contrib.auth.forms.UserChangeForm
  30. and adapted to coin specificities
  31. """
  32. password = ReadOnlyPasswordHashField()
  33. class Meta:
  34. model = Member
  35. fields = '__all__'
  36. def __init__(self, *args, **kwargs):
  37. super(MemberChangeForm, self).__init__(*args, **kwargs)
  38. f = self.fields.get('user_permissions', None)
  39. if f is not None:
  40. f.queryset = f.queryset.select_related('content_type')
  41. def clean_password(self):
  42. # Regardless of what the user provides, return the initial value.
  43. # This is done here, rather than on the field, because the
  44. # field does not have access to the initial value
  45. return self.initial["password"]
  46. def clean_username(self):
  47. # idem clean_password
  48. return self.initial["username"]
  49. class MemberPasswordResetForm(PasswordResetForm):
  50. pass