diff --git a/sigi/apps/casas/admin.py b/sigi/apps/casas/admin.py
index 0de2cd7..96b6933 100644
--- a/sigi/apps/casas/admin.py
+++ b/sigi/apps/casas/admin.py
@@ -1,9 +1,5 @@
-from unicodedata import name
-from urllib import response
from django.contrib import admin
-from django.contrib.admin.options import ModelAdmin
from django.contrib.contenttypes.admin import GenericTabularInline
-from django.http import HttpResponseRedirect
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _
@@ -11,17 +7,14 @@ from django_weasyprint.views import WeasyTemplateResponse
from import_export.fields import Field
from sigi.apps.casas.forms import OrgaoForm
from sigi.apps.casas.models import Orgao, Presidente, Funcionario, TipoOrgao
-# from sigi.apps.casas.views import report_complete, labels_report, export_csv, \
-# labels_report_sem_presidente, report, \
-# adicionar_casas_carrinho
from sigi.apps.casas.filters import (GerentesInterlegisFilter, ConvenioFilter,
- ExcluirConvenioFilter)
+ ExcluirConvenioFilter, ServicoFilter)
from sigi.apps.contatos.models import Telefone
-from sigi.apps.convenios.models import Convenio, Projeto
+from sigi.apps.convenios.models import Convenio
from sigi.apps.ocorrencias.models import Ocorrencia
-from sigi.apps.servicos.models import Servico, TipoServico
+from sigi.apps.servicos.models import Servico
from sigi.apps.servicos.filters import ServicoAtivoFilter
-from sigi.apps.utils import field_label, queryset_ascii
+from sigi.apps.utils import queryset_ascii
from sigi.apps.utils.mixins import CartExportReportMixin, LabeledResourse
@@ -228,9 +221,9 @@ class ServicoInline(admin.TabularInline):
class OcorrenciaInline(admin.TabularInline):
model = Ocorrencia
fields = ('data_criacao', 'assunto', 'prioridade', 'status',
- 'data_modificacao', 'setor_responsavel', 'link_editar',)
+ 'data_modificacao', 'link_editar',)
readonly_fields = ('data_criacao', 'assunto', 'prioridade', 'status',
- 'data_modificacao', 'setor_responsavel', 'link_editar',)
+ 'data_modificacao', 'link_editar',)
extra = 0
max_num = 0
can_delete = False
@@ -260,12 +253,10 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
list_display = ('id', 'sigla', 'nome', 'get_uf', 'get_gerentes',
'get_convenios', 'get_servicos')
list_display_links = ('sigla', 'nome',)
- # list_filter = ('tipo', ('gerentes_interlegis', GerentesInterlegisFilter),
- # 'municipio__uf__nome', ConvenioFilter, ServicoAtivoFilter,
- # ExcluirConvenioFilter, ServicoFilter, 'inclusao_digital',)
list_filter = ('tipo', ('gerentes_interlegis', GerentesInterlegisFilter),
- 'municipio__uf__nome', ConvenioFilter, ExcluirConvenioFilter,
+ 'municipio__uf__nome', ConvenioFilter,
('servico__data_desativacao', ServicoAtivoFilter),
+ ExcluirConvenioFilter, ServicoFilter,
'inclusao_digital',)
ordering = ('municipio__uf__nome', 'nome')
queryset = queryset_ascii
@@ -318,25 +309,17 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
get_convenios.short_description = _('Convênios')
def get_servicos(self, obj):
- #TODO: Descomentar após migrar a app Servicos
- # return mark_safe(
- # '
' +
- # ''.join(
- # [f'- {s}
'
- # for s in obj.servico_set.filter(
- # data_desativacao__isnull=True)
- # ]
- # ) +
- # '
'
- # )
- return "TODO: Descomentar após migrar a app Servicos"
- get_servicos.short_description = _('Serviços')
-
- def changelist_view(self, request, extra_context=None):
- return super(OrgaoAdmin, self).changelist_view(
- request,
- extra_context={'query_str': '?' + request.META['QUERY_STRING']}
+ return mark_safe(
+ '' +
+ ''.join(
+ [f'- {s}
'
+ for s in obj.servico_set.filter(
+ data_desativacao__isnull=True)
+ ]
+ ) +
+ '
'
)
+ get_servicos.short_description = _('Serviços')
def lookup_allowed(self, lookup, value):
return (super(OrgaoAdmin, self).lookup_allowed(lookup, value) or
@@ -380,7 +363,6 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
'casas': self.get_queryset(request).order_by('municipio__uf','nome'),
'title': _('Relatório completo')
}
- print (context)
return WeasyTemplateResponse(
filename='relatorio_completo.pdf',
request=request,
@@ -390,85 +372,10 @@ class OrgaoAdmin(CartExportReportMixin, admin.ModelAdmin):
)
relatorio_completo.title = _('Relatório completo')
- # def etiqueta_presidente_25(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_presidente_25.title = _('Etiqueta 2 x 5 com presidente')
- # etiqueta_presidente_25.icon = 'label'
-
- # def etiqueta_presidente_39(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_presidente_39.title = _('Etiqueta 3 x 9 com presidente')
- # etiqueta_presidente_39.icon = 'label'
-
- # def etiqueta_25(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_25.title = _('Etiqueta 2 x 5 sem presidente')
- # etiqueta_25.icon = 'label'
-
- # def etiqueta_39(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_39.title = _('Etiqueta 3 x 9 sem presidente')
- # etiqueta_39.icon = 'label'
-
- # def etiqueta_parlamentar_25(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_parlamentar_25.title = _('Etiqueta 2 x 5 parlamentares')
- # etiqueta_parlamentar_25.icon = 'label'
-
- # def etiqueta_parlamentar_39(self, request):
- # return HttpResponseRedirect('..')
- # etiqueta_parlamentar_39.title = _('Etiqueta 3 x 9 parlamentares')
- # etiqueta_parlamentar_39.icon = 'label'
-
- #TODO: Resolver depois - sigi-boys???
- # def etiqueta(self, request, queryset):
- # return labels_report(request, queryset=queryset)
- # etiqueta.short_description = _("Gerar etiqueta(s) da(s) casa(s) "
- # "selecionada(s)")
-
- # def etiqueta_sem_presidente(self, request, queryset):
- # return labels_report_sem_presidente(request, queryset=queryset)
- # etiqueta_sem_presidente.short_description = _("Gerar etiqueta(s) sem "
- # "presidente da(s) casa(s) "
- # "selecionada(s)")
-
- # def relatorio(self, request, queryset):
- # return report(request, queryset=queryset)
- # relatorio.short_description = _("Exportar a(s) casa(s) selecionada(s) "
- # "para PDF")
-
- # def relatorio_completo(self, request, queryset):
- # return report_complete(request, queryset=queryset)
- # relatorio_completo.short_description = _("Gerar relatório completo da(s) "
- # "casa(s) selecionada(s)")
-
- # def relatorio_csv(self, request, queryset):
- # return export_csv(request)
- # relatorio_csv.short_description = _("Exportar casa(s) selecionada(s) "
- # "para CSV")
-
- # def adicionar_casas(self, request, queryset):
- # if 'carrinho_casas' in request.session:
- # # if request.session.has_key('carrinho_casas'):
- # q1 = len(request.session['carrinho_casas'])
- # else:
- # q1 = 0
- # response = adicionar_casas_carrinho(request, queryset=queryset)
- # q2 = len(request.session['carrinho_casas'])
- # quant = q2 - q1
- # if quant:
- # self.message_user(request, str(q2 - q1) + " " +
- # _("Casas Legislativas adicionadas no carrinho"))
- # else:
- # self.message_user(request, _("As Casas Legislativas selecionadas "
- # "já foram adicionadas anteriormente"))
- # return HttpResponseRedirect('.')
-
- # adicionar_casas.short_description = _("Armazenar casas no carrinho para "
- # "exportar")
-
def get_actions(self, request):
actions = super(OrgaoAdmin, self).get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
- return actions
\ No newline at end of file
+ return actions
+
+admin.site.register(TipoOrgao)
\ No newline at end of file
diff --git a/sigi/apps/casas/filters.py b/sigi/apps/casas/filters.py
index 2905b7e..f9aacb4 100644
--- a/sigi/apps/casas/filters.py
+++ b/sigi/apps/casas/filters.py
@@ -1,14 +1,16 @@
from django.contrib import admin
from django.utils.translation import gettext as _
from sigi.apps.servidores.models import Servidor
-from sigi.apps.convenios.models import Convenio, Projeto
+from sigi.apps.convenios.models import Projeto
+from sigi.apps.servicos.models import TipoServico
class GerentesInterlegisFilter(admin.filters.RelatedFieldListFilter):
-
def __init__(self, *args, **kwargs):
super(GerentesInterlegisFilter, self).__init__(*args, **kwargs)
- gerentes = Servidor.objects.filter(casas_que_gerencia__isnull=False).order_by('nome_completo').distinct()
+ gerentes = Servidor.objects.filter(
+ casas_que_gerencia__isnull=False).order_by(
+ 'nome_completo').distinct()
self.lookup_choices = [(x.id, x) for x in gerentes]
class ConvenioFilter(admin.SimpleListFilter):
@@ -43,57 +45,41 @@ class ExcluirConvenioFilter(admin.SimpleListFilter):
if (self.value() is None):
return queryset
else:
- queryset = queryset.exclude(convenio__projeto_id=self.value()).distinct('municipio__uf__nome', 'nome')
+ queryset = queryset.exclude(
+ convenio__projeto_id=self.value()).distinct(
+ 'municipio__uf__nome', 'nome')
return queryset
-# class ServicoFilter(admin.SimpleListFilter):
-# title = _("Serviço")
-# parameter_name = 'servico'
-
-# def lookups(self, request, model_admin):
-# return (
-# ('SS', _("Sem nenhum serviço")),
-# ('CS', _("Com algum serviço")),
-# ('CH', _("Com algum serviço de hospedagem")),
-# ('CR', _("Apenas serviço de registro")),
-# ) + tuple([(p.pk, p.nome) for p in TipoServico.objects.all()])
-
-# def queryset(self, request, queryset):
-# if self.value() is not None:
-# if self.value() == 'SS':
-# queryset = queryset.filter(servico=None)
-# elif self.value() == 'CS':
-# queryset = queryset.exclude(servico=None).filter(
-# servico__data_desativacao__isnull=True)
-# elif self.value() == 'CR':
-# queryset = queryset.exclude(servico__tipo_servico__modo='H') \
-# .exclude(servico=None)
-# elif self.value() == 'CH':
-# queryset = queryset.filter(
-# servico__tipo_servico__modo='H',
-# servico__data_desativacao__isnull=True
-# )
-# else:
-# queryset = queryset.filter(
-# servico__tipo_servico_id=self.value()
-# )
+class ServicoFilter(admin.SimpleListFilter):
+ title = _("Serviço")
+ parameter_name = 'servico'
-# return queryset.distinct('municipio__uf__nome', 'nome')
-
-# class ServicoAtivoFilter(admin.SimpleListFilter):
-# title = _("Serviço ativo")
-# parameter_name = 'ativo'
+ def lookups(self, request, model_admin):
+ return (
+ ('SS', _("Sem nenhum serviço")),
+ ('CS', _("Com algum serviço")),
+ ('CH', _("Com algum serviço de hospedagem")),
+ ('CR', _("Apenas serviço de registro")),
+ ) + tuple([(p.pk, p.nome) for p in TipoServico.objects.all()])
-# def lookups(self, request, model_admin):
-# return (
-# ('ativo', _("Ativo")),
-# ('desativado', _("Desativado")),
-# )
+ def queryset(self, request, queryset):
+ if self.value() is not None:
+ if self.value() == 'SS':
+ queryset = queryset.filter(servico=None)
+ elif self.value() == 'CS':
+ queryset = queryset.exclude(servico=None).filter(
+ servico__data_desativacao__isnull=True)
+ elif self.value() == 'CR':
+ queryset = queryset.exclude(servico__tipo_servico__modo='H') \
+ .exclude(servico=None)
+ elif self.value() == 'CH':
+ queryset = queryset.filter(
+ servico__tipo_servico__modo='H',
+ servico__data_desativacao__isnull=True
+ )
+ else:
+ queryset = queryset.filter(
+ servico__tipo_servico_id=self.value()
+ )
-# def queryset(self, request, queryset):
-# if self.value() is not None:
-# if self.value() == 'ativo':
-# queryset = queryset.filter(servico__data_desativacao__isnull=True)
-# else:
-# queryset = queryset.filter(servico__data_desativacao__isnull=False)
-# return queryset
+ return queryset.distinct('municipio__uf__nome', 'nome')
diff --git a/sigi/apps/casas/reports.py b/sigi/apps/casas/reports.py
deleted file mode 100644
index b718055..0000000
--- a/sigi/apps/casas/reports.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-from geraldo import Report, DetailBand, Label, ObjectValue, ReportGroup, ReportBand, landscape, SubReport, BAND_WIDTH, SystemField
-from geraldo.graphics import Image
-
-from django.templatetags.static import static
-from django.utils.translation import gettext as _
-from reportlab.lib.enums import TA_CENTER
-from reportlab.lib.pagesizes import A4
-from reportlab.lib.units import cm
-
-from sigi.apps.relatorios.reports import ReportDefault
-
-
-def string_to_cm(texto):
- tamanho = 0
- minEspeciais = {
- 'f': 0.1,
- 'i': 0.05,
- 'j': 0.05,
- 'l': 0.05,
- 'm': 0.2,
- 'r': 0.1,
- 't': 0.15,
- }
- maiuEspeciais = {
- 'I': 0.05,
- 'J': 0.15,
- 'L': 0.15,
- 'P': 0.15,
- }
- for c in texto:
- if c > 'a' and c < 'z':
- if c in minEspeciais:
- tamanho += minEspeciais[c]
- else:
- tamanho += 0.17
- else:
- if c in maiuEspeciais:
- tamanho += maiuEspeciais[c]
- else:
- tamanho += 0.2
- return tamanho
-
-
-def label_text(text):
- return "%s: " % text
-
-
-class CasasLegislativasLabels(Report):
-
- """
- Usage example::
-
- >>> from geraldo.generators import PDFGenerator
- >>> queryset = Orgao.objects.filter(municipio__uf__sigla='MG')
- >>> report = LabelsReport(queryset)
- >>> report.generate_by(PDFGenerator, filename='./inline-detail-report.pdf')
-
- """
- formato = ''
- label_margin_top = 0.6
- label_margin_left = 0.2
- label_margin_right = 0.2
- largura_etiqueta = 6.9
- altura_etiqueta = 3.25
- tamanho_fonte = 6
- delta = start = 0.5
-
- def __init__(self, queryset, formato):
- super(CasasLegislativasLabels, self).__init__(queryset=queryset)
- self.formato = formato
- self.page_size = A4
-
- if formato == '3x9_etiqueta':
- self.margin_top = 0.25 * cm
- self.margin_bottom = 0.0 * cm
- self.margin_left = 0.2 * cm
- self.margin_right = 0.0 * cm
- self.delta = 0.3
- self.start = 0
- self.label_margin_top = 0.35
- self.label_margin_left = 0.4
- self.label_margin_right = 0.2
- else:
- self.margin_top = 0.8 * cm
- self.margin_bottom = 0.8 * cm
- self.margin_left = 0.4 * cm
- self.margin_right = 0.4 * cm
- self.largura_etiqueta = 9.9
- self.altura_etiqueta = 5.6
- self.tamanho_fonte = 11
- self.label_margin_top = 0.5
- self.label_margin_left = 0.5
- self.label_margin_right = 0.5
-
- calc_width = (self.largura_etiqueta - self.label_margin_left - self.label_margin_right) * cm
- calc_height = lambda rows: (self.delta * rows) * cm
- calc_top = lambda row: (self.label_margin_top + row * self.delta) * cm
- calc_left = self.label_margin_left * cm
-
- my_elements = [
- Label(
- text=label_text(_('A Sua Excelência o(a) Senhor(a)')),
- top=calc_top(0), left=calc_left, width=calc_width,
- ),
- ObjectValue(
- attribute_name='presidente',
- top=calc_top(1), left=calc_left, width=calc_width,
- get_value=lambda instance:
- unicode(instance.presidente or "").upper()
- ),
- ObjectValue(
- attribute_name='nome',
- top=calc_top(2), left=calc_left, width=calc_width, height=calc_height(2),
- get_value=lambda instance:
- (_("Presidente da %s") % instance.nome)
- ),
- ObjectValue(
- attribute_name='logradouro',
- top=calc_top(4), left=calc_left, width=calc_width, height=calc_height(2),
- get_value=lambda instance:
- "%s - %s - %s." % (instance.logradouro, instance.bairro, instance.municipio),
- ),
-
- ObjectValue(
- attribute_name='cep',
- top=calc_top(8), left=calc_left, width=calc_width,
- get_value=lambda instance: "%s: %s" % (_("CEP"), instance.cep)
- ),
- ]
- self.band_detail = DetailBand(
- width=(self.largura_etiqueta) * cm,
- height=(self.altura_etiqueta) * cm,
- elements=my_elements,
- display_inline=True,
- default_style={'fontName': 'Helvetica', 'fontSize': self.tamanho_fonte})
-
-
-class CasasLegislativasLabelsSemPresidente(CasasLegislativasLabels):
-
- def __init__(self, queryset, formato):
- super(CasasLegislativasLabelsSemPresidente, self).__init__(queryset=queryset, formato=formato)
-
- calc_width = (self.largura_etiqueta - self.label_margin_left - self.label_margin_right) * cm
- calc_height = lambda rows: (self.delta * rows) * cm
- calc_top = lambda row: (self.label_margin_top + row * self.delta) * cm
- calc_left = self.label_margin_left * cm
-
- my_elements = [
- Label(
- text=label_text(_('A Sua Excelência o(a) Senhor(a)')),
- top=calc_top(0), left=calc_left, width=calc_width,
- ),
- ObjectValue(
- attribute_name='nome',
- top=calc_top(1), left=calc_left, width=calc_width, height=calc_height(2),
- get_value=lambda instance:
- (_("Presidente da %s") % instance.nome)
- ),
- ObjectValue(
- attribute_name='logradouro',
- top=calc_top(3), left=calc_left, width=calc_width, height=calc_height(2),
- get_value=lambda instance:
- "%s - %s - %s." % (instance.logradouro, instance.bairro, instance.municipio),
- ),
-
- ObjectValue(
- attribute_name='cep',
- top=calc_top(8), left=calc_left, width=calc_width,
- get_value=lambda instance: "%s: %s" % (_("CEP"), instance.cep)
- ),
- ]
- self.band_detail = DetailBand(
- width=(self.largura_etiqueta) * cm,
- height=(self.altura_etiqueta) * cm,
- elements=my_elements,
- display_inline=True,
- default_style={'fontName': 'Helvetica', 'fontSize': self.tamanho_fonte})
-