source: sapic/users/forms.py @ 10f099e

erwinexplicacion_situacionalgestion_usuariostaller_django
Last change on this file since 10f099e was 10f099e, checked in by lhernandez <lhernandez@…>, 7 años ago

Se desarrollo e implemento el registro de oraganizaciones, preparando para asociar voceros al registro

  • Propiedad mode establecida a 100644
File size: 11.2 KB
Línea 
1# -*- coding: utf-8 -*-
2"""!
3Formuario para generar los formulario para los usuarios
4
5@author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
6@copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
7@date 29-05-2017
8@version 1.0.0
9"""
10from captcha.fields import CaptchaField
11from django import forms
12from django.forms import ModelForm
13from django.contrib.auth.models import User
14from django.contrib.auth.forms import (
15    UserCreationForm, PasswordResetForm,
16    SetPasswordForm, PasswordChangeForm
17    )
18from django.forms.fields import (
19    CharField, BooleanField
20)
21from django.forms.widgets import (
22    PasswordInput, CheckboxInput
23)
24
25from .models import UserProfile
26
27
28class FormularioLogin(forms.Form):
29    """!
30    Clase que permite crear el formulario de ingreso a la aplicación
31
32    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
33    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
34    @date 09-01-2017
35    @version 1.0.0
36    """
37    contrasena = CharField()
38    usuario = CharField()
39    remember_me = BooleanField()
40    captcha = CaptchaField()
41
42    class Meta:
43        fields = ('usuario', 'contrasena', 'remember_me' 'captcha')
44
45    def __init__(self, *args, **kwargs):
46        super(FormularioLogin, self).__init__(*args, **kwargs)
47        self.fields['contrasena'].widget = PasswordInput()
48        self.fields['contrasena'].widget.attrs.update({'class': 'form-control',
49        'placeholder': 'Contraseña'})
50        self.fields['usuario'].widget.attrs.update({'class': 'form-control',
51        'placeholder': 'Nombre de Usuario o Email'})
52        self.fields['remember_me'].label = "Recordar"
53        self.fields['remember_me'].widget = CheckboxInput()
54        self.fields['remember_me'].required = False
55        self.fields['captcha'].required=True
56
57
58class PasswordResetForm(PasswordResetForm):
59    """!
60    Clase que permite sobrescribir el formulario para resetear la contraseña
61
62    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
63    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
64    @date 09-01-2017
65    @version 1.0.0
66    """
67
68    def __init__(self, *args, **kwargs):
69        super(PasswordResetForm, self).__init__(*args, **kwargs)
70        self.fields['email'].widget.attrs.update({'class': 'form-control',
71                                                  'placeholder': 'Correo'})
72
73    def clean(self):
74        cleaned_data = super(PasswordResetForm, self).clean()
75        email = cleaned_data.get("email")
76
77        if email:
78            msg = "Error este email: %s, no se encuentra asociado a una cuenta\
79                  " % (email)
80            try:
81                User.objects.get(email=email)
82            except:
83                self.add_error('email', msg)
84
85
86class SetPasswordForm(SetPasswordForm):
87    """!
88    Clase que permite sobrescribir el formulario para ingresar la nueva contraseña
89
90    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
91    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
92    @date 09-01-2017
93    @version 1.0.0
94    """
95    def __init__(self, *args, **kwargs):
96        super(SetPasswordForm, self).__init__(*args, **kwargs)
97
98        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
99                                                  'placeholder': 'Ingresa la nueva contraseña'})
100
101        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
102                                                  'placeholder': 'Repite la nueva contraseña'})
103
104
105class FormularioUpdate(ModelForm):
106    """!
107    Clase que permite crear el formulario para actualizar el usuario
108
109    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
110    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
111    @date 09-01-2017
112    @version 1.0.0
113    """
114    class Meta:
115        model = User
116        fields = ['first_name', 'last_name', 'email']
117
118    def __init__(self, *args, **kwargs):
119        super(FormularioUpdate, self).__init__(*args, **kwargs)
120
121        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
122        'placeholder': 'Nombres'})
123        self.fields['first_name'].required=True
124        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
125        'placeholder': 'Apellidos'})
126        self.fields['last_name'].required=True
127        self.fields['email'].widget.attrs.update({'class': 'form-control',
128        'placeholder': 'Email'})
129        self.fields['email'].required=True
130
131
132class FormularioAdminUpdate(ModelForm):
133    """!
134    Clase que permite crear el formulario para actualizar el usuario por el administrador
135
136    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
137    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
138    @date 09-01-2017
139    @version 1.0.0
140    """
141
142    class Meta:
143        model = User
144        fields = ['first_name', 'last_name', 'email', 'groups',
145                  'is_staff', 'is_active']
146
147    def __init__(self, *args, **kwargs):
148         super(FormularioAdminUpdate, self).__init__(*args, **kwargs)
149
150         self.fields['first_name'].widget.attrs.update({'class': 'form-control',
151         'placeholder': 'Nombres'})
152         self.fields['first_name'].required=True
153         self.fields['last_name'].widget.attrs.update({'class': 'form-control',
154         'placeholder': 'Apellidos'})
155         self.fields['last_name'].required=True
156         self.fields['email'].widget.attrs.update({'class': 'form-control',
157         'placeholder': 'Email'})
158         self.fields['email'].required=True
159         self.fields['is_staff'].label= 'Es Administrador?'
160         self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
161         self.fields['is_active'].label= 'Estara Activo?'
162         self.fields['is_active'].widget.attrs.update({'class': 'form-control', 'checked': 'checked'})
163         self.fields['groups'].widget.attrs.update({'class': 'form-control'})
164
165
166class FormularioAdminRegistro(UserCreationForm):
167    """!
168    Clase que permite crear el formulario para crear usuario por el administrador
169
170    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
171    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
172    @date 09-01-2017
173    @version 1.0.0
174    """
175
176    class Meta:
177        model = User
178        fields = ['username', 'password1', 'password2',
179                  'first_name', 'last_name', 'email',
180                  'groups', 'is_staff', 'is_active']
181
182    def __init__(self, *args, **kwargs):
183        super(FormularioAdminRegistro, self).__init__(*args, **kwargs)
184
185        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
186                                                       'placeholder':
187                                                       'Nombres'})
188        self.fields['first_name'].required = True
189        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
190                                                      'placeholder':
191                                                      'Apellidos'})
192        self.fields['last_name'].required = True
193        self.fields['username'].widget.attrs.update({'class': 'form-control',
194                                                     'placeholder':
195                                                     'Nombre de usuario \
196                                                     (Username)'})
197        self.fields['username'].required = True
198        self.fields['password1'].widget.attrs.update({'class': 'form-control',
199                                                      'placeholder':
200                                                      'Contraseña'})
201        self.fields['password1'].required = True
202        self.fields['password2'].widget.attrs.update({'class': 'form-control',
203                                                      'placeholder':
204                                                      'Repite la Contraseña'})
205        self.fields['password2'].required = True
206        self.fields['email'].widget.attrs.update({'class': 'form-control',
207                                                  'placeholder': 'Email'})
208        self.fields['email'].required = True
209        self.fields['is_staff'].label = 'Es Administrador?'
210        self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
211        self.fields['is_active'].label = 'Estara Activo?'
212        self.fields['is_active'].widget.attrs.update({'class': 'form-control'})
213        self.fields['groups'].widget.attrs.update({'class': 'form-control'})
214
215    def clean(self):
216        cleaned_data = super(FormularioAdminRegistro, self).clean()
217        email = cleaned_data.get("email")
218
219        if email:
220            msg = "Error este email: %s, ya se encuentra asociado a una cuenta\
221                  " % (email)
222            try:
223                User.objects.get(email=email)
224                self.add_error('email', msg)
225            except:
226                pass
227
228
229class FormularioAdminRegPerfil(ModelForm):
230    """!
231    Clase que permite crear el formulario para actualizar usuario por el administrador
232
233    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
234    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
235    @date 09-01-2017
236    @version 1.0.0
237    """
238
239    class Meta:
240        model = UserProfile
241        fields = ['fk_tipo_documento', 'id_perfil']
242
243    def __init__(self, *args, **kwargs):
244        super(FormularioAdminRegPerfil, self).__init__(*args, **kwargs)
245        self.fields['fk_tipo_documento'].empty_label = 'Seleccione el Tipo de Documento'
246        self.fields['fk_tipo_documento'].widget.attrs.update({'class': 'form-control'})
247        self.fields['fk_tipo_documento'].label= 'Tipo de Documento'
248        self.fields['fk_tipo_documento'].required=True
249        self.fields['id_perfil'].widget.attrs.update({'class': 'form-control',
250                                                      'placeholder':'Documento de identidad'})
251        self.fields['id_perfil'].label= 'Documento de Identidad'
252        self.fields['id_perfil'].required=True
253
254
255class PasswordChangeForm(PasswordChangeForm):
256    """!
257    Clase que sobrescribir el formulario para cambiar la contraseña
258
259    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
260    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
261    @date 09-01-2017
262    @version 1.0.0
263    """
264    def __init__(self, *args, **kwargs):
265        super(PasswordChangeForm, self).__init__(*args, **kwargs)
266
267        self.fields['old_password'].widget.attrs.update({'class': 'form-control',
268                                                  'placeholder': 'Contraseña Antigua'})
269        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
270                                                  'placeholder': 'Ingresa la nueva contraseña'})
271
272        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
273                                                  'placeholder': 'Repite la nueva contraseña'})
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.