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',)