diff --git a/sigi/apps/convenios/admin.py b/sigi/apps/convenios/admin.py index ad4d7bc..ce5a6fe 100644 --- a/sigi/apps/convenios/admin.py +++ b/sigi/apps/convenios/admin.py @@ -12,6 +12,7 @@ from sigi.apps.convenios.views import adicionar_convenios_carrinho from sigi.apps.utils import queryset_ascii from sigi.apps.utils.base_admin import BaseModelAdmin from sigi.apps.servidores.models import Servidor +from sigi.apps.casas.admin import GerentesInterlegisFilter # class TramitacaoInline(admin.TabularInline): # model = Tramitacao @@ -68,7 +69,9 @@ class ConvenioAdmin(BaseModelAdmin): 'status_convenio', 'link_sigad', 'data_retorno_assinatura', 'duracao', 'projeto', 'status', 'acompanha',) list_display_links = ('num_convenio', 'casa_legislativa',) - list_filter = ('status', ('acompanha', AcompanhaFilter), 'projeto', + list_filter = ('status', ('acompanha', AcompanhaFilter), + ('casa_legislativa__gerentes_interlegis', + GerentesInterlegisFilter), 'projeto', 'casa_legislativa__tipo', 'conveniada','equipada', 'casa_legislativa__municipio__uf',) #date_hierarchy = 'data_adesao' diff --git a/sigi/apps/servicos/admin.py b/sigi/apps/servicos/admin.py index 9dcb4b9..843ee3a 100644 --- a/sigi/apps/servicos/admin.py +++ b/sigi/apps/servicos/admin.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +from datetime import date +from dateutil.relativedelta import relativedelta from django.contrib import admin from django.core.urlresolvers import reverse from django.forms.models import ModelForm @@ -50,6 +52,49 @@ class TipoServicoAdmin(BaseModelAdmin): list_display = ('id', 'sigla', 'nome', 'qtde_casas_atendidas', ) ordering = ['id'] +class DataUtimoUsoFilter(admin.SimpleListFilter): + title = _(u"Atualização") + parameter_name = 'atualizacao' + + def lookups(self, request, model_admin): + return ( + ('err', _(u"Erro na verificação")), + ('year', _(u"Sem atualização há um ano ou mais")), + ('semester', _(u"Sem atualização de seis meses a um ano")), + ('quarter', _(u"Sem atualização de três a seis meses")), + ('month', _(u"Sem atualização de um a três meses")), + ('week', _(u"Sem atualização de uma semana a um mês")), + ('updated', _(u"Atualizado na última semana")), + ) + + def queryset(self, request, queryset): + if self.value() is not None: + queryset = queryset.exclude(tipo_servico__string_pesquisa="") + if self.value() == 'err': + queryset = queryset.exclude(erro_atualizacao="") + elif self.value() == 'year': + limite = date.today() - relativedelta(years=1) + queryset = queryset.filter(data_ultimo_uso__lte=limite) + else: + de = date.today() - ( + relativedelta(months=6) if self.value() == 'semester' else + relativedelta(months=3) if self.value() == 'quarter' else + relativedelta(months=1) if self.value() == 'month' else + relativedelta(days=7) if self.value() == 'week' else + relativedelta(days=0) + ) + ate = date.today() - ( + relativedelta(years=1) if self.value() == 'semester' else + relativedelta(months=6) if self.value() == 'quarter' else + relativedelta(months=3) if self.value() == 'month' else + relativedelta(months=1) if self.value() == 'week' else + relativedelta(days=0) + ) + print (de, ate) + queryset = queryset.filter(data_ultimo_uso__range=(de, ate)) + + return queryset + class ServicoAdmin(BaseModelAdmin): form = ServicoFormAdmin @@ -69,7 +114,7 @@ class ServicoAdmin(BaseModelAdmin): 'fields': ('data_alteracao', 'data_desativacao', 'motivo_desativacao',) })) readonly_fields = ('casa_legislativa', 'data_ativacao', 'data_alteracao') - list_filter = ('tipo_servico', 'hospedagem_interlegis', 'data_ultimo_uso', 'casa_legislativa__municipio__uf', ) + list_filter = ('tipo_servico', 'hospedagem_interlegis', DataUtimoUsoFilter, 'casa_legislativa__municipio__uf', ) list_display_links = [] ordering = ('casa_legislativa__municipio__uf', 'casa_legislativa', 'tipo_servico',) inlines = (LogServicoInline,) @@ -96,7 +141,8 @@ class ServicoAdmin(BaseModelAdmin): url = obj.url if url[-1] != '/': url += '/' - url += obj.tipo_servico.string_pesquisa + if obj.tipo_servico.string_pesquisa: + url += obj.tipo_servico.string_pesquisa.splitlines()[0].split(" ")[0] return u'%s' % (url, obj.erro_atualizacao) get_link_erro.allow_tags = True get_link_erro.short_description = _(u"Erro na atualização") diff --git a/sigi/apps/servidores/models.py b/sigi/apps/servidores/models.py index db80fee..0915855 100644 --- a/sigi/apps/servidores/models.py +++ b/sigi/apps/servidores/models.py @@ -76,7 +76,9 @@ class Servidor(models.Model): # Soluçao alternativa para extender o usuário do django # Acessa do servidor de um objeto user criando um profile # baseado nos dados do LDAP -User.servidor = property(lambda user: Servidor.objects.get(user=user)) +User.servidor = property(lambda user: Servidor.objects.get(user=user) + if Servidor.objects.filter(user=user).exists() + else None) # Sinal para ao criar um usuário criar um servidor # baseado no nome contino no LDAP