Conjunto e81243a en gestor_consulta


Ignorar:
Fecha y hora:
19/09/2017 15:06:23 (hace 7 años)
Autor:
Antonio Araujo <aaraujo@…>
Branches:
master
Children:
d45fcdc
Parents:
abd93af
Mensaje:

Modificaciones para la serialización de un formulario Django.

Ficheros:
1 añadido
5 editados

Leyenda

No modificado
Añadido
Eliminado
  • gestor_consulta/urls.py

    rd7b19bc re81243a  
    1717from django.contrib import admin
    1818from rest.routers import router
     19from rest_framework_jwt.views import obtain_jwt_token
     20
    1921
    2022urlpatterns = [
     
    2527    url(r'^captcha/', include('captcha.urls')),
    2628    url(r'^api/', include('rest_framework.urls', namespace='rest_framework')),
    27     url(r'^api/', include(router.urls))
     29    url(r'^api/', include(router.urls)),
     30    url(r'^api-token-auth/', obtain_jwt_token),
    2831]
  • requirements.txt

    rabd93af re81243a  
    11Django==1.11.2
    22Pillow==4.1.1
     3PyJWT==1.5.2
     4argparse==1.2.1
     5codegen==1.0
     6dateutils==0.6.6
    37django-filter==1.0.4
     8django-rest-framework-braces==0.2.2
    49django-simple-captcha==0.5.5
    510djangorestframework==3.6.3
     11djangorestframework-jwt==1.11.0
    612olefile==0.44
     13patterns==0.3
     14python-dateutil==2.6.1
    715pytz==2017.2
    816six==1.10.0
     17wsgiref==0.1.2
  • rest/routers.py

    rb1cb066 re81243a  
    1616from consulta.rest import ConsultaViewSet
    1717from base.rest import EntidadViewSet, MunicipioViewSet, ParroquiaViewSet
     18from users.rest import FormViewSet
    1819
    1920router = DefaultRouter()
     
    2324router.register(r'municipio', MunicipioViewSet, 'municipio')
    2425router.register(r'parroquia', ParroquiaViewSet, 'parroquia')
     26router.register(r'registro', FormViewSet, 'registro')
  • users/forms.py

    rd7b19bc re81243a  
    3333from captcha.fields import CaptchaField
    3434
     35from django.core.validators import RegexValidator
    3536
    3637class LoginForm(forms.Form):
     
    4546    ## Campo de la constraseña
    4647    contrasena = CharField()
    47    
     48
    4849    ## Nombre del usuario
    4950    usuario = CharField()
    50    
     51
    5152    ## Formulario de recordarme
    5253    remember_me = BooleanField()
     
    5859        """!
    5960        Metodo que sobreescribe cuando se inicializa el formulario
    60    
     61
    6162        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    6263        @copyright GNU/GPLv2
     
    7879        self.fields['captcha'].label = "Captcha"
    7980        self.fields['captcha'].widget.attrs.update({'class': 'validate'})
    80        
     81
    8182    def clean(self):
    8283        """!
    8384        Método que valida si el usuario a autenticar es valido
    84    
     85
    8586        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    8687        @copyright GNU/GPLv2
     
    9596            msg = "Verifique su usuario o contraseña"
    9697            self.add_error('usuario', msg)
    97        
     98
    9899    class Meta:
    99100        fields = ('usuario', 'contrasena', 'remember_me')
     
    112113        """!
    113114        Metodo que sobreescribe cuando se inicializa el formulario
    114    
     115
    115116        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    116117        @copyright GNU/GPLv2
     
    122123        """
    123124        super(UserRegisterForm, self).__init__(*args, **kwargs)
    124        
     125
    125126        # Si se ha seleccionado un estado establece el listado de municipios y elimina el atributo disable
    126127        if 'estado' in self.data and self.data['estado']:
     
    132133                self.fields['parroquia'].widget.attrs.pop('disabled')
    133134                self.fields['parroquia'].queryset=Parroquia.objects.filter(municipio=self.data['municipio'])
    134        
     135
    135136        self.fields['estado'].choices = cargar_entidad()
    136137        self.fields['municipio'].choices = cargar_municipios()
    137138        self.fields['parroquia'].choices = cargar_parroquias()
    138    
     139
     140
    139141    ## Nombre de usuario
    140142    username = forms.CharField(max_length=30,
     
    142144        label="Nombre de Usuario"
    143145        )
    144    
     146
    145147    ## Contraseña
    146148    password = forms.CharField(max_length=20,
     
    148150        label="Constraseña"
    149151        )
    150    
     152
    151153    ## Repita la Contraseña
    152154    password_repeat = forms.CharField(max_length=20,
     
    154156        label="Repita su constraseña"
    155157        )
    156    
     158
    157159    ## nombre
    158160    nombre = forms.CharField(max_length=100,
     
    160162        label="Nombre"
    161163        )
    162    
     164
    163165    ## apellido
    164166    apellido = forms.CharField(max_length=100,
     
    166168        label="Apellido"
    167169        )
    168    
     170
    169171    ## correo
    170172    email = forms.EmailField(
     
    172174        label="Correo"
    173175        )
    174    
     176
    175177    ## cedula
    176178    cedula = CedulaField()
    177    
     179
    178180    ## estado
    179181    estado = forms.ChoiceField(widget=forms.Select(attrs={
    180182        'onchange': "actualizar_combo(this.value,'base','Municipio','entidad','codigo','nombre','id_municipio');$('select').material_select();"}))
    181    
     183
    182184    ## municipio
    183185    municipio = forms.ChoiceField(widget=forms.Select(attrs={'disabled':'disabled',
    184186        'onchange': "actualizar_combo(this.value,'base','Parroquia','municipio','codigo','nombre','id_parroquia');$('select').material_select();"}))
    185    
     187
    186188    ## parroquia
    187189    parroquia = forms.ChoiceField(widget=forms.Select(attrs={'disabled':'disabled'}))
     
    189191    ## Campo del captcha
    190192    captcha = CaptchaField()
    191    
     193
    192194    def clean_password_repeat(self):
    193195        """!
    194196        Método que valida si las contraseñas coinciden
    195    
     197
    196198        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    197199        @copyright GNU/GPLv2
     
    205207            raise forms.ValidationError("La contraseña no coincide")
    206208        return password_repeat
    207    
     209
    208210    def clean_cedula(self):
    209211        """!
    210212        Método que valida si la cedula es única
    211    
     213
    212214        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    213215        @copyright GNU/GPLv2
     
    220222            raise forms.ValidationError("La cédula ingresada ya existe")
    221223        return cedula
    222    
     224
    223225    def clean_email(self):
    224226        """!
    225227        Método que valida si el correo es única
    226    
     228
    227229        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    228230        @copyright GNU/GPLv2
     
    235237            raise forms.ValidationError("El correo ingresado ya existe")
    236238        return email
    237        
     239
    238240    class Meta:
    239241        model = User
    240242        exclude = ['is_staff','is_active','date_joined']
    241        
     243
    242244class PerfilForm(forms.ModelForm):
    243245    """!
     
    252254        """!
    253255        Metodo que sobreescribe cuando se inicializa el formulario
    254    
     256
    255257        @author Rodrigo Boet (rboet at cenditel.gob.ve)
    256258        @copyright GNU/GPLv2
     
    262264        """
    263265        super(PerfilForm, self).__init__(*args, **kwargs)
    264        
     266
    265267        self.fields['estado'].choices = cargar_entidad()
    266268        self.fields['municipio'].choices = cargar_municipios()
    267269        self.fields['parroquia'].choices = cargar_parroquias()
    268    
     270
    269271    ## cedula
    270272    cedula = CedulaField()
    271    
     273
    272274    ## estado
    273275    estado = forms.ChoiceField(widget=forms.Select(attrs={
    274276        'onchange': "actualizar_combo(this.value,'base','Municipio','entidad','codigo','nombre','id_municipio');$('select').material_select();"}))
    275    
     277
    276278    ## municipio
    277279    municipio = forms.ChoiceField(widget=forms.Select(attrs={
    278280        'onchange': "actualizar_combo(this.value,'base','Parroquia','municipio','codigo','nombre','id_parroquia');$('select').material_select();"}))
    279    
     281
    280282    ## parroquia
    281283    parroquia = forms.ChoiceField(widget=forms.Select())
    282    
     284
    283285    class Meta:
    284286        model = Perfil
    285287        exclude = ['user','parroquia']
    286        
    287        
     288
     289
    288290class PasswordResetForm(PasswordResetForm):
    289291    """!
     
    311313            except:
    312314                self.add_error('email', msg)
    313                
    314                
     315
     316
    315317
    316318class PasswordConfirmForm(SetPasswordForm):
     
    329331        self.fields['new_password2'].widget.attrs.update({'class': 'input-field',
    330332                                                  'placeholder': 'Repita su Contraseña'})
     333
     334class UserForm(forms.Form):
     335    ## Nombre de usuario
     336    username = forms.CharField(max_length=30,
     337        widget=forms.TextInput(),
     338        label="Nombre de Usuario"
     339        )
     340
     341    ## Contraseña
     342    password = forms.CharField(max_length=20,
     343        widget=forms.TextInput(attrs={'type':'password'}),
     344        label="Constraseña"
     345        )
     346
     347    ## Repita la Contraseña
     348    password_repeat = forms.CharField(max_length=20,
     349        widget=forms.TextInput(attrs={'type':'password'}),
     350        label="Repita su constraseña"
     351        )
     352
     353    ## nombre
     354    nombre = forms.CharField(max_length=100,
     355        widget=forms.TextInput(),
     356        label="Nombre"
     357        )
     358
     359    ## apellido
     360    apellido = forms.CharField(max_length=100,
     361        widget=forms.TextInput(),
     362        label="Apellido"
     363        )
     364
     365    ## correo
     366    email = forms.EmailField(
     367        widget=forms.TextInput(),
     368        label="Correo"
     369        )
     370
     371    cedula = forms.CharField(max_length=9,
     372        validators=[RegexValidator(
     373            regex='^[V|E][0-9]{7,8}',
     374            message='La cédula no está en el formato indicado'
     375            )],
     376        label="Cedula"
     377        )
     378
     379    # validations
     380    def clean_password_repeat(self):
     381        """!
     382        Método que valida si las contraseñas coinciden
     383
     384        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     385        @copyright GNU/GPLv2
     386        @date 01-03-2017
     387        @param self <b>{object}</b> Objeto que instancia la clase
     388        @return Retorna el campo con la validacion
     389        """
     390        print("******clean_password_repeat")
     391        password = self.cleaned_data['password']
     392        password_repeat = self.cleaned_data['password_repeat']
     393        if(password_repeat!=password):
     394            raise forms.ValidationError("La contraseña no coincide")
     395        return password_repeat
     396
     397    def clean_cedula(self):
     398        """!
     399        Método que valida si la cedula es única
     400
     401        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     402        @copyright GNU/GPLv2
     403        @date 01-03-2017
     404        @param self <b>{object}</b> Objeto que instancia la clase
     405        @return Retorna el campo con la validacion
     406        """
     407        cedula = self.cleaned_data['cedula']
     408        if(validate_cedula(cedula)):
     409            raise forms.ValidationError("La cédula ingresada ya existe")
     410        return cedula
     411
     412    def clean_email(self):
     413        """!
     414        Método que valida si el correo es única
     415
     416        @author Rodrigo Boet (rboet at cenditel.gob.ve)
     417        @copyright GNU/GPLv2
     418        @date 01-03-2017
     419        @param self <b>{object}</b> Objeto que instancia la clase
     420        @return Retorna el campo con la validacion
     421        """
     422        email = self.cleaned_data['email']
     423        if(validate_email(email)):
     424            raise forms.ValidationError("El correo ingresado ya existe")
     425        return email
     426
     427
     428    def validate(self, data):
     429        print(data)
     430        return data
  • users/serializers.py

    rd821e95 re81243a  
    22from rest_framework import serializers
    33from django.contrib.auth.models import User
     4from .forms import UserForm
     5from .models import Perfil
     6from drf_braces.serializers.form_serializer import FormSerializer
    47
    58
     
    811    Metodo que permite serializar el modelo User
    912
    10     @author Argenis Osorio (aosorio at cenditel.gob.ve)
     13    @author Antonio Araujo (aaraujo at cenditel.gob.ve)
    1114    @copyright GNU/GPLv2
    12     @date 17-08-2017
     15    @date 31-08-2017
    1316    @param serializers.HyperlinkedModelSerializer <b>{object}</b> Objeto del serializer
    1417    @return Retorna los datos de contexto
     
    1720    class Meta:
    1821        model = User
    19         fields = ('id', 'username', 'email',)
     22        fields = ('username', 'first_name', 'last_name', 'email')
     23
     24class PerfilSerializer(serializers.ModelSerializer):
     25    """!
     26    Metodo que permite serializar el modelo Perfil
     27
     28    @author Antonio Araujo (aaraujo at cenditel.gob.ve)
     29    @copyright GNU/GPLv2
     30    @date 31-08-2017
     31    @param serializers.HyperlinkedModelSerializer <b>{object}</b> Objeto del serializer
     32    @return Retorna los datos de contexto
     33    """
     34    user = UserSerializer(read_only=True)
     35
     36    class Meta:
     37        model = Perfil
     38        fields = ('cedula', 'parroquia', 'user')
     39
     40class RegistroSerializer(FormSerializer):
     41    """!
     42    Clase serializador de registro de usuario
     43
     44    @author Antonio Araujo (aaraujo at cenditel.gob.ve)
     45    @copyright GNU/GPLv2
     46    @date 31-08-2017
     47    @param serializers.HyperlinkedModelSerializer <b>{object}</b> Objeto del serializer
     48    @return Retorna los datos de contexto
     49    """
     50    class Meta(object):
     51            form = UserForm
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.