Conjunto de cambios be8d917 en consulta_publica para users


Ignorar:
Fecha y hora:
24/04/2017 15:24:32 (hace 7 años)
Autor:
rudmanmrrod <rudman22@…>
Branches:
master, base, constituyente, estudiantes, general, plan_patria, sala
Children:
e9ca953
Parents:
bf6bc0b
Mensaje:

Agregado el perfil de usuario, modificados los requirements y cambiado el motor de BD a postgres

Ubicación:
users
Ficheros:
1 añadido
4 editados

Leyenda

No modificado
Añadido
Eliminado
  • users/forms.py

    rbf6bc0b rbe8d917  
    3030    )
    3131from base.models import Municipio, Parroquia
     32from .models import Perfil
    3233
    3334class LoginForm(forms.Form):
     
    228229        model = User
    229230        exclude = ['is_staff','is_active','date_joined']
     231       
     232class 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  
    105105                      {{ form.estado.label }}
    106106                  </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">
    108108                      {{ form.estado }}
    109109                      {% include 'base.forms.errors.html' with form_errors=form.estado.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
    110110                  </div>
    111                   <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
    112111              </div>
    113112          </div>
     
    118117                      {{ form.municipio.label }}
    119118                  </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">
    121120                      {{ form.municipio }}
    122121                      {% include 'base.forms.errors.html' with form_errors=form.municipio.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
    123122                  </div>
    124                   <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
    125123              </div>
    126124          </div>
     
    131129                      {{ form.parroquia.label }}
    132130                  </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">
    134132                      {{ form.parroquia }}
    135133                      {% include 'base.forms.errors.html' with form_errors=form.parroquia.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
    136134                  </div>
    137                   <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
    138135              </div>
    139136          </div><br><br><br>
  • users/urls.py

    rbf6bc0b rbe8d917  
    1414# @version 1.0
    1515from django.conf.urls import url
    16 from .views import LoginView, LogoutView, RegisterView
     16from .views import *
    1717
    1818urlpatterns = [
     
    2020    url(r'^logout$', LogoutView.as_view(), name = "logout"),
    2121    url(r'^register$', RegisterView.as_view(), name = "register"),
     22    url(r'^update/(?P<pk>\d+)$', PerfilUpdate.as_view(), name = "update"),
    2223]
  • users/views.py

    rbf6bc0b rbe8d917  
    1313# @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
    1414# @version 1.0
    15 from django.shortcuts import render
    16 from django.views.generic import FormView, RedirectView, CreateView
     15from django.shortcuts import render, redirect
     16from django.views.generic import FormView, RedirectView, CreateView, UpdateView
    1717from django.contrib.auth.mixins import LoginRequiredMixin
     18from django.contrib.messages.views import SuccessMessageMixin
    1819from django.contrib.auth import authenticate, logout, login
    1920from django.core.urlresolvers import reverse_lazy
    2021from django.contrib.auth.models import User, Group
    2122from django.contrib import messages
    22 from .forms import LoginForm, UserRegisterForm
     23from .forms import LoginForm, UserRegisterForm, PerfilForm
    2324from .models import Perfil
    2425from base.models import Parroquia
     
    99100
    100101
    101 class RegisterView(FormView):
     102class RegisterView(SuccessMessageMixin,FormView):
    102103    """!
    103104    Muestra el formulario de registro de usuarios
     
    111112    form_class = UserRegisterForm
    112113    success_url = reverse_lazy('login')
     114    success_message = "Se registró con éxito"
    113115    model = User
    114116
     
    144146       
    145147        return super(RegisterView, self).form_valid(form)
     148   
     149class 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.