From ce5d6c432aca72454077c6135d31b0ab418c5f01 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Thu, 25 Sep 2014 16:22:41 -0300 Subject: [PATCH] Retornado filtro de ocorrencias relacionadas ao usuario --- sigi/apps/ocorrencias/admin.py | 6 +++--- sigi/apps/ocorrencias/filters.py | 22 ++++++++++++++++++++++ sigi/apps/ocorrencias/models.py | 2 +- sigi/apps/servidores/models.py | 2 +- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 sigi/apps/ocorrencias/filters.py diff --git a/sigi/apps/ocorrencias/admin.py b/sigi/apps/ocorrencias/admin.py index 7543822..1b4707f 100644 --- a/sigi/apps/ocorrencias/admin.py +++ b/sigi/apps/ocorrencias/admin.py @@ -2,8 +2,9 @@ from django.contrib import admin from django.contrib.admin.views.main import ChangeList -from sigi.apps.servidores.models import Servidor +from filters import OcorrenciaListFilter from sigi.apps.ocorrencias.models import Ocorrencia, Comentario, Anexo, Categoria, TipoContato +from sigi.apps.servidores.models import Servidor class ComentarioViewInline(admin.TabularInline): @@ -58,10 +59,9 @@ class OcorrenciaChangeList(ChangeList): qs = qs.filter(servidor_registro=servidor) return qs - class OcorrenciaAdmin(admin.ModelAdmin): list_display = ('data_criacao', 'casa_legislativa', 'assunto', 'prioridade', 'status', 'data_modificacao', 'setor_responsavel',) - list_filter = ('categoria__nome', 'assunto', 'status', 'prioridade', 'setor_responsavel__nome', ) + list_filter = (OcorrenciaListFilter, 'status', 'prioridade', 'categoria__nome', 'setor_responsavel__nome', ) search_fields = ('casa_legislativa__search_text', 'assunto', 'servidor_registro__nome_completo', ) date_hierarchy = 'data_criacao' fields = ('casa_legislativa', 'categoria', 'tipo_contato', 'assunto', 'status', 'prioridade', 'descricao', 'servidor_registro', diff --git a/sigi/apps/ocorrencias/filters.py b/sigi/apps/ocorrencias/filters.py new file mode 100644 index 0000000..1567526 --- /dev/null +++ b/sigi/apps/ocorrencias/filters.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +from django.contrib import admin +from sigi.apps.servidores.models import Servidor + + +class OcorrenciaListFilter(admin.SimpleListFilter): + + title = u'Relacionadas a Mim' + parameter_name = 'minhas' + + def lookups(self, request, model_admin): + return ( + ('S', u'Atribuídos ao meu setor'), + ('M', u'Registrados por mim'), + ) + + def queryset(self, request, queryset): + servidor = Servidor.objects.get(user=request.user) + if self.value() == 'S': + return queryset.filter(setor_responsavel=servidor.servico) + if self.value() == 'M': + return queryset.filter(servidor_registro=servidor) diff --git a/sigi/apps/ocorrencias/models.py b/sigi/apps/ocorrencias/models.py index c6e259a..f60cc45 100644 --- a/sigi/apps/ocorrencias/models.py +++ b/sigi/apps/ocorrencias/models.py @@ -3,7 +3,7 @@ from django.db import models class Categoria(models.Model): - nome = models.CharField(u"Nome Categoria", max_length=50) + nome = models.CharField(u"Categoria", max_length=50) descricao = models.TextField(u'descrição', blank=True, null=True) setor_responsavel = models.ForeignKey('servidores.Servico', verbose_name=u"Setor responsável") diff --git a/sigi/apps/servidores/models.py b/sigi/apps/servidores/models.py index 78aad58..794634c 100644 --- a/sigi/apps/servidores/models.py +++ b/sigi/apps/servidores/models.py @@ -27,7 +27,7 @@ class Servico(models.Model): """ Modelo para representação dos Serviços de uma Subsecretaria """ - nome = models.CharField(u'Nome Serviço', max_length=250, null=True) + nome = models.CharField(u'Setor', max_length=250, null=True) sigla = models.CharField(max_length=10, null=True) subsecretaria = models.ForeignKey(Subsecretaria, null=True) # servidor responsavel por chefiar o serviço