Blame view

ponto/forms.py 2.6 KB
d236378cd   Denis Ricardo da Silva Medeiros   Mesclando arquivo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  from django import forms
  from django.contrib.auth.forms import ReadOnlyPasswordHashField
  from django.utils.translation import ugettext_lazy as _
  
  from models import *
  
  
  
  class FuncionarioCreationForm(forms.ModelForm):
  	"""
  	A form for creating new users. Includes all the required fields, plus a
  	repeated password.
  	"""
  	
  	error_messages = {
  		'duplicate_username': _("A user with that email already exists."),
  		'password_mismatch': _("The two password fields didn't match."),
  	}
  
  	password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
  	password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput,help_text=_("Enter the same password as above, for verification."))
  
  	class Meta:
  		model = Funcionario
  		fields = ('username','matricula','email',)
  
  	def clean_email(self):
  		# Since EmailUser.email is unique, this check is redundant,
  		# but it sets a nicer error message than the ORM. See #13147.
  		email = self.cleaned_data["email"]
  		try:
  			Funcionario._default_manager.get(email=email)
  		except Funcionario.DoesNotExist:
  			return email
  		raise forms.ValidationError(self.error_messages['duplicate_email'])
  
  	def clean_password2(self):
  		# Check that the two password entries match
  		password1 = self.cleaned_data.get("password1")
  		password2 = self.cleaned_data.get("password2")
  		if password1 and password2 and password1 != password2:
  			raise forms.ValidationError(self.error_messages['password_mismatch'])
  		return password2
  
  	def save(self, commit=True):
  		# Save the provided password in hashed format
  		user = super(FuncionarioCreationForm, self).save(commit=False)
  		user.set_password(self.cleaned_data["password1"])
  		if commit:
  			user.save()
  		return user
  
  
  class FuncionarioChangeForm(forms.ModelForm):
  	"""
  	A form for updating users. Includes all the fields on the user, but
  	replaces the password field with admin's password hash display field.
  	"""
  
  	password = ReadOnlyPasswordHashField(label=_("Password"), help_text=_("Raw passwords are not stored, so there is no way to see this user's password, but you can change the password using <a href=\"password/\">this form</a>."))
  
  	class Meta:
  		model = Funcionario
  
  	def __init__(self, *args, **kwargs):
  		super(FuncionarioChangeForm, self).__init__(*args, **kwargs)
  		f = self.fields.get('user_permissions', None)
  		if f is not None:
  			f.queryset = f.queryset.select_related('content_type')
  
  	def clean_password(self):
  		# Regardless of what the user provides, return the initial value.
  		# This is done here, rather than on the field, because the
  		# field does not have access to the initial value
  		return self.initial["password"]