- Fecha y hora:
- 24/04/2017 15:24:32 (hace 7 años)
- Branches:
- master, base, constituyente, estudiantes, general, plan_patria, sala
- Children:
- e9ca953
- Parents:
- bf6bc0b
- Ubicación:
- users
- Ficheros:
-
- 1 añadido
- 4 editados
Leyenda
- No modificado
- Añadido
- Eliminado
-
users/forms.py
rbf6bc0b rbe8d917 30 30 ) 31 31 from base.models import Municipio, Parroquia 32 from .models import Perfil 32 33 33 34 class LoginForm(forms.Form): … … 228 229 model = User 229 230 exclude = ['is_staff','is_active','date_joined'] 231 232 class PerfilForm(forms.ModelForm): 233 """! 234 Formulario del perfil 235 236 @author Rodrigo Boet (rboet at cenditel.gob.ve) 237 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 238 @date 24-04-2017 239 @version 1.0.0 240 """ 241 def __init__(self, *args, **kwargs): 242 """! 243 Metodo que sobreescribe cuando se inicializa el formulario 244 245 @author Rodrigo Boet (rboet at cenditel.gob.ve) 246 @copyright GNU/GPLv2 247 @date 24-04-2017 248 @param self <b>{object}</b> Objeto que instancia la clase 249 @param args <b>{list}</b> Lista de los argumentos 250 @param kwargs <b>{dict}</b> Diccionario con argumentos 251 @return Retorna el formulario validado 252 """ 253 super(PerfilForm, self).__init__(*args, **kwargs) 254 255 self.fields['estado'].choices = cargar_entidad() 256 self.fields['municipio'].choices = cargar_municipios() 257 self.fields['parroquia'].choices = cargar_parroquias() 258 259 ## cedula 260 cedula = CedulaField() 261 262 ## estado 263 estado = forms.ChoiceField(widget=forms.Select(attrs={'class': 'form-control input-md', 264 'onchange': "actualizar_combo(this.value,'base','Municipio','entidad','codigo','nombre','id_municipio')"})) 265 266 ## municipio 267 municipio = forms.ChoiceField(widget=forms.Select(attrs={'class': 'form-control input-md', 268 'onchange': "actualizar_combo(this.value,'base','Parroquia','municipio','codigo','nombre','id_parroquia')"})) 269 270 ## parroquia 271 parroquia = forms.ChoiceField(widget=forms.Select(attrs={'class': 'form-control input-md',})) 272 273 class Meta: 274 model = Perfil 275 exclude = ['user','parroquia'] -
users/templates/user.register.html
rbf6bc0b rbe8d917 105 105 {{ form.estado.label }} 106 106 </label> 107 <div class="col-md- 4 col-xs-4 col-sm-4">107 <div class="col-md-5 col-xs-5 col-sm-5"> 108 108 {{ form.estado }} 109 109 {% include 'base.forms.errors.html' with form_errors=form.estado.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} 110 110 </div> 111 <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>112 111 </div> 113 112 </div> … … 118 117 {{ form.municipio.label }} 119 118 </label> 120 <div class="col-md- 4 col-xs-4 col-sm-4">119 <div class="col-md-5 col-xs-5 col-sm-5"> 121 120 {{ form.municipio }} 122 121 {% include 'base.forms.errors.html' with form_errors=form.municipio.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} 123 122 </div> 124 <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>125 123 </div> 126 124 </div> … … 131 129 {{ form.parroquia.label }} 132 130 </label> 133 <div class="col-md- 4 col-xs-4 col-sm-4">131 <div class="col-md-5 col-xs-5 col-sm-5"> 134 132 {{ form.parroquia }} 135 133 {% include 'base.forms.errors.html' with form_errors=form.parroquia.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %} 136 134 </div> 137 <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>138 135 </div> 139 136 </div><br><br><br> -
users/urls.py
rbf6bc0b rbe8d917 14 14 # @version 1.0 15 15 from django.conf.urls import url 16 from .views import LoginView, LogoutView, RegisterView16 from .views import * 17 17 18 18 urlpatterns = [ … … 20 20 url(r'^logout$', LogoutView.as_view(), name = "logout"), 21 21 url(r'^register$', RegisterView.as_view(), name = "register"), 22 url(r'^update/(?P<pk>\d+)$', PerfilUpdate.as_view(), name = "update"), 22 23 ] -
users/views.py
rbf6bc0b rbe8d917 13 13 # @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 14 14 # @version 1.0 15 from django.shortcuts import render 16 from django.views.generic import FormView, RedirectView, CreateView 15 from django.shortcuts import render, redirect 16 from django.views.generic import FormView, RedirectView, CreateView, UpdateView 17 17 from django.contrib.auth.mixins import LoginRequiredMixin 18 from django.contrib.messages.views import SuccessMessageMixin 18 19 from django.contrib.auth import authenticate, logout, login 19 20 from django.core.urlresolvers import reverse_lazy 20 21 from django.contrib.auth.models import User, Group 21 22 from django.contrib import messages 22 from .forms import LoginForm, UserRegisterForm 23 from .forms import LoginForm, UserRegisterForm, PerfilForm 23 24 from .models import Perfil 24 25 from base.models import Parroquia … … 99 100 100 101 101 class RegisterView( FormView):102 class RegisterView(SuccessMessageMixin,FormView): 102 103 """! 103 104 Muestra el formulario de registro de usuarios … … 111 112 form_class = UserRegisterForm 112 113 success_url = reverse_lazy('login') 114 success_message = "Se registró con éxito" 113 115 model = User 114 116 … … 144 146 145 147 return super(RegisterView, self).form_valid(form) 148 149 class PerfilUpdate(SuccessMessageMixin,LoginRequiredMixin,UpdateView): 150 """! 151 Clase que gestiona la actualización del perfil 152 153 @author Rodrigo Boet (rboet at cenditel.gob.ve) 154 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 155 @date 24-04-2017 156 @version 1.0.0 157 """ 158 model = Perfil 159 template_name = "perfil.update.html" 160 form_class = PerfilForm 161 success_message = "Se actualizó el perfil con éxito" 162 163 def dispatch(self, request, *args, **kwargs): 164 """ 165 Metodo que redirecciona al usuario si no cuenta con los permisos 166 167 @author Rodrigo Boet (rboet at cenditel.gob.ve) 168 @copyright GNU/GPLv2 169 @date 24-04-2017 170 @param self <b>{object}</b> Objeto que instancia la clase 171 @param request <b>{object}</b> Objeto que contiene la petición 172 @param args <b>{object}</b> Objeto que contiene los argumentos 173 @param kwargs <b>{object}</b> Objeto que contiene los datos de contexto 174 @return: Direcciona al 403 si no es su perfil 175 """ 176 if int(self.request.user.id) != int(self.kwargs['pk']): 177 return redirect('base_403') 178 return super(PerfilUpdate, self).dispatch(request, *args, **kwargs) 179 180 def get_success_url(self): 181 """! 182 Metodo que permite definir la url de dirección al ser válido el formulario 183 184 @author Rodrigo Boet (rboet at cenditel.gob.ve) 185 @copyright GNU/GPLv2 186 @date 24-04-2017 187 @param self <b>{object}</b> Objeto que instancia la clase 188 @return Retorna la url 189 """ 190 return reverse_lazy('update', 191 kwargs={'pk': self.kwargs['pk']}) 192 193 def get_initial(self): 194 """! 195 Metodo para agregar valores de inicio al formulario 196 197 @author Rodrigo Boet (rboet at cenditel.gob.ve) 198 @copyright GNU/GPLv2 199 @date 24-04-2017 200 @param self <b>{object}</b> Objeto que instancia la clase 201 @return Retorna los valores iniciales 202 """ 203 initial = super(PerfilUpdate, self).get_initial() 204 perfil = Perfil.objects.get(pk=self.kwargs['pk']) 205 initial['parroquia'] = perfil.parroquia_id 206 initial['municipio'] = perfil.parroquia.municipio_id 207 initial['estado'] = perfil.parroquia.municipio.entidad_id 208 209 return initial 210 211 def form_valid(self,form): 212 """! 213 Metodo que valida si el formulario es valido 214 215 @author Rodrigo Boet (rboet at cenditel.gob.ve) 216 @copyright GNU/GPLv2 217 @date 24-04-2017 218 @param self <b>{object}</b> Objeto que instancia la clase 219 @param form <b>{object}</b> Objeto que contiene el formulario de registro 220 @return Retorna el formulario validado 221 """ 222 parroquia = Parroquia.objects.get(id=form.cleaned_data['parroquia']) 223 224 self.object = form.save() 225 self.object.cedula = form.cleaned_data['cedula'] 226 self.object.parroquia = parroquia 227 self.object.save() 228 229 return super(PerfilUpdate, self).form_valid(form)
Nota: Vea TracChangeset
para ayuda en el uso del visor de conjuntos de cambios.