diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py
index 1a925d5..19b67f8 100644
--- a/sigi/apps/casas/admin.py
+++ b/sigi/apps/casas/admin.py
@@ -217,10 +217,10 @@ class ServicoInline(admin.TabularInline):
model = Servico
fields = ('link_url', 'contato_tecnico', 'contato_administrativo',
'hospedagem_interlegis', 'data_ativacao', 'data_alteracao',
- 'data_desativacao')
+ 'data_desativacao', 'link_servico')
readonly_fields = ['link_url', 'contato_tecnico', 'contato_administrativo',
'hospedagem_interlegis', 'data_ativacao',
- 'data_alteracao', 'data_desativacao']
+ 'data_alteracao', 'data_desativacao', 'link_servico']
extra = 0
max_num = 0
can_delete = False
@@ -234,6 +234,22 @@ class ServicoInline(admin.TabularInline):
ordering = ('-data_alteracao',)
+ def link_servico(self, obj):
+ if obj.pk is None:
+ return ""
+ url = reverse('admin:%s_%s_change' % (obj._meta.app_label, obj._meta.module_name), args=[obj.pk])
+ url = url + '?_popup=1'
+ return """
+
+ Editar
+ """ % (obj.pk, obj.pk, url)
+
+ link_servico.short_description = _(u'Editar Serviço')
+ link_servico.allow_tags = True
+
+ def has_add_permission(self, request):
+ return False
+
# class PlanoDiretorInline(admin.TabularInline):
# model = PlanoDiretor
@@ -275,7 +291,7 @@ class ConvenioFilter(admin.SimpleListFilter):
def lookups(self, request, model_admin):
return (
('SC', _(u"Sem nenhum convênio")),
- ('CC', _(u"Com algum convênio"))
+ ('CC', _(u"Com algum convênio")),
) + tuple([(p.pk, p.sigla) for p in Projeto.objects.all()])
def queryset(self, request, queryset):
@@ -289,6 +305,16 @@ class ConvenioFilter(admin.SimpleListFilter):
return queryset.distinct('municipio__uf__nome', 'nome')
+class ExcluirConvenioFilter(admin.SimpleListFilter):
+ title=_(u"Excluir convênio da pesquisa")
+ parameter_name = 'excluir_convenio'
+
+ def lookups(self, request, model_admin):
+ return tuple([(p.pk, p.sigla) for p in Projeto.objects.all()])
+
+ def queryset(self, request, queryset):
+ queryset = queryset.exclude(convenio__projeto_id=self.value())
+ return queryset.distinct('municipio__uf__nome', 'nome')
class ServicoFilter(admin.SimpleListFilter):
title = _(u"Serviço")
@@ -334,7 +360,7 @@ class OrgaoAdmin(ImageCroppingMixin, BaseModelAdmin):
'get_servicos')
list_display_links = ('sigla', 'nome',)
list_filter = ('tipo', ('gerentes_interlegis', GerentesInterlegisFilter),
- 'municipio__uf__nome', ConvenioFilter, ServicoFilter,
+ 'municipio__uf__nome', ConvenioFilter, ExcluirConvenioFilter, ServicoFilter,
'inclusao_digital',)
ordering = ('municipio__uf__nome', 'nome')
queryset = queryset_ascii
diff --git a/sigi/apps/convenios/models.py b/sigi/apps/convenios/models.py
index 84e683d..b8e35ac 100644
--- a/sigi/apps/convenios/models.py
+++ b/sigi/apps/convenios/models.py
@@ -249,18 +249,18 @@ class Convenio(models.Model):
if ((self.data_retorno_assinatura is None) and
(self.equipada and self.data_termo_aceite is not None)):
- return _(u"Convênio nº {number} - equipada em {date} pelo {project}"
+ return _(u"{project} nº {number} - equipada em {date}"
).format(number=self.num_convenio,
date=self.data_termo_aceite.strftime('%d/%m/%Y'),
project=self.projeto.sigla)
elif self.data_retorno_assinatura is None:
- return _(u"Convênio nº {number} - adesão ao projeto {project}, "
+ return _(u"{project}, nº {number}, início "
u"em {date}").format(number=self.num_convenio,
project=self.projeto.sigla,
date=self.data_adesao)
if ((self.data_retorno_assinatura is not None) and not
(self.equipada and self.data_termo_aceite is not None)):
- return _(u"Convênio nº {number} - conveniada ao {project} em "
+ return _(u"{project}, nº {number}, inicio em "
u"{date}. Status: {status}").format(
number=self.num_convenio,
project=self.projeto.sigla,
@@ -268,7 +268,7 @@ class Convenio(models.Model):
status=self.get_status())
if ((self.data_retorno_assinatura is not None) and
(self.equipada and self.data_termo_aceite is not None)):
- return _(u"Convẽnio nº {number} - conveniada ao {project} em {date}"
+ return _(u"{project}, nº {number}, início em {date}"
u" e equipada em {equipped_date}. Status: {status}"
).format(number=self.num_convenio,
project=self.projeto.sigla,
diff --git a/sigi/apps/servicos/admin.py b/sigi/apps/servicos/admin.py
index 8826b7b..3fb2d4c 100644
--- a/sigi/apps/servicos/admin.py
+++ b/sigi/apps/servicos/admin.py
@@ -226,6 +226,13 @@ class ContatosInline(FuncionariosInline):
def get_queryset(self, request):
return self.model.objects.all()
+ def get_queryset(self, request):
+ return (self.model.objects.exclude(desativado=True)
+ .extra(select={'ult_null': 'ult_alteracao is null'})
+ .order_by('ult_null', '-ult_alteracao')
+ # A função extra foi usada para quando existir um registro com o campo igual a null não aparecer na frente dos mais novos
+ )
+
class CasaAtendidaAdmin(BaseModelAdmin):
actions = None
list_display = ('codigo_interlegis', 'nome', 'get_servicos',)