source: sapic/users/forms.py @ f4c46a7

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

Optimizado formulario para la actualizacion de usuario

  • Propiedad mode establecida a 100644
File size: 9.3 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    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']
102
103    def __init__(self, *args, **kwargs):
104        super(FormularioUpdate, self).__init__(*args, **kwargs)
105
106        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
107        'placeholder': 'Nombres'})
108        self.fields['first_name'].required=True
109        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
110        'placeholder': 'Apellidos'})
111        self.fields['last_name'].required=True
112        self.fields['email'].widget.attrs.update({'class': 'form-control',
113        'placeholder': 'Email'})
114        self.fields['email'].required=True
115
116
117class FormularioAdminUpdate(ModelForm):
118
119    class Meta:
120        model = User
121        fields = ['first_name', 'last_name', 'email', 'groups',
122                  'is_staff', 'is_active']
123
124    def __init__(self, *args, **kwargs):
125         super(FormularioAdminUpdate, self).__init__(*args, **kwargs)
126
127         self.fields['first_name'].widget.attrs.update({'class': 'form-control',
128         'placeholder': 'Nombres'})
129         self.fields['first_name'].required=True
130         self.fields['last_name'].widget.attrs.update({'class': 'form-control',
131         'placeholder': 'Apellidos'})
132         self.fields['last_name'].required=True
133         self.fields['email'].widget.attrs.update({'class': 'form-control',
134         'placeholder': 'Email'})
135         self.fields['email'].required=True
136         self.fields['is_staff'].label= 'Es Administrador?'
137         self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
138         self.fields['is_active'].label= 'Estara Activo?'
139         self.fields['is_active'].widget.attrs.update({'class': 'form-control', 'checked': 'checked'})
140         self.fields['groups'].widget.attrs.update({'class': 'form-control'})
141
142
143class FormularioAdminRegistro(UserCreationForm):
144
145    class Meta:
146        model = User
147        fields = ['username', 'password1', 'password2',
148                  'first_name', 'last_name', 'email',
149                  'groups', 'is_staff', 'is_active']
150
151    def __init__(self, *args, **kwargs):
152        super(FormularioAdminRegistro, self).__init__(*args, **kwargs)
153
154        self.fields['first_name'].widget.attrs.update({'class': 'form-control',
155                                                       'placeholder':
156                                                       'Nombres'})
157        self.fields['first_name'].required = True
158        self.fields['last_name'].widget.attrs.update({'class': 'form-control',
159                                                      'placeholder':
160                                                      'Apellidos'})
161        self.fields['last_name'].required = True
162        self.fields['username'].widget.attrs.update({'class': 'form-control',
163                                                     'placeholder':
164                                                     'Nombre de usuario \
165                                                     (Username)'})
166        self.fields['username'].required = True
167        self.fields['password1'].widget.attrs.update({'class': 'form-control',
168                                                      'placeholder':
169                                                      'Contraseña'})
170        self.fields['password1'].required = True
171        self.fields['password2'].widget.attrs.update({'class': 'form-control',
172                                                      'placeholder':
173                                                      'Repite la Contraseña'})
174        self.fields['password2'].required = True
175        self.fields['email'].widget.attrs.update({'class': 'form-control',
176                                                  'placeholder': 'Email'})
177        self.fields['email'].required = True
178        self.fields['is_staff'].label = 'Es Administrador?'
179        self.fields['is_staff'].widget.attrs.update({'class': 'form-control'})
180        self.fields['is_active'].label = 'Estara Activo?'
181        self.fields['is_active'].widget.attrs.update({'class': 'form-control'})
182        self.fields['groups'].widget.attrs.update({'class': 'form-control'})
183
184    def clean(self):
185        cleaned_data = super(FormularioAdminRegistro, self).clean()
186        email = cleaned_data.get("email")
187
188        if email:
189            msg = "Error este email: %s, ya se encuentra asociado a una cuenta\
190                  " % (email)
191            try:
192                User.objects.get(email=email)
193                self.add_error('email', msg)
194            except:
195                pass
196
197
198class FormularioAdminRegPerfil(ModelForm):
199
200    class Meta:
201        model = UserProfile
202        fields = ['fk_tipo_documento', 'id_perfil']
203
204    def __init__(self, *args, **kwargs):
205        super(FormularioAdminRegPerfil, self).__init__(*args, **kwargs)
206        self.fields['fk_tipo_documento'].empty_label = 'Seleccione el Tipo de Documento'
207        self.fields['fk_tipo_documento'].widget.attrs.update({'class': 'form-control'})
208        self.fields['fk_tipo_documento'].label= 'Tipo de Documento'
209        self.fields['fk_tipo_documento'].required=True
210        self.fields['id_perfil'].widget.attrs.update({'class': 'form-control',
211                                                      'placeholder':'Documento de identidad'})
212        self.fields['id_perfil'].label= 'Documento de Identidad'
213        self.fields['id_perfil'].required=True
214
215
216class PasswordChangeForm(PasswordChangeForm):
217
218    def __init__(self, *args, **kwargs):
219        super(PasswordChangeForm, self).__init__(*args, **kwargs)
220
221        self.fields['old_password'].widget.attrs.update({'class': 'form-control',
222                                                  'placeholder': 'Contraseña Antigua'})
223        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
224                                                  'placeholder': 'Ingresa la nueva contraseña'})
225
226        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
227                                                  'placeholder': 'Repite la nueva contraseña'})
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.