Browse Source

modificando maneira de extender a classe user

diagnosticos
Felipe Vieira 13 years ago
parent
commit
757b8cebd3
  1. 7
      sigi/apps/diagnosticos/decorators.py
  2. 8
      sigi/apps/diagnosticos/views.py
  3. 16
      sigi/apps/servidores/models.py
  4. 3
      sigi/settings.py
  5. 6
      sigi/templates/mobile/404.html

7
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

8
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()
servidor = request.user.servidor
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)
@cache_page(5)

16
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

3
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',

6
sigi/templates/mobile/404.html

@ -4,16 +4,10 @@
<h1>Ocorreu um erro</h1>
{% endblock cabecalho %}
{% block corpo %}
{% if msg %}
<p>{{msg}}</p>
<a href="{{ request.META.HTTP_REFERER }}" data-icon="arrow-l"
data-direction="reverse" data-role="button" data-theme="c" class="ui-btn-left">Voltar</a>
{% else %}
<p>A página que está procurando não existe. </p>
<p>Verifique se o diagnóstico, categoria ou pergunta está cadastrado no sistema.</p>
<a href="{% url lista_diagnosticos %}" data-icon="arrow-l"
data-direction="reverse" data-role="button" data-theme="c" class="ui-btn-left">Voltar</a>
{% endif %}
{% endblock corpo %}
{% block rodape %}

Loading…
Cancel
Save