From 757b8cebd3f174b9d95693dfec80a0370f6ccd18 Mon Sep 17 00:00:00 2001 From: Felipe Vieira Date: Tue, 6 Dec 2011 19:19:26 +0000 Subject: [PATCH] modificando maneira de extender a classe user --- sigi/apps/diagnosticos/decorators.py | 7 +------ sigi/apps/diagnosticos/views.py | 14 ++++---------- sigi/apps/servidores/models.py | 16 ++++++++++++++++ sigi/settings.py | 3 --- sigi/templates/mobile/404.html | 14 ++++---------- 5 files changed, 25 insertions(+), 29 deletions(-) diff --git a/sigi/apps/diagnosticos/decorators.py b/sigi/apps/diagnosticos/decorators.py index 39b909e..2429237 100644 --- a/sigi/apps/diagnosticos/decorators.py +++ b/sigi/apps/diagnosticos/decorators.py @@ -2,10 +2,7 @@ from django.template import RequestContext from django.shortcuts import render_to_response - from sigi.apps.diagnosticos.models import Diagnostico -from sigi.apps.servidores.models import Servidor - def validate_diagnostico(func): def decorator(request, id_diagnostico, *args, **kwargs): @@ -15,11 +12,9 @@ def validate_diagnostico(func): msg = None try: diagnostico = Diagnostico.objects.filter(status=False).get(pk=id_diagnostico) - if (request.user.get_profile() in diagnostico.get_membros()): + if (request.user.servidor in diagnostico.get_membros()): # continua o processamento normal da view return func(request, id_diagnostico, *args, **kwargs) - except Servidor.DoesNotExist: - msg = "Para acessar os diagnóstico você precisa ter um servidor cadastrado na sua conta." except Diagnostico.DoesNotExist: pass diff --git a/sigi/apps/diagnosticos/views.py b/sigi/apps/diagnosticos/views.py index 361b908..ad6945f 100644 --- a/sigi/apps/diagnosticos/views.py +++ b/sigi/apps/diagnosticos/views.py @@ -11,7 +11,6 @@ from sigi.apps.utils.decorators import login_required from sigi.apps.diagnosticos.decorators import validate_diagnostico from sigi.apps.diagnosticos.models import Diagnostico, Categoria from sigi.apps.casas.models import Funcionario -from sigi.apps.servidores.models import Servidor from sigi.apps.diagnosticos.forms import (DiagnosticoMobileForm, CasaLegislativaMobileForm, FuncionariosMobileForm) @@ -22,15 +21,10 @@ def lista(request): """Consulta os diagnosticos do servidor logado, que contenham o status de não publicado. """ - try: - servidor = request.user.get_profile() - diagnosticos = servidor.get_diagnosticos(publicado=False) - context = RequestContext(request, {'diagnosticos': diagnosticos}) - return render_to_response('diagnosticos/diagnosticos_list.html', context) - except Servidor.DoesNotExist: - msg = "Para acessar os diagnóstico você precisa ter um servidor cadastrado na sua conta." - context = RequestContext(request, {'msg': msg}) - return render_to_response('mobile/404.html', context) + servidor = request.user.servidor + diagnosticos = servidor.get_diagnosticos(publicado=False) + context = RequestContext(request, {'diagnosticos': diagnosticos}) + return render_to_response('diagnosticos/diagnosticos_list.html', context) @cache_page(5) diff --git a/sigi/apps/servidores/models.py b/sigi/apps/servidores/models.py index 3e3fe88..327af23 100644 --- a/sigi/apps/servidores/models.py +++ b/sigi/apps/servidores/models.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- from django.db import models +from django.db.models.signals import post_save from django.contrib.contenttypes import generic from django.contrib.auth.models import User @@ -141,6 +142,21 @@ class Servidor(models.Model): def __unicode__(self): return self.nome_completo +# Soluçao alternativa para extender o usuário do django +# Acesso do servidor de um objeto user +User.profile = property(lambda user: Servidor.objects.get(user)) + +# Sinal para ao criar um usuário criar um servidor +# baseado no nome contino no LDAP +def create_user_profile(sender, instance, created, **kwargs): + if created: + Servidor.objects.create( + user=instance, + nome_completo= "%s %s" % (instance.first_name, instance.last_name) + ) + +post_save.connect(create_user_profile, sender=User) + class Funcao(models.Model): """ Modelo para guardar o histórico de funções dos servidores no Interlegis diff --git a/sigi/settings.py b/sigi/settings.py index bb40469..1e88c92 100644 --- a/sigi/settings.py +++ b/sigi/settings.py @@ -100,9 +100,6 @@ AUTH_LDAP_MIRROR_GROUPS = True AUTH_LDAP_CACHE_GROUPS = True AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600 -# Django Auth Configurations -AUTH_PROFILE_MODULE = 'servidores.Servidor' - # Keep ModelBackend around for per-user permissions and maybe a local superuser. AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', diff --git a/sigi/templates/mobile/404.html b/sigi/templates/mobile/404.html index 35029c3..584add7 100644 --- a/sigi/templates/mobile/404.html +++ b/sigi/templates/mobile/404.html @@ -4,16 +4,10 @@

Ocorreu um erro

{% endblock cabecalho %} {% block corpo %} - {% if msg %} -

{{msg}}

- Voltar - {% else %} -

A página que está procurando não existe.

-

Verifique se o diagnóstico, categoria ou pergunta está cadastrado no sistema.

- Voltar - {% endif %} +

A página que está procurando não existe.

+

Verifique se o diagnóstico, categoria ou pergunta está cadastrado no sistema.

+ Voltar {% endblock corpo %} {% block rodape %}