Conjunto de cambios e44bd19 en seiven para usuario


Ignorar:
Fecha y hora:
05/09/2016 16:26:35 (hace 8 años)
Autor:
Ing. Roldan D. Vargas G <rvargas@…>
Branches:
master, carga
Children:
52b5505
Parents:
595c7b5
Mensaje:

modificación en la autenticación de usuario referente a el estatus de activo del usuario de acuerdo a los niveles de acceso

Ubicación:
usuario
Ficheros:
3 editados

Leyenda

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

    rd8d20e7 re44bd19  
    1616
    1717from base.constant import (
    18     TIPO_DOCUMENTO_IDENTIFICACION, TIPO_DOCUMENTO_IDENTIFICACION_LIST, FORTALEZA_CONTRASENHA
     18    TIPO_DOCUMENTO_IDENTIFICACION, TIPO_DOCUMENTO_IDENTIFICACION_LIST, FORTALEZA_CONTRASENHA, OCUPACION
    1919)
    2020from base.fields import TipoDocumentoField
     
    2525from django.forms import (
    2626    ModelForm, TextInput, EmailInput, CharField, EmailField, PasswordInput,
    27     Select, ModelChoiceField)
     27    Select, ModelChoiceField, ChoiceField
     28)
    2829from django.utils.encoding import python_2_unicode_compatible
    2930from django.utils.translation import ugettext_lazy as _
    3031
    31 from base.models import Institucion, Ocupacion
     32from base.models import Institucion
    3233from base.widgets import TipoDocumentoWidgetReadOnly
    3334from .models import UserProfile
     
    195196
    196197    ## Listado de instituciones registradas en el sistema
    197     ocupacion = ModelChoiceField(
    198         label=_(u"Ocupacion"), queryset=Ocupacion.objects.all(), empty_label=_(u"Seleccione..."),
     198    ocupacion = ChoiceField(
     199        label=_(u"Ocupacion"), choices=OCUPACION,
    199200        widget=Select(attrs={
    200201            'class': 'select2 select2-offscreen form-control', 'data-toggle': 'tooltip',
    201             'title': _(u"Seleccione la ocupación o profesión del usuario a registrar")
     202            'title': _(u"Seleccione la ocupación del usuario a registrar")
    202203        })
    203204    )
  • usuario/models.py

    rfbb0f12 re44bd19  
    1919from django.utils.translation import ugettext_lazy as _
    2020
    21 from base.constant import TIPO_DOCUMENTO_IDENTIFICACION
    22 from base.models import Institucion, Ocupacion
     21from base.constant import TIPO_DOCUMENTO_IDENTIFICACION, OCUPACION, NIVELES_ACCESO
     22from base.models import Institucion
    2323
    2424
     
    4646    )
    4747
     48    ## Contiene datos de la ocupación, oficio o profesión del usuario
     49    ocupacion = models.CharField(max_length=2, choices=OCUPACION[1:])
     50
    4851    ## Establece la última fecha de modificación de la contraseña, lo cual permite establecer la caducidad de la misma
    4952    fecha_modpass = models.DateTimeField(null=True, help_text=_("Fecha en la que se modificó la contraseña"))
     
    5255    institucion = models.ForeignKey(Institucion, help_text=_("Institucion de la cual proviene el usuario"))
    5356
    54     ## Contiene datos de la ocupación, oficio o profesión del usuario
    55     ocupacion = models.ForeignKey(Ocupacion, help_text=_("Ocupación del usuario"))
     57    ## Indica el nivel de acceso que tiene el usuario
     58    nivel_acceso = models.PositiveSmallIntegerField(choices=NIVELES_ACCESO, null=True)
     59
    5660
    5761    ## Establece la relación entre el usuario y el perfil
  • usuario/views.py

    rc03a223 re44bd19  
    7777    """
    7878    form = AutenticarForm()
     79    alert = None
    7980
    8081    if request.method == "POST":
     
    8586                request.POST['tipo_documento_0'], request.POST['tipo_documento_1']
    8687            )
    87 
    88             usuario = authenticate(username=username, password=str(request.POST['clave']))
    89 
    90             if usuario is not None:
    91                 login(request, usuario)
    92                 usr = User.objects.get(username=username)
    93                 usr.last_login = datetime.now()
    94                 usr.save()
     88            if User.objects.filter(username=username, is_active=True):
     89                usuario = authenticate(username=username, password=str(request.POST['clave']))
     90
     91                if usuario is not None:
     92                    login(request, usuario)
     93                    usr = User.objects.get(username=username)
     94                    usr.last_login = datetime.now()
     95                    usr.save()
     96                else:
     97                    logger.error(str(_("Error al autenticar el usuario [%s]") % username))
     98
     99                logger.info(str(_("Acceso al sistema por el usuario [%s]") % username))
     100                return HttpResponseRedirect(urlresolvers.reverse("inicio"))
    95101            else:
    96                 logger.error(str(_("Error al autenticar el usuario [%s]") % username))
    97 
    98             logger.info(str(_("Acceso al sistema por el usuario [%s]") % username))
    99             return HttpResponseRedirect(urlresolvers.reverse("inicio"))
    100 
    101     return render_to_response('base.template.html', {'form': form}, context_instance=RequestContext(request))
     102                alert = str(_("Su usuario se encuentra inactivo. Intente más tarde..."))
     103
     104
     105    return render_to_response('base.template.html', {'form': form, 'alert': alert}, context_instance=RequestContext(request))
    102106
    103107
     
    267271        if calcular_diferencia_fechas(user.date_joined) <= CADUCIDAD_LINK_REGISTRO:
    268272            if key.strip() == hash_user(user, is_new_user=True).decode():
    269                 user.is_active = True
    270                 user.save()
     273                if UserProfile.objects.filter(user=user, ocupacion='ES'):
     274                    # Si es estudiante el sistema activa automáticamente el usuario,
     275                    # en caso contrario debe esperar por la confirmación del administrador
     276                    user.is_active = True
     277                    user.save()
     278                    user_profile = UserProfile.objects.get(user=user)
     279                    user_profile.nivel_acceso = 3
     280                else:
     281                    mensaje = str(_("El enlace fue verificado y el administrador esta evaluando sus credenciales para "
     282                                    "otorgarle un nivel de acceso al sistema"))
    271283                login_url = "%s?userid=%s&key=%s" % (
    272284                    urlresolvers.reverse('acceso'), user.username, hash_user(user, is_new_user=True)
     
    321333        self.object.save()
    322334
     335
    323336        ## Crea el perfil del usuario
    324 
    325337        UserProfile.objects.create(
    326338            tipo_documento=form.cleaned_data['tipo_documento'],
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.