Browse Source

decorator para validar diagnostico e checagem de servidor

diagnosticos
Felipe Vieira 13 years ago
parent
commit
2670c3fc22
  1. 21
      sigi/apps/diagnosticos/views.py
  2. 1
      sigi/settings.py
  3. 6
      sigi/templates/mobile/404.html

21
sigi/apps/diagnosticos/views.py

@ -7,6 +7,7 @@ from django.views.decorators.cache import cache_page
from sigi.apps.utils.decorators import login_required
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)
@ -16,17 +17,20 @@ def validate_diagnostico(func):
""" Retorna 404 caso o diagnostico esteja publicado
ou o usuario nao seja um membro da equipe
"""
msg = None
try:
diagnostico = Diagnostico.objects.filter(status=False).get(pk=id_diagnostico)
if (request.user.get_profile() 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
# renderiza a pagina de 404
context = RequestContext(request)
return render_to_response('mobile/404.html', {})
context = RequestContext(request, {'msg': msg})
return render_to_response('mobile/404.html', context)
return decorator
@cache_page(5)
@ -36,14 +40,15 @@ def lista(request):
que contenham o status de não publicado.
"""
# TODO Implementar pesquisa de diagnosticos, em que esses registros
# devem ser criado pelo servidor logado.
diagnosticos = Diagnostico.objects.filter(status=False).filter(
responsavel=request.user.get_profile())
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)
@cache_page(5)
@validate_diagnostico

1
sigi/settings.py

@ -127,6 +127,7 @@ TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.request',
'sigi.context_processors.charts_data',
)

6
sigi/templates/mobile/404.html

@ -4,10 +4,16 @@
<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