source: sapic/users/forms.py @ 57f6191

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

Agregado estructura del proyecto, desarrollado e implementado la gestion de usuario, por estabilizar la gestion de usuario segun diagramas de secuencias

  • Propiedad mode establecida a 100644
File size: 7.8 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
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    def __init__(self, *args, **kwargs):
89        super(SetPasswordForm, self).__init__(*args, **kwargs)
90
91        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
92                                                  'placeholder': 'Ingresa la nueva contraseña'})
93
94        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
95                                                  'placeholder': 'Repite la nueva contraseña'})
96
97
98class FormularioUpdate(ModelForm):
99    class Meta:
100        model = User
101        fields = ['first_name', 'last_name', 'email', 'groups',
102                  'is_staff', 'is_active']
103
104    def __init__(self, *args, **kwargs):
105        super(FormularioUpdate, self).__init__(*args, **kwargs)
106
107        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
108        'placeholder': 'Nombres'})
109        self.fields['first_name'].required=True
110        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
111        'placeholder': 'Apellidos'})
112        self.fields['last_name'].required=True
113        self.fields['email'].widget.attrs.update({'class': 'form-control',
114        'placeholder': 'Email'})
115        self.fields['email'].required=True
116        self.fields['is_staff'].label= 'Es Administrador?'
117        self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
118        self.fields['is_active'].label= 'Estara Activo?'
119        self.fields['is_active'].widget.attrs.update({'class': 'form-control', 'checked': 'checked'})
120        self.fields['groups'].widget.attrs.update({'class': 'form-control'})
121
122
123class FormularioAdminRegistro(UserCreationForm):
124
125    class Meta:
126        model = User
127        fields = ['username', 'password1', 'password2',
128                  'first_name', 'last_name', 'email',
129                  'groups', 'is_staff', 'is_active']
130
131    def __init__(self, *args, **kwargs):
132        super(FormularioAdminRegistro, self).__init__(*args, **kwargs)
133
134        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
135                                                       'placeholder':
136                                                       'Nombres'})
137        self.fields['first_name'].required = True
138        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
139                                                      'placeholder':
140                                                      'Apellidos'})
141        self.fields['last_name'].required = True
142        self.fields['username'].widget.attrs.update({'class': 'form-control',
143                                                     'placeholder':
144                                                     'Nombre de usuario \
145                                                     (Username)'})
146        self.fields['username'].required = True
147        self.fields['password1'].widget.attrs.update({'class': 'form-control',
148                                                      'placeholder':
149                                                      'Contraseña'})
150        self.fields['password1'].required = True
151        self.fields['password2'].widget.attrs.update({'class': 'form-control',
152                                                      'placeholder':
153                                                      'Repite la Contraseña'})
154        self.fields['password2'].required = True
155        self.fields['email'].widget.attrs.update({'class': 'form-control',
156                                                  'placeholder': 'Email'})
157        self.fields['email'].required = True
158        self.fields['is_staff'].label = 'Es Administrador?'
159        self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
160        self.fields['is_active'].label = 'Estara Activo?'
161        self.fields['is_active'].widget.attrs.update({'class': 'form-control'})
162        self.fields['groups'].widget.attrs.update({'class': 'form-control'})
163
164    def clean(self):
165        cleaned_data = super(FormularioAdminRegistro, self).clean()
166        email = cleaned_data.get("email")
167
168        if email:
169            msg = "Error este email: %s, ya se encuentra asociado a una cuenta\
170                  " % (email)
171            try:
172                User.objects.get(email=email)
173                self.add_error('email', msg)
174            except:
175                pass
176
177
178class FormularioAdminRegPerfil(ModelForm):
179
180    class Meta:
181        model = UserProfile
182        fields = ['fk_tipo_documento', 'id_perfil']
183
184    def __init__(self, *args, **kwargs):
185        super(FormularioAdminRegPerfil, self).__init__(*args, **kwargs)
186        self.fields['fk_tipo_documento'].widget.attrs.update({'class': 'form-control'})
187        self.fields['fk_tipo_documento'].label= 'Tipo de Documento'
188        self.fields['fk_tipo_documento'].required=True
189        self.fields['id_perfil'].widget.attrs.update({'class': 'form-control',
190                                                      'placeholder':'Documento de identidad'})
191        self.fields['id_perfil'].label= 'Cargo que tiene'
192        self.fields['id_perfil'].required=True
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.