Conjunto def38c0 en sapic


Ignorar:
Fecha y hora:
10/08/2017 08:20:12 (hace 7 años)
Autor:
lhernandez <lhernandez@…>
Branches:
master, erwin, explicacion_situacional, gestion_usuarios, taller_django
Children:
fa1fdaf, 60cdc46, 8114206
Parents:
79326b0
Mensaje:

Estabilizando datos para el detalle de los usuarios, preparando para optimizar las vistas de detail perfil y modificar perfil de usuarios voceros

Ficheros:
5 editados

Leyenda

No modificado
Añadido
Eliminado
  • organizaciones/models.py

    r3b38b3f rdef38c0  
    6060            @return Devuelve los datos de la organizacion social
    6161        """
    62         return self.codigo
     62        return self.codigo + " | " + self.nombre
    6363
    6464
  • users/templates/users.other.options.html

    rae9886b rdef38c0  
    1919            <br>
    2020                <div class="row">
    21                     <a href="{% url 'users:data_detail' request.user.pk %}">
     21                    {% if 'Administradores' in request.session.grupos %}
     22                        <a href="{% url 'users:data_detail_admin' request.user.pk %}">
     23                      {% else %}
     24                        <a href="{% url 'users:data_detail' request.user.pk %}">
     25                      {% endif %}
    2226                        <img width="80" height="70" src="{% static 'media/iconos/mis_datos_basicos.png' %}"><spam> Consultar Mis datos Basicos</spam>
    2327                    </a>
     
    2529                <br>
    2630                <div class="row">
    27                     <a href="{% url 'users:update_perfil' request.user.pk %}">
     31                    {% if 'Administradores' in request.session.grupos %}
     32                        <a href="{% url 'users:update_perfil_admin' request.user.pk %}">
     33                    {% else %}
     34                        <a href="{% url 'users:update_perfil' request.user.pk %}">
     35                    {% endif %}
    2836                        <img width="80" height="70" src="{% static 'media/iconos/modificar_datos_basicos.png' %}"><spam> Modificar Mis datos Basicos</spam>
    2937                    </a>
  • users/urls.py

    r3b38b3f rdef38c0  
    3838        name="modal_perfil"),
    3939    url(r'^registrar/$', RegisterView.as_view(), name="registrar"),
     40    url(r'^modificar-mis-datos-admin/(?P<pk>\d+)/$', UpdatePerfilAdmin.as_view(), name="update_perfil_admin"),
     41    url(r'^mis-datos-admin/(?P<pk>\d+)/$', DataDetailAdminView.as_view(),
     42     name="data_detail_admin"),
    4043    url(r'^registrar-voceros/$', RegisterVocerosView.as_view(), name="registrar_voceros"),
     44
    4145
    4246    # Ajax list Users, for Administradores
  • users/views.py

    r3b38b3f rdef38c0  
    246246    """
    247247    template_name = 'users.data.detail.html'
    248     model = UserProfile
    249     group_required = [u"Administradores", u"Voceros", u"Integrantes"]
     248    model = UserProfileVocero
     249    group_required = [u"Voceros"]
    250250
    251251    def dispatch(self, request, *args, **kwargs):
     
    268268        return context
    269269
     270
     271class UpdatePerfilAdmin(LoginRequeridoPerAuth, MultiModelFormView):
     272    """!
     273    Actualizar el perfil del usuario
     274
     275    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
     276    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     277    @date 31-01-2017
     278    @version 1.0.0
     279    """
     280    model = UserProfile
     281    form_classes = {
     282      'user': FormularioUpdate,
     283      'user_perfil': FormularioAdminRegPerfil,
     284    }
     285    template_name = 'users.update.perfil.html'
     286    success_url = reverse_lazy('users:options')
     287    group_required = [u"Administradores"]
     288    record_id = None
     289
     290    def dispatch(self, request, *args, **kwargs):
     291        if int(request.user.pk) != int(self.kwargs.get('pk', None)):
     292            return redirect('utils:403error')
     293        return super(UpdatePerfilAdmin, self).dispatch(request, *args, **kwargs)
     294
     295    def get_context_data(self, **kwargs):
     296        """
     297        Carga el formulario en la vista,para registrar usuarios
     298        @return: El contexto con los objectos para la vista
     299        """
     300        context = super(UpdatePerfilAdmin, self).get_context_data(**kwargs)
     301        self.record_id = self.kwargs.get('pk', None)
     302        try:
     303            record = self.model.objects.select_related().get(fk_user=self.record_id)
     304        except User.DoesNotExist:
     305            record = None
     306        context['upUser'] = record
     307        return context
     308
     309    def get_objects(self, **kwargs):
     310        """
     311        Carga el formulario en la vista,para actualizar el perfil del  usuario
     312        @return: El contexto con los objectos para la vista
     313        """
     314        self.record_id = self.kwargs.get('pk', None)
     315        try:
     316            record = self.model.objects.select_related().get(fk_user=self.record_id)
     317        except User.DoesNotExist:
     318            record = None
     319        return {
     320          'user_perfil': record,
     321          'user': record.fk_user if record else None}
     322
     323
     324class DataDetailAdminView(LoginRequeridoPerAuth, ListView):
     325    """!
     326    Consultar los datos basicos del usuario
     327    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
     328    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     329    @date 21-07-2017
     330    @version 1.0.0
     331    """
     332    template_name = 'users.data.detail.html'
     333    model = UserProfile
     334    group_required = [u"Administradores"]
     335
     336    def dispatch(self, request, *args, **kwargs):
     337        if int(request.user.pk) != int(self.kwargs.get('pk', None)):
     338            return redirect('utils:403error')
     339        return super(DataDetailAdminView, self).dispatch(request, *args, **kwargs)
     340
     341    def get_context_data(self, **kwargs):
     342        """
     343        Carga el formulario en la vista,para registrar usuarios
     344        @return: El contexto con los objectos para la vista
     345        """
     346        context = super(DataDetailAdminView, self).get_context_data(**kwargs)
     347        self.record_id = self.kwargs.get('pk', None)
     348        try:
     349            record = self.model.objects.select_related().get(fk_user=self.record_id)
     350        except User.DoesNotExist:
     351            record = None
     352        context['upUser'] = record
     353        return context
     354
     355    def forms_valid(self, forms, **kwargs):
     356        """
     357        Valida el formulario de registro del perfil de usuario
     358        @return: Dirige con un mensaje de exito a el home
     359        """
     360        self.record_id = self.kwargs.get('pk', None)
     361        objeto = get_object_or_404(User, pk=self.record_id)
     362        if self.record_id is not None:
     363            messages.success(self.request, "Usuario %s Actualizado con exito\
     364                                           " % (str(objeto.username)))
     365        return super(UpdatePerfilAdmin, self).forms_valid(forms)
    270366
    271367
     
    396492    @version 1.0.0
    397493    """
    398     model = UserProfile
     494    model = UserProfileVocero
    399495    form_classes = {
    400496      'user': FormularioUpdate,
     
    403499    template_name = 'users.update.perfil.html'
    404500    success_url = reverse_lazy('users:options')
    405     group_required = [u"Administradores", u"Voceros", u"Integrantes"]
     501    group_required = [u"Voceros"]
    406502    record_id = None
    407503
     
    454550class RegisterVocerosView(LoginRequeridoPerAuth, MultiModelFormView):
    455551    """!
    456     Muestra el formulario de registro de usuarios
     552    Muestra el formulario de registro de usuarios voceros
    457553
    458554    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
     
    488584    def forms_valid(self, forms, **kwargs):
    489585        """
    490         Valida el formulario del proyecto
     586        Valida el formulario del perfil de vocero y usuario
    491587        @return: Dirige con un mensaje de exito al registro de proyecto
    492588        """
    493         # Campos para guardar los datos de un Nuevo User
     589        # Campos para instanciar el vocero y actualizar sus campos
    494590        documento_identidad = forms['user_vocero'].cleaned_data['documento']
    495591        tipo_documento = forms['user_vocero'].cleaned_data['fk_tipo_documento']
    496592        organizacion_social = forms['user_vocero'].cleaned_data['organizacion']
    497         comite = forms['user_vocero'].cleaned_data['comite_unidad_ejecutiva']   
     593        comite = forms['user_vocero'].cleaned_data['comite_unidad_ejecutiva']
     594
     595        # Verifica si el vocero tiene registro sobre la organizacion social
    498596        try:
    499597            vocero = Vocero.objects.get(fk_org_social=organizacion_social,
    500                                    fk_tipo_documento=tipo_documento,
    501                                    documento_identidad=documento_identidad)
     598                                        fk_tipo_documento=tipo_documento,
     599                                        documento_identidad=documento_identidad)
     600            actualizar_vocero = self.form_classes['user_vocero'](
     601                                self.request.POST,
     602                                instance=vocero)
     603            actualizar_vocero.save(commit=False)
     604
     605            # Crea el nuevo usuario a partir del formulario
     606            nuevo_usuario = forms['user'].save()
     607            # Agrega al grupo de voceros al nuevo usuario
     608            nuevo_usuario.groups.add(Group.objects.get(pk=2))
     609            # Actualiza los datos del vocero a parit de la instancia del formulario
     610            vocero_actualizado = actualizar_vocero.save()
     611            # Asocia el vocero con la nueva cuenta de usuario
     612            asociar_voceros = self.model(fk_user=nuevo_usuario,
     613                                         fk_vocero=vocero_actualizado)
     614            # Si el usuario pertenece a un comite lo asocia
     615            if comite is not None:
     616                try:
     617                    # Asocia el vocero con un comite de la unidad Ejecutiva
     618                    comite_unidad = VoceroComite(fk_vocero=vocero_actualizado,
     619                                                 fk_comite=comite)
     620                    comite_unidad.save()
     621                except:
     622                    messages.warning(self.request, "Existe un problema al \
     623                                                    relacionar el comite a \
     624                                                    este vocero")
     625            try:
     626                # Crea la cuenta de usuario vocero
     627                asociar_voceros.save()
     628                nombre_vocero = str(vocero_actualizado.nombres) + " \
     629                                " + str(vocero_actualizado.apellidos)
     630                messages.success(self.request, "Se creo el usuario %s, para el \
     631                                                vocero %s" % (
     632                                                nuevo_usuario.username,
     633                                                nombre_vocero))
     634            except:
     635                messages.error(self.request, "El voceros al que quieres asociar  \
     636                                              a la cuenta ya existe o ya se \
     637                                              encuentra asociado")
     638                return redirect(self.success_url)
     639
    502640        except:
    503             pass
    504         actualizar_vocero = self.form_classes['user_vocero'](self.request.POST, instance=vocero)
    505         actualizar_vocero.save(commit=False)
    506 
    507         nuevo_usuario = forms['user'].save()
    508         vocero_actualizado = actualizar_vocero.save()
    509         nuevo_usuario.groups.add(Group.objects.get(pk=2))
    510         asociar_voceros = self.model(fk_user=nuevo_usuario,
    511                                      fk_vocero=vocero_actualizado)
    512         if comite is not None:
    513             try:
    514                 comite_unidad = VoceroComite(fk_vocero=vocero_actualizado,
    515                                              fk_comite=fk_comite)
    516                 comite_unidad.save()
    517             except:
    518                 messages.warning(self.request, "Existe un problema al relacionar el comite a este vocero")
    519 
    520         try:
    521             asociar_voceros.save()
    522             nombre_vocero = str(vocero_actualizado.nombres) + " " + str(vocero_actualizado.apellidos)
    523             messages.success(self.request, "Se creo el usuario %s, para el vocero %s" % (nuevo_usuario.username, nombre_vocero))
    524         except:
    525             messages.error(self.request, "El voceros al que quieres asociar a la cuenta ya existe o ya se encuentra asociado" )
     641            messages.error(self.request, "Este Vocero %s, no se encuentra \
     642                                          asociado a esta organizacion: %s" % (
     643                                          documento_identidad,
     644                                          organizacion_social.nombre))
     645            return redirect(self.success_url)
    526646
    527647        return redirect(self.success_url)
  • utils/templates/base.inicio.html

    r79326b0 rdef38c0  
    6666                <div class="row">
    6767                    <div class="col-md-3">
     68                      {% if 'Administradores' in request.session.grupos %}
     69                        <a href="{% url 'users:data_detail_admin' request.user.pk %}">
     70                      {% else %}
    6871                        <a href="{% url 'users:data_detail' request.user.pk %}">
     72                      {% endif %}
    6973                        <img class="center-block" src="{% static 'media/iconos/mi_usuario.png' %}"  width="114px" height="82px"/>
    7074                        </a>
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.