source: sapic/users/forms.py @ 72e62e0

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

Agregado nuevo formulario para la actualizacion del vocero desde el administrador

  • Propiedad mode establecida a 100644
File size: 21.5 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, IntegerField
20)
21from django.forms.widgets import (
22    PasswordInput, CheckboxInput
23)
24
25from .models import UserProfile
26
27from utils.views import (
28    obtenerEstados, listMunicipios, listParroquias,
29    obtenerTipoDocumento, obtenerUnidades, obtenerTipoOrganizacion
30    )
31
32from utils.models import (
33    Estado, Municipio, Parroquia,
34    TipoDocumento, UnidadesOrganizacionSocial, TipoOrganizacion,
35    ComiteUnidadEjecutiva
36    )
37
38from organizaciones.models import (
39  OrganizacionSocial, Vocero
40  )
41
42class FormularioLogin(forms.Form):
43    """!
44    Clase que permite crear el formulario de ingreso a la aplicación
45
46    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
47    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
48    @date 09-01-2017
49    @version 1.0.0
50    """
51    contrasena = CharField()
52    usuario = CharField()
53    remember_me = BooleanField()
54    captcha = CaptchaField()
55
56    class Meta:
57        fields = ('usuario', 'contrasena', 'remember_me' 'captcha')
58
59    def __init__(self, *args, **kwargs):
60        super(FormularioLogin, self).__init__(*args, **kwargs)
61        self.fields['contrasena'].widget = PasswordInput()
62        self.fields['contrasena'].widget.attrs.update({'class': 'form-control',
63        'placeholder': 'Contraseña'})
64        self.fields['usuario'].widget.attrs.update({'class': 'form-control',
65        'placeholder': 'Nombre de Usuario o Email'})
66        self.fields['remember_me'].label = "Recordar"
67        self.fields['remember_me'].widget = CheckboxInput()
68        self.fields['remember_me'].required = False
69        self.fields['captcha'].required=True
70
71
72class PasswordResetForm(PasswordResetForm):
73    """!
74    Clase que permite sobrescribir el formulario para resetear la contraseña
75
76    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
77    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
78    @date 09-01-2017
79    @version 1.0.0
80    """
81
82    def __init__(self, *args, **kwargs):
83        super(PasswordResetForm, self).__init__(*args, **kwargs)
84        self.fields['email'].widget.attrs.update({'class': 'form-control',
85                                                  'placeholder': 'Correo'})
86
87    def clean(self):
88        cleaned_data = super(PasswordResetForm, self).clean()
89        email = cleaned_data.get("email")
90
91        if email:
92            msg = "Error este email: %s, no se encuentra asociado a una cuenta\
93                  " % (email)
94            try:
95                User.objects.get(email=email)
96            except:
97                self.add_error('email', msg)
98
99
100class SetPasswordForm(SetPasswordForm):
101    """!
102    Clase que permite sobrescribir el formulario para ingresar la nueva contraseña
103
104    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
105    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
106    @date 09-01-2017
107    @version 1.0.0
108    """
109    def __init__(self, *args, **kwargs):
110        super(SetPasswordForm, self).__init__(*args, **kwargs)
111
112        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
113                                                  'placeholder': 'Ingresa la nueva contraseña'})
114
115        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
116                                                  'placeholder': 'Repite la nueva contraseña'})
117
118
119class FormularioUpdate(ModelForm):
120    """!
121    Clase que permite crear el formulario para actualizar el usuario
122
123    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
124    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
125    @date 09-01-2017
126    @version 1.0.0
127    """
128    class Meta:
129        model = User
130        fields = ['first_name', 'last_name', 'email']
131
132    def __init__(self, *args, **kwargs):
133        super(FormularioUpdate, self).__init__(*args, **kwargs)
134
135        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
136        'placeholder': 'Nombres'})
137        self.fields['first_name'].required=True
138        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
139        'placeholder': 'Apellidos'})
140        self.fields['last_name'].required=True
141        self.fields['email'].widget.attrs.update({'class': 'form-control',
142        'placeholder': 'Email'})
143        self.fields['email'].required=True
144
145
146class FormularioAdminUpdate(ModelForm):
147    """!
148    Clase que permite crear el formulario para actualizar el usuario por el administrador
149
150    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
151    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
152    @date 09-01-2017
153    @version 1.0.0
154    """
155
156    class Meta:
157        model = User
158        fields = ['first_name', 'last_name', 'email', 'groups',
159                  'is_staff', 'is_active']
160
161    def __init__(self, *args, **kwargs):
162         super(FormularioAdminUpdate, self).__init__(*args, **kwargs)
163
164         self.fields['first_name'].widget.attrs.update({'class': 'form-control',
165         'placeholder': 'Nombres'})
166         self.fields['first_name'].required=True
167         self.fields['last_name'].widget.attrs.update({'class': 'form-control',
168         'placeholder': 'Apellidos'})
169         self.fields['last_name'].required=True
170         self.fields['email'].widget.attrs.update({'class': 'form-control',
171         'placeholder': 'Email'})
172         self.fields['email'].required=True
173         self.fields['is_staff'].label= 'Es Administrador?'
174         self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
175         self.fields['is_active'].label= 'Estara Activo?'
176         self.fields['is_active'].widget.attrs.update({'class': 'form-control', 'checked': 'checked'})
177         self.fields['groups'].widget.attrs.update({'class': 'form-control'})
178
179
180class FormularioAdminRegistro(UserCreationForm):
181    """!
182    Clase que permite crear el formulario para crear usuario por el administrador
183
184    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
185    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
186    @date 09-01-2017
187    @version 1.0.0
188    """
189
190    class Meta:
191        model = User
192        fields = ['username', 'password1', 'password2',
193                  'first_name', 'last_name', 'email',
194                  'groups', 'is_staff', 'is_active']
195
196    def __init__(self, *args, **kwargs):
197        super(FormularioAdminRegistro, self).__init__(*args, **kwargs)
198
199        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
200                                                       'placeholder':
201                                                       'Nombres'})
202        self.fields['first_name'].required = True
203        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
204                                                      'placeholder':
205                                                      'Apellidos'})
206        self.fields['last_name'].required = True
207        self.fields['username'].widget.attrs.update({'class': 'form-control',
208                                                     'placeholder':
209                                                     'Nombre de usuario \
210                                                     (Username)'})
211        self.fields['username'].required = True
212        self.fields['password1'].widget.attrs.update({'class': 'form-control',
213                                                      'placeholder':
214                                                      'Contraseña'})
215        self.fields['password1'].required = True
216        self.fields['password2'].widget.attrs.update({'class': 'form-control',
217                                                      'placeholder':
218                                                      'Repite la Contraseña'})
219        self.fields['password2'].required = True
220        self.fields['email'].widget.attrs.update({'class': 'form-control',
221                                                  'placeholder': 'Email'})
222        self.fields['email'].required = True
223        self.fields['is_staff'].label = 'Es Administrador?'
224        self.fields['is_staff'].widget.attrs.update({'class': 'form-control','data-toggle': 'toggle','data-on': 'Si',
225                                                   'data-off': 'No'})
226        self.fields['is_active'].label = 'Estara Activo?'
227        self.fields['is_active'].widget.attrs.update({'class': 'form-control','data-toggle': 'toggle','data-on': 'Si',
228                                                   'data-off': 'No',
229                                                   'checked': 'checked'})
230        self.fields['groups'].widget.attrs.update({'class': 'form-control'})
231
232    def clean(self):
233        cleaned_data = super(FormularioAdminRegistro, self).clean()
234        email = cleaned_data.get("email")
235
236        if email:
237            msg = "Error este email: %s, ya se encuentra asociado a una cuenta\
238                  " % (email)
239            try:
240                User.objects.get(email=email)
241                self.add_error('email', msg)
242            except:
243                pass
244
245
246class FormularioAdminRegPerfil(ModelForm):
247    """!
248    Clase que permite crear el formulario para actualizar usuario por el administrador
249
250    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
251    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
252    @date 09-01-2017
253    @version 1.0.0
254    """
255
256    class Meta:
257        model = UserProfile
258        fields = ['fk_tipo_documento', 'id_perfil']
259
260    def __init__(self, *args, **kwargs):
261        super(FormularioAdminRegPerfil, self).__init__(*args, **kwargs)
262        self.fields['fk_tipo_documento'].empty_label = 'Seleccione el Tipo de Documento'
263        self.fields['fk_tipo_documento'].widget.attrs.update({'class': 'form-control'})
264        self.fields['fk_tipo_documento'].label= 'Tipo de Documento'
265        self.fields['fk_tipo_documento'].required=True
266        self.fields['id_perfil'].widget.attrs.update({'class': 'form-control',
267                                                      'placeholder':'Documento de identidad'})
268        self.fields['id_perfil'].label= 'Documento de Identidad'
269        self.fields['id_perfil'].required=True
270
271
272class PasswordChangeForm(PasswordChangeForm):
273    """!
274    Clase que sobrescribir el formulario para cambiar la contraseña
275
276    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
277    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
278    @date 09-01-2017
279    @version 1.0.0
280    """
281    def __init__(self, *args, **kwargs):
282        super(PasswordChangeForm, self).__init__(*args, **kwargs)
283
284        self.fields['old_password'].widget.attrs.update({'class': 'form-control',
285                                                  'placeholder': 'Contraseña Antigua'})
286        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
287                                                  'placeholder': 'Ingresa la nueva contraseña'})
288
289        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
290                                                  'placeholder': 'Repite la nueva contraseña'})
291
292
293
294class FormularioAdminRegVoceros(UserCreationForm):
295    """!
296     Clase que permite crear el formulario para crear usuarios voceros por el administrador
297
298    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
299    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
300    @date 04-08-2017
301    @version 1.0.0
302    """
303
304    class Meta:
305        model = User
306        fields = ['username', 'password1', 'password2',
307                  'first_name', 'last_name', 'email',
308                  'is_active']
309
310    def __init__(self, *args, **kwargs):
311        super(FormularioAdminRegVoceros, self).__init__(*args, **kwargs)
312
313        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
314                                                       'placeholder':
315                                                       'Nombres'})
316        self.fields['first_name'].required = True
317        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
318                                                      'placeholder':
319                                                      'Apellidos'})
320        self.fields['last_name'].required = True
321        self.fields['username'].widget.attrs.update({'class': 'form-control',
322                                                     'placeholder':
323                                                     'Nombre de usuario \
324                                                     (Username)'})
325        self.fields['username'].required = True
326        self.fields['password1'].widget.attrs.update({'class': 'form-control',
327                                                      'placeholder':
328                                                      'Contraseña'})
329        self.fields['password1'].required = True
330        self.fields['password2'].widget.attrs.update({'class': 'form-control',
331                                                      'placeholder':
332                                                      'Repite la Contraseña'})
333        self.fields['password2'].required = True
334        self.fields['email'].widget.attrs.update({'class': 'form-control',
335                                                  'placeholder': 'Email'})
336
337        self.fields['is_active'].label = 'Estara Activo?'
338        self.fields['is_active'].widget.attrs.update({'class': 'form-control','data-toggle': 'toggle','data-on': 'Si',
339                                                   'data-off': 'No',
340                                                   'checked': 'checked'})
341
342    def clean(self):
343        cleaned_data = super(FormularioAdminRegVoceros, self).clean()
344        email = cleaned_data.get("email")
345
346        if email:
347            msg = "Error este email: %s, ya se encuentra asociado a otra cuenta\
348                  " % (email)
349            try:
350                User.objects.get(email=email)
351                self.add_error('email', msg)
352            except:
353                pass
354
355
356class FormularioRegVoceros(ModelForm):
357
358    tipo_organizacion = forms.ModelChoiceField(queryset=TipoOrganizacion.objects.all())
359
360    comite_unidad_ejecutiva = forms.ModelChoiceField(queryset=ComiteUnidadEjecutiva.objects.all())
361
362    estado = forms.ModelChoiceField(queryset=Estado.objects.all())
363
364    municipio = forms.ModelChoiceField(queryset=Municipio.objects.all())
365
366    documento = forms.IntegerField()
367
368    organizacion = forms.ModelChoiceField(queryset=OrganizacionSocial.objects.all())
369
370    class Meta:
371        model = Vocero
372        fields = ['organizacion', 'fk_tipo_documento', 'documento',
373                  'tipo_organizacion', 'fk_rol_unidad', 'sector',
374                  'casa_edificio_calle', 'comite_unidad_ejecutiva', 'localidad',
375                  'telefono', 'estado', 'municipio']
376
377    def __init__(self, *args, **kwargs):
378        super(FormularioRegVoceros, self).__init__(*args, **kwargs)
379
380        self.fields['fk_tipo_documento'].widget.attrs.update({'class':'form-control'})
381        self.fields['fk_tipo_documento'].empty_label = 'Seleccione El tipo de Documento'
382        self.fields['fk_tipo_documento'].label = 'Tipo de Documento'
383        self.fields['fk_tipo_documento'].required = True
384
385        self.fields['documento'].widget.attrs.update({'class':'form-control'})
386        self.fields['documento'].label = 'Documento de Identidad'
387        self.fields['documento'].required=True
388
389        self.fields['tipo_organizacion'].widget.attrs.update({'class':'form-control'})
390        self.fields['tipo_organizacion'].empty_label = 'Seleccione Tipo Organizacion social'
391        self.fields['tipo_organizacion'].required = True
392
393        self.fields['organizacion'].widget.attrs.update({'class':'form-control'})
394        self.fields['organizacion'].empty_label = 'Seleccione la Organizacion social'
395        self.fields['organizacion'].label = 'Organizacion social'
396        self.fields['organizacion'].required = True
397
398        self.fields['fk_rol_unidad'].widget.attrs.update({'class':'form-control'})
399        self.fields['fk_rol_unidad'].empty_label = 'Seleccione el Rol'
400        self.fields['fk_rol_unidad'].label = 'Rol del Vocero'
401        self.fields['fk_rol_unidad'].required = True
402
403        self.fields['comite_unidad_ejecutiva'].widget.attrs.update({'class':'form-control'})
404        self.fields['comite_unidad_ejecutiva'].empty_label = 'Seleccione el Comite'
405        self.fields['comite_unidad_ejecutiva'].required = False
406
407        self.fields['estado'].widget.attrs.update({'class':'form-control'})
408        self.fields['estado'].empty_label = 'Seleccione Estado'
409        self.fields['estado'].required = True
410
411        self.fields['municipio'].widget.attrs.update({'class':'form-control'})
412        self.fields['municipio'].empty_label = 'Seleccione Municipio'
413        self.fields['municipio'].required = True
414
415        self.fields['localidad'].widget.attrs.update({'class':'form-control'})
416        self.fields['localidad'].empty_label = 'Seleccione Parroquia'
417        self.fields['localidad'].required = True
418
419        self.fields['sector'].widget = forms.Textarea()
420        self.fields['sector'].widget.attrs.update(
421                                        {'class': 'form-control',
422                                         'placeholder':
423                                         'Sector del vocero'})
424        self.fields['sector'].required = False
425
426        self.fields['casa_edificio_calle'].widget = forms.Textarea()
427        self.fields['casa_edificio_calle'].widget.attrs.update(
428                                        {'class': 'form-control',
429                                         'placeholder':
430                                         'Casa/Edificio/Calle del vocero'})
431        self.fields['casa_edificio_calle'].required = False
432
433        self.fields['telefono'].widget.attrs.update({'class': 'form-control',
434                                                 'placeholder': 'Telefono'})
435        self.fields['telefono'].required = False
436
437    def clean(self):
438        cleaned_data = super(FormularioRegVoceros, self).clean()
439        tipo_documento = cleaned_data.get("fk_tipo_documento")
440        documento_identidad = cleaned_data.get("documento")
441        organizacion_social = cleaned_data.get("organizacion")
442
443        self.instance.documento_identidad = documento_identidad
444        self.instance.fk_org_social = organizacion_social
445
446        if documento_identidad is not None and tipo_documento is not None:
447
448            msg = "Error este Vocero %s, no se encuentra asociado a la \
449                   organizacion social: %s" % (documento_identidad,
450                                               organizacion_social)
451            try:
452                Vocero.objects.get(fk_org_social=organizacion_social,
453                                   fk_tipo_documento=tipo_documento,
454                                   documento_identidad=documento_identidad)
455            except:
456                self.add_error('documento_identidad', msg)
457
458
459class FormupdatePerfilVoceros(ModelForm):
460
461    tipo_organizacion = forms.ModelChoiceField(queryset=TipoOrganizacion.objects.all())
462
463    class Meta:
464        model = Vocero
465        fields = ['fk_org_social', 'fk_tipo_documento', 'documento_identidad',
466                  'tipo_organizacion', 'fk_rol_unidad', 'tipo_organizacion']
467
468    def __init__(self, *args, **kwargs):
469        super(FormupdatePerfilVoceros, self).__init__(*args, **kwargs)
470        self.fields['fk_tipo_documento'].widget.attrs.update({'class':'form-control',
471                                                              'readonly':'readonly'})
472        self.fields['fk_tipo_documento'].empty_label = 'Seleccione El tipo de Documento'
473        self.fields['fk_tipo_documento'].label = 'Tipo de Documento'
474        self.fields['fk_tipo_documento'].required = True
475
476        self.fields['documento_identidad'].widget.attrs.update({'class':'form-control',
477                                                      'readonly':'readonly'})
478        self.fields['documento_identidad'].label = 'Documento de Identidad'
479        self.fields['documento_identidad'].required=True
480
481        self.fields['tipo_organizacion'].widget.attrs.update({'class':'form-control'})
482        self.fields['tipo_organizacion'].empty_label = 'Seleccione Tipo Organizacion social'
483        self.fields['tipo_organizacion'].required = True
484
485        self.fields['fk_org_social'].widget.attrs.update({'class':'form-control'})
486        self.fields['fk_org_social'].empty_label = 'Seleccione la Organizacion social'
487        self.fields['fk_org_social'].label = 'Organizacion social'
488        self.fields['fk_org_social'].required = True
489
490        self.fields['fk_rol_unidad'].widget.attrs.update({'class':'form-control'})
491        self.fields['fk_rol_unidad'].empty_label = 'Seleccione el Rol'
492        self.fields['fk_rol_unidad'].label = 'Rol del Vocero'
493        self.fields['fk_rol_unidad'].required = True
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.