From a9a3a94520cdc09a0bc9c6f357d0bce4481106a2 Mon Sep 17 00:00:00 2001 From: Guilherme Gondim Date: Tue, 16 Sep 2008 21:34:59 +0000 Subject: [PATCH] Adicionado CRUD de mesas e parlamentares. --- sigi/apps/mesas/admin.py | 25 +++++++++++++++++++++---- sigi/apps/mesas/models.py | 2 +- sigi/apps/parlamentares/admin.py | 26 +++++++++++++++++++++++++- sigi/apps/parlamentares/models.py | 19 ++++++++++++------- sigi/sites.py | 25 +++++++++++++++++++++++-- 5 files changed, 82 insertions(+), 15 deletions(-) diff --git a/sigi/apps/mesas/admin.py b/sigi/apps/mesas/admin.py index 20e2dfa..66b3c95 100644 --- a/sigi/apps/mesas/admin.py +++ b/sigi/apps/mesas/admin.py @@ -5,28 +5,42 @@ from sigi.apps.mesas.models import (Legislatura, Coligacao, ComposicaoColigacao, MembroMesaDiretora) class LegislaturaAdmin(admin.ModelAdmin): + date_hierarchy = 'data_inicio' list_display = ('numero', 'data_inicio', 'data_fim', 'data_eleicao') list_display_links = ('numero',) + search_fields = ('numero',) class ColigacaoAdmin(admin.ModelAdmin): list_display = ('nome', 'legislatura', 'numero_votos') list_display_links = ('nome',) - search_fields = ('nome',) + search_fields = ('nome', 'legislatura__numero') class ComposicaoColigacaoAdmin(admin.ModelAdmin): list_display = ('coligacao', 'partido') list_display_links = ('coligacao', 'partido') list_filter = ('partido',) + search_fields = ('coligacao__nome', 'partido__nome', 'partido__sigla') class SessaoLegislativaAdmin(admin.ModelAdmin): list_display = ('numero', 'mesa_diretora', 'legislatura', 'tipo', 'data_inicio', 'data_fim') list_display_links = ('numero',) list_filter = ('tipo',) + fieldsets = ( + (None, { + 'fields': ('numero', 'mesa_diretora', 'legislatura', 'tipo') + }), + (None, { + 'fields': (('data_inicio', 'data_fim'), + ('data_inicio_intervalo', 'data_fim_intervalo')) + }), + ) radio_fields = {'tipo': admin.VERTICAL} + search_fields = ('numero', 'mesa_diretora__casa_legislativa__nome') class CargoAdmin(admin.ModelAdmin): list_display = ('descricao',) + search_fields = ('descricao',) class MembroMesaDiretoraInline(admin.TabularInline): model = MembroMesaDiretora @@ -34,14 +48,17 @@ class MembroMesaDiretoraInline(admin.TabularInline): extra = 4 class MembroMesaDiretoraAdmin(admin.ModelAdmin): - list_display = ('parlamentar', 'cargo') - list_display_links = ('parlamentar', 'cargo') + list_display = ('parlamentar', 'cargo', 'mesa_diretora') + list_display_links = ('parlamentar',) list_filter = ('cargo',) - search_fields = ('parlamentar', 'cargo') + search_fields = ('cargo__descricao', 'parlamentar__nome_completo', + 'parlamentar__nome_parlamentar', + 'mesa_diretora__casa_legislativa__nome') class MesaDiretoraAdmin(admin.ModelAdmin): inlines = (MembroMesaDiretoraInline,) list_display = ('id', 'casa_legislativa') + search_fields = ('casa_legislativa__nome',) admin.site.register(Legislatura, LegislaturaAdmin) admin.site.register(Coligacao, ColigacaoAdmin) diff --git a/sigi/apps/mesas/models.py b/sigi/apps/mesas/models.py index a5709f6..d1b2da2 100644 --- a/sigi/apps/mesas/models.py +++ b/sigi/apps/mesas/models.py @@ -86,7 +86,7 @@ class MesaDiretora(models.Model): verbose_name_plural = 'Mesas Diretoras' def __unicode__(self): - return 'Mesa Diretora da(o) %s' % unicode(self.casa_legislativa) + return 'Mesa Diretora da %s' % unicode(self.casa_legislativa) class Cargo(models.Model): descricao = models.CharField(u'descrição', max_length=30) diff --git a/sigi/apps/parlamentares/admin.py b/sigi/apps/parlamentares/admin.py index abc8cef..151c3a7 100644 --- a/sigi/apps/parlamentares/admin.py +++ b/sigi/apps/parlamentares/admin.py @@ -1,21 +1,45 @@ # -*- coding: utf-8 -*- from django.contrib import admin +from django.contrib.contenttypes import generic +from sigi.apps.contatos.models import Telefone from sigi.apps.parlamentares.models import Partido, Parlamentar, Mandato +class TelefonesInline(generic.GenericTabularInline): + model = Telefone + extra = 1 + class PartidoAdmin(admin.ModelAdmin): list_display = ('nome', 'sigla') list_display_links = ('nome', 'sigla') + search_fields = ('nome', 'sigla') class ParlamentarAdmin(admin.ModelAdmin): + inlines = (TelefonesInline,) list_display = ('nome_completo', 'nome_parlamentar', 'sexo') list_display_links = ('nome_completo', 'nome_parlamentar') - list_filter = ('sexo',) + list_filter = ('nome_completo', 'sexo') + fieldsets = ( + (None, { + 'fields': ('nome_completo', 'nome_parlamentar', 'sexo'), + }), + ('Endereço', { + 'fields': ('logradouro', 'bairro', 'municipio', 'cep'), + }), + ('Outras informações', { + 'fields': ('data_nascimento', 'email', 'pagina_web', 'foto'), + }), + ) + search_fields = ('nome_completo', 'nome_parlamentar', 'email', + 'pagina_web', 'municipio__nome') radio_fields = {'sexo': admin.VERTICAL} class MandatoAdmin(admin.ModelAdmin): list_display = ('parlamentar', 'legislatura', 'partido', 'inicio_mandato', 'fim_mandato', 'is_afastado') list_filter = ('is_afastado', 'partido', 'suplencia') + search_fields = ('legislatura__numero', 'parlamentar__nome_completo', + 'parlamentar__nome_parlamentar', 'partido__nome', + 'partido__sigla') radio_fields = {'suplencia': admin.VERTICAL} admin.site.register(Partido, PartidoAdmin) diff --git a/sigi/apps/parlamentares/models.py b/sigi/apps/parlamentares/models.py index 0b46ee9..f7d2605 100644 --- a/sigi/apps/parlamentares/models.py +++ b/sigi/apps/parlamentares/models.py @@ -18,6 +18,7 @@ class Parlamentar(models.Model): ('F', 'Feminino'), ) nome_completo = models.CharField(max_length=60) + nome_completo.alphabetic_filter = True nome_parlamentar = models.CharField(max_length=35, blank=True) foto = models.ImageField( upload_to='fotos/parlamentares', @@ -36,17 +37,18 @@ class Parlamentar(models.Model): blank=True, null=True, ) - logradouro = models.CharField(max_length=100) - bairro = models.CharField(max_length=40) - cidade = models.ForeignKey('contatos.Municipio') + logradouro = models.CharField(max_length=100, blank=True) + bairro = models.CharField(max_length=40, blank=True) + municipio = models.ForeignKey('contatos.Municipio', blank=True, null=True) cep = models.CharField( 'CEP', max_length=9, + blank=True, help_text="Formato: XXXXX-XXX." ) telefones = generic.GenericRelation('contatos.Telefone') - pagina_web = models.URLField(u'página web') - email = models.EmailField('e-mail') + pagina_web = models.URLField(u'página web', blank=True) + email = models.EmailField('e-mail', blank=True) class Meta: ordering = ('nome_completo',) @@ -68,12 +70,15 @@ class Mandato(models.Model): inicio_mandato = models.DateField(u'início de mandato') fim_mandato = models.DateField('fim de mandato') is_afastado = models.BooleanField( - 'Afastado', + 'afastado', default=False, - help_text=u'Marque caso parlamentar não esteja ativo' + help_text=u'Marque caso parlamentar não esteja ativo.' ) suplencia = models.CharField( u'suplência', max_length=1, choices=SUPLENCIA_CHOICES, ) + + def __unicode__(self): + return str(self.id) diff --git a/sigi/sites.py b/sigi/sites.py index 46f71aa..a1cfcc2 100644 --- a/sigi/sites.py +++ b/sigi/sites.py @@ -14,9 +14,16 @@ from sigi.apps.inventario.admin import (Fornecedor, FornecedorAdmin, Fabricante, TipoEquipamentoAdmin, ModeloEquipamento, ModeloEquipamentoAdmin, Bem, BemAdmin) from sigi.apps.servicos.admin import Servico, ServicoAdmin +from sigi.apps.mesas.admin import (Legislatura, LegislaturaAdmin, Coligacao, + ColigacaoAdmin, ComposicaoColigacao, + ComposicaoColigacaoAdmin, SessaoLegislativa, + SessaoLegislativaAdmin, MesaDiretora, + MesaDiretoraAdmin, Cargo, CargoAdmin, + MembroMesaDiretora, MembroMesaDiretoraAdmin) +from sigi.apps.parlamentares.admin import (Partido, PartidoAdmin, Parlamentar, + ParlamentarAdmin, Mandato, MandatoAdmin) - -class DefaultSite(AdminSite): +class DefaultSite(AdminSite): index_template = 'index.html' login_template = 'login.html' @@ -56,3 +63,17 @@ default.register(Bem, BemAdmin) # sigi.apps.servicos default.register(Servico, ServicoAdmin) + +# sigi.apps.mesas +default.register(Legislatura, LegislaturaAdmin) +default.register(Coligacao, ColigacaoAdmin) +default.register(ComposicaoColigacao, ComposicaoColigacaoAdmin) +default.register(SessaoLegislativa, SessaoLegislativaAdmin) +default.register(MesaDiretora, MesaDiretoraAdmin) +default.register(Cargo, CargoAdmin) +default.register(MembroMesaDiretora, MembroMesaDiretoraAdmin) + +# sigi.apps.parlamentares +default.register(Partido, PartidoAdmin) +default.register(Parlamentar, ParlamentarAdmin) +default.register(Mandato, MandatoAdmin)