Browse Source

Novos filtros para serviços e convênios

pull/66/head
Sesostris Vieira 4 years ago
parent
commit
107de2ce36
  1. 5
      sigi/apps/convenios/admin.py
  2. 50
      sigi/apps/servicos/admin.py
  3. 4
      sigi/apps/servidores/models.py

5
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'

50
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'<a href="%s" target="_blank">%s</a>' % (url, obj.erro_atualizacao)
get_link_erro.allow_tags = True
get_link_erro.short_description = _(u"Erro na atualização")

4
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

Loading…
Cancel
Save