Browse Source

Join mesas and parlamentares apps into one (parlamentares)

producao
Marcio Mazza 10 years ago
parent
commit
ea22e0b46e
  1. 1
      etc/migracao/migra.py
  2. 2
      sigi/apps/casas/admin.py
  3. 2
      sigi/apps/casas/models.py
  4. 6
      sigi/apps/home/templatetags/menu_conf.yaml
  5. 0
      sigi/apps/mesas/__init__.py
  6. 114
      sigi/apps/mesas/admin.py
  7. 135
      sigi/apps/mesas/models.py
  8. 109
      sigi/apps/parlamentares/admin.py
  9. 136
      sigi/apps/parlamentares/models.py
  10. 1
      sigi/settings/base.py

1
etc/migracao/migra.py

@ -30,7 +30,6 @@ from sigi.apps.casas.models import *
from sigi.apps.contatos.models import * from sigi.apps.contatos.models import *
from sigi.apps.convenios.models import * from sigi.apps.convenios.models import *
from sigi.apps.inventario.models import * from sigi.apps.inventario.models import *
from sigi.apps.mesas.models import *
from sigi.apps.parlamentares.models import * from sigi.apps.parlamentares.models import *
ERROR_MSG_0 = ('<ERRO> %s[%s]: erro desconhecido! Possível erro de integridade ' ERROR_MSG_0 = ('<ERRO> %s[%s]: erro desconhecido! Possível erro de integridade '

2
sigi/apps/casas/admin.py

@ -14,9 +14,9 @@ from sigi.apps.contatos.models import Telefone
from sigi.apps.convenios.models import Convenio from sigi.apps.convenios.models import Convenio
from sigi.apps.diagnosticos.models import Diagnostico from sigi.apps.diagnosticos.models import Diagnostico
from sigi.apps.inventario.models import Bem from sigi.apps.inventario.models import Bem
from sigi.apps.mesas.models import Legislatura
from sigi.apps.metas.models import PlanoDiretor from sigi.apps.metas.models import PlanoDiretor
from sigi.apps.ocorrencias.models import Ocorrencia from sigi.apps.ocorrencias.models import Ocorrencia
from sigi.apps.parlamentares.models import Legislatura
from sigi.apps.servicos.models import Servico from sigi.apps.servicos.models import Servico
from sigi.apps.utils import queryset_ascii from sigi.apps.utils import queryset_ascii
from sigi.apps.utils.base_admin import BaseModelAdmin from sigi.apps.utils.base_admin import BaseModelAdmin

2
sigi/apps/casas/models.py

@ -124,7 +124,7 @@ class CasaLegislativa(models.Model):
def total_parlamentares(self): def total_parlamentares(self):
""" """
Calcula o total de parlamentares atual da Casa: Calcula o total de parlamentares atual da Casa:
- O total de parlamentares da mesas.legislatura mais recente, ou - O total de parlamentares da legislatura mais recente, ou
- num_parlamentares ou - num_parlamentares ou
- 0 se não tiver nenhuma das informações - 0 se não tiver nenhuma das informações
""" """

6
sigi/apps/home/templatetags/menu_conf.yaml

@ -18,14 +18,14 @@ main_menu:
- title: Assembléias Legislativas - title: Assembléias Legislativas
url: casas/casalegislativa/?tipo__id__exact=2 url: casas/casalegislativa/?tipo__id__exact=2
- title: Legislaturas - title: Legislaturas
url: mesas/legislatura/ url: parlamentares/legislatura/
children: children:
- title: Todas - title: Todas
url: mesas/legislatura/ url: parlamentares/legislatura/
- title: Parlamentares - title: Parlamentares
url: parlamentares/parlamentar/ url: parlamentares/parlamentar/
- title: Tabela de cargos - title: Tabela de cargos
url: mesas/cargo/ url: parlamentares/cargo/
- title: Tabela de partidos - title: Tabela de partidos
url: parlamentares/partido/ url: parlamentares/partido/
- title: Diagnósticos - title: Diagnósticos

0
sigi/apps/mesas/__init__.py

114
sigi/apps/mesas/admin.py

@ -1,114 +0,0 @@
# -*- coding: utf-8 -*-
from django.contrib import admin
from django.http import HttpResponse
from django.utils.html import escape
from django.utils.translation import ugettext as _
from sigi.apps.mesas.models import (Legislatura, Coligacao, ComposicaoColigacao,
SessaoLegislativa, MesaDiretora, Cargo,
MembroMesaDiretora)
from sigi.apps.parlamentares.models import Mandato
from sigi.apps.utils.base_admin import BaseModelAdmin
class MandatoInline(admin.TabularInline):
model = Mandato
raw_id_fields = ['parlamentar', ]
class LegislaturaAdmin(BaseModelAdmin):
date_hierarchy = 'data_inicio'
list_display = ('numero', 'casa_legislativa', 'uf', 'data_inicio', 'data_fim', 'data_eleicao', 'total_parlamentares')
raw_id_fields = ('casa_legislativa',)
list_display_links = ('numero',)
list_filter = ('casa_legislativa__municipio__uf', )
search_fields = ('casa_legislativa__nome', 'casa_legislativa__municipio__nome')
inlines = (MandatoInline,)
def uf(self, obj):
return obj.casa_legislativa.municipio.uf.sigla
uf.short_description = _(u'UF')
uf.admin_order_field = 'casa_legislativa__municipio__uf'
def lookup_allowed(self, lookup, value):
return super(LegislaturaAdmin, self).lookup_allowed(lookup, value) or \
lookup in ['casa_legislativa__municipio__uf__codigo_ibge__exact']
def response_change(self, request, obj):
response = super(LegislaturaAdmin, self).response_change(request, obj)
if "_popup" in request.POST:
response = HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' %
# escape() calls force_unicode.
(escape(obj.pk), escapejs(obj)))
return response
class ColigacaoAdmin(BaseModelAdmin):
list_display = ('nome', 'legislatura', 'numero_votos')
list_display_links = ('nome',)
raw_id_fields = ('legislatura',)
search_fields = ('nome', 'legislatura__numero')
class ComposicaoColigacaoAdmin(BaseModelAdmin):
list_display = ('coligacao', 'partido')
list_display_links = ('coligacao', 'partido')
list_filter = ('partido',)
raw_id_fields = ('coligacao', 'partido')
search_fields = ('coligacao__nome', 'partido__nome', 'partido__sigla')
class SessaoLegislativaAdmin(BaseModelAdmin):
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}
raw_id_fields = ('mesa_diretora', 'legislatura')
search_fields = ('numero', 'mesa_diretora__casa_legislativa__nome')
class CargoAdmin(BaseModelAdmin):
list_display = ('descricao',)
search_fields = ('descricao',)
class MembroMesaDiretoraInline(admin.TabularInline):
model = MembroMesaDiretora
max_num = 11
extra = 4
raw_id_fields = ('parlamentar', 'cargo')
class MembroMesaDiretoraAdmin(BaseModelAdmin):
list_display = ('parlamentar', 'cargo', 'mesa_diretora')
list_display_links = ('parlamentar',)
list_filter = ('cargo',)
raw_id_fields = ('parlamentar', 'cargo', 'mesa_diretora')
search_fields = ('cargo__descricao', 'parlamentar__nome_completo',
'parlamentar__nome_parlamentar',
'mesa_diretora__casa_legislativa__nome')
class MesaDiretoraAdmin(BaseModelAdmin):
inlines = (MembroMesaDiretoraInline,)
raw_id_fields = ('casa_legislativa',)
list_display = ('id', 'casa_legislativa')
search_fields = ('casa_legislativa__nome',)
admin.site.register(Legislatura, LegislaturaAdmin)
admin.site.register(Coligacao, ColigacaoAdmin)
admin.site.register(ComposicaoColigacao, ComposicaoColigacaoAdmin)
admin.site.register(SessaoLegislativa, SessaoLegislativaAdmin)
admin.site.register(MesaDiretora, MesaDiretoraAdmin)
admin.site.register(Cargo, CargoAdmin)
admin.site.register(MembroMesaDiretora, MembroMesaDiretoraAdmin)

135
sigi/apps/mesas/models.py

@ -1,135 +0,0 @@
# coding: utf-8
from django.db import models
from django.utils.translation import ugettext as _
from sigi.apps.casas.models import CasaLegislativa
class Legislatura(models.Model):
casa_legislativa = models.ForeignKey(CasaLegislativa)
numero = models.PositiveSmallIntegerField(_(u'número legislatura'))
data_inicio = models.DateField(_(u'início'))
data_fim = models.DateField(_(u'fim'))
data_eleicao = models.DateField(_(u'data da eleição'))
total_parlamentares = models.PositiveIntegerField(_(u"Total de parlamentares"))
casa_legislativa.convenio_uf_filter = True
casa_legislativa.convenio_cl_tipo_filter = True
class Meta:
unique_together = (('casa_legislativa', 'numero'))
ordering = ['casa_legislativa__municipio__uf__sigla', '-data_inicio']
def __unicode__(self):
return _(u"%(number)sª legislatura da %(parliament)s (%(initial_year)s-%(final_year)s)") % dict(
number=self.numero,
parliament=self.casa_legislativa.__unicode__(),
initial_year=self.data_inicio.year,
final_year=self.data_fim.year)
class Coligacao(models.Model):
nome = models.CharField(max_length=50)
legislatura = models.ForeignKey(Legislatura)
numero_votos = models.PositiveIntegerField(
_(u'número de votos'),
blank=True,
null=True,
)
class Meta:
ordering = ('legislatura', 'nome')
verbose_name = _(u'coligação')
verbose_name_plural = _(u'coligações')
def __unicode__(self):
return self.nome
class ComposicaoColigacao(models.Model):
coligacao = models.ForeignKey(Coligacao, verbose_name=_(u'coligação'))
partido = models.ForeignKey('parlamentares.Partido')
class Meta:
verbose_name = _(u'composição da coligação')
verbose_name_plural = _(u'composições das coligações')
def __unicode__(self):
return str(self.id)
class SessaoLegislativa(models.Model):
SESSAO_CHOICES = (
('O', _(u'Ordinária')),
('E', _(u'Extraordinária')),
)
numero = models.PositiveSmallIntegerField(_(u'número da sessão'), unique=True)
mesa_diretora = models.ForeignKey(
'MesaDiretora',
verbose_name=_(u'Mesa Diretora')
)
legislatura = models.ForeignKey(Legislatura)
tipo = models.CharField(
max_length=1,
choices=SESSAO_CHOICES,
default='O'
)
data_inicio = models.DateField(_(u'início'))
data_fim = models.DateField(_(u'fim'))
data_inicio_intervalo = models.DateField(
_(u'início de intervalo'),
blank=True,
null=True
)
data_fim_intervalo = models.DateField(
_(u'fim de intervalo'),
blank=True,
null=True
)
class Meta:
ordering = ('legislatura', 'numero')
verbose_name = _(u'Sessão Legislativa')
verbose_name_plural = _(u'Sessões Legislativas')
def __unicode__(self):
return str(self.numero)
class MesaDiretora(models.Model):
casa_legislativa = models.ForeignKey(
'casas.CasaLegislativa',
verbose_name=_(u'Casa Legislativa')
)
class Meta:
verbose_name = _(u'Mesa Diretora')
verbose_name_plural = _(u'Mesas Diretoras')
def __unicode__(self):
return _(u'Mesa Diretora da %s') % unicode(self.casa_legislativa)
class Cargo(models.Model):
descricao = models.CharField(_(u'descrição'), max_length=30)
class Meta:
ordering = ('descricao',)
def __unicode__(self):
return self.descricao
class MembroMesaDiretora(models.Model):
parlamentar = models.ForeignKey('parlamentares.Parlamentar')
cargo = models.ForeignKey(Cargo)
mesa_diretora = models.ForeignKey(MesaDiretora)
class Meta:
ordering = ('parlamentar',)
unique_together = ('cargo', 'mesa_diretora')
verbose_name = _(u'membro de Mesa Diretora')
verbose_name_plural = _(u'membros de Mesas Diretora')
def __unicode__(self):
return '%s (%s)' % (unicode(self.parlamentar), unicode(self.cargo))

109
sigi/apps/parlamentares/admin.py

@ -1,11 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib import admin from django.contrib import admin
from django.contrib.contenttypes import generic from django.contrib.contenttypes import generic
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect, HttpResponse
from django.utils.html import escape, escapejs
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from sigi.apps.contatos.models import Telefone from sigi.apps.contatos.models import Telefone
from sigi.apps.parlamentares.models import Partido, Parlamentar, Mandato from sigi.apps.parlamentares.models import (
Partido, Parlamentar, Mandato, Legislatura, Coligacao, ComposicaoColigacao,
SessaoLegislativa, MesaDiretora, Cargo, MembroMesaDiretora)
from sigi.apps.parlamentares.views import adicionar_parlamentar_carrinho from sigi.apps.parlamentares.views import adicionar_parlamentar_carrinho
from sigi.apps.utils.base_admin import BaseModelAdmin from sigi.apps.utils.base_admin import BaseModelAdmin
from sigi.apps.utils.filters import AlphabeticFilter from sigi.apps.utils.filters import AlphabeticFilter
@ -83,6 +86,108 @@ class MandatoAdmin(BaseModelAdmin):
# radio_fields = {'suplencia': admin.VERTICAL} # radio_fields = {'suplencia': admin.VERTICAL}
class MandatoInline(admin.TabularInline):
model = Mandato
raw_id_fields = ['parlamentar', ]
class LegislaturaAdmin(BaseModelAdmin):
date_hierarchy = 'data_inicio'
list_display = ('numero', 'casa_legislativa', 'uf', 'data_inicio', 'data_fim', 'data_eleicao', 'total_parlamentares')
raw_id_fields = ('casa_legislativa',)
list_display_links = ('numero',)
list_filter = ('casa_legislativa__municipio__uf', )
search_fields = ('casa_legislativa__nome', 'casa_legislativa__municipio__nome')
inlines = (MandatoInline,)
def uf(self, obj):
return obj.casa_legislativa.municipio.uf.sigla
uf.short_description = _(u'UF')
uf.admin_order_field = 'casa_legislativa__municipio__uf'
def lookup_allowed(self, lookup, value):
return super(LegislaturaAdmin, self).lookup_allowed(lookup, value) or \
lookup in ['casa_legislativa__municipio__uf__codigo_ibge__exact']
def response_change(self, request, obj):
response = super(LegislaturaAdmin, self).response_change(request, obj)
if "_popup" in request.POST:
response = HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' %
# escape() calls force_unicode.
(escape(obj.pk), escapejs(obj)))
return response
class ColigacaoAdmin(BaseModelAdmin):
list_display = ('nome', 'legislatura', 'numero_votos')
list_display_links = ('nome',)
raw_id_fields = ('legislatura',)
search_fields = ('nome', 'legislatura__numero')
class ComposicaoColigacaoAdmin(BaseModelAdmin):
list_display = ('coligacao', 'partido')
list_display_links = ('coligacao', 'partido')
list_filter = ('partido',)
raw_id_fields = ('coligacao', 'partido')
search_fields = ('coligacao__nome', 'partido__nome', 'partido__sigla')
class SessaoLegislativaAdmin(BaseModelAdmin):
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}
raw_id_fields = ('mesa_diretora', 'legislatura')
search_fields = ('numero', 'mesa_diretora__casa_legislativa__nome')
class CargoAdmin(BaseModelAdmin):
list_display = ('descricao',)
search_fields = ('descricao',)
class MembroMesaDiretoraInline(admin.TabularInline):
model = MembroMesaDiretora
max_num = 11
extra = 4
raw_id_fields = ('parlamentar', 'cargo')
class MembroMesaDiretoraAdmin(BaseModelAdmin):
list_display = ('parlamentar', 'cargo', 'mesa_diretora')
list_display_links = ('parlamentar',)
list_filter = ('cargo',)
raw_id_fields = ('parlamentar', 'cargo', 'mesa_diretora')
search_fields = ('cargo__descricao', 'parlamentar__nome_completo',
'parlamentar__nome_parlamentar',
'mesa_diretora__casa_legislativa__nome')
class MesaDiretoraAdmin(BaseModelAdmin):
inlines = (MembroMesaDiretoraInline,)
raw_id_fields = ('casa_legislativa',)
list_display = ('id', 'casa_legislativa')
search_fields = ('casa_legislativa__nome',)
admin.site.register(Partido, PartidoAdmin) admin.site.register(Partido, PartidoAdmin)
admin.site.register(Parlamentar, ParlamentarAdmin) admin.site.register(Parlamentar, ParlamentarAdmin)
admin.site.register(Mandato, MandatoAdmin) admin.site.register(Mandato, MandatoAdmin)
admin.site.register(Legislatura, LegislaturaAdmin)
admin.site.register(Coligacao, ColigacaoAdmin)
admin.site.register(ComposicaoColigacao, ComposicaoColigacaoAdmin)
admin.site.register(SessaoLegislativa, SessaoLegislativaAdmin)
admin.site.register(MesaDiretora, MesaDiretoraAdmin)
admin.site.register(Cargo, CargoAdmin)
admin.site.register(MembroMesaDiretora, MembroMesaDiretoraAdmin)

136
sigi/apps/parlamentares/models.py

@ -2,6 +2,8 @@
from django.db import models from django.db import models
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from sigi.apps.casas.models import CasaLegislativa
class Partido(models.Model): class Partido(models.Model):
nome = models.CharField(max_length=50) nome = models.CharField(max_length=50)
@ -58,9 +60,9 @@ class Mandato(models.Model):
('S', _(u'Suplente')), ('S', _(u'Suplente')),
) )
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar)
legislatura = models.ForeignKey('mesas.Legislatura') legislatura = models.ForeignKey('parlamentares.Legislatura')
partido = models.ForeignKey(Partido) partido = models.ForeignKey(Partido)
cargo = models.ForeignKey('mesas.Cargo') cargo = models.ForeignKey('parlamentares.Cargo')
inicio_mandato = models.DateField(_(u'início de mandato')) inicio_mandato = models.DateField(_(u'início de mandato'))
fim_mandato = models.DateField(_(u'fim de mandato')) fim_mandato = models.DateField(_(u'fim de mandato'))
is_afastado = models.BooleanField( is_afastado = models.BooleanField(
@ -77,3 +79,133 @@ class Mandato(models.Model):
def __unicode__(self): def __unicode__(self):
return str(self.id) return str(self.id)
class Legislatura(models.Model):
casa_legislativa = models.ForeignKey(CasaLegislativa)
numero = models.PositiveSmallIntegerField(_(u'número legislatura'))
data_inicio = models.DateField(_(u'início'))
data_fim = models.DateField(_(u'fim'))
data_eleicao = models.DateField(_(u'data da eleição'))
total_parlamentares = models.PositiveIntegerField(_(u"Total de parlamentares"))
casa_legislativa.convenio_uf_filter = True
casa_legislativa.convenio_cl_tipo_filter = True
class Meta:
unique_together = (('casa_legislativa', 'numero'))
ordering = ['casa_legislativa__municipio__uf__sigla', '-data_inicio']
def __unicode__(self):
return _(u"%(number)sª legislatura da %(parliament)s (%(initial_year)s-%(final_year)s)") % dict(
number=self.numero,
parliament=self.casa_legislativa.__unicode__(),
initial_year=self.data_inicio.year,
final_year=self.data_fim.year)
class Coligacao(models.Model):
nome = models.CharField(max_length=50)
legislatura = models.ForeignKey(Legislatura)
numero_votos = models.PositiveIntegerField(
_(u'número de votos'),
blank=True,
null=True,
)
class Meta:
ordering = ('legislatura', 'nome')
verbose_name = _(u'coligação')
verbose_name_plural = _(u'coligações')
def __unicode__(self):
return self.nome
class ComposicaoColigacao(models.Model):
coligacao = models.ForeignKey(Coligacao, verbose_name=_(u'coligação'))
partido = models.ForeignKey('parlamentares.Partido')
class Meta:
verbose_name = _(u'composição da coligação')
verbose_name_plural = _(u'composições das coligações')
def __unicode__(self):
return str(self.id)
class SessaoLegislativa(models.Model):
SESSAO_CHOICES = (
('O', _(u'Ordinária')),
('E', _(u'Extraordinária')),
)
numero = models.PositiveSmallIntegerField(_(u'número da sessão'), unique=True)
mesa_diretora = models.ForeignKey(
'MesaDiretora',
verbose_name=_(u'Mesa Diretora')
)
legislatura = models.ForeignKey(Legislatura)
tipo = models.CharField(
max_length=1,
choices=SESSAO_CHOICES,
default='O'
)
data_inicio = models.DateField(_(u'início'))
data_fim = models.DateField(_(u'fim'))
data_inicio_intervalo = models.DateField(
_(u'início de intervalo'),
blank=True,
null=True
)
data_fim_intervalo = models.DateField(
_(u'fim de intervalo'),
blank=True,
null=True
)
class Meta:
ordering = ('legislatura', 'numero')
verbose_name = _(u'Sessão Legislativa')
verbose_name_plural = _(u'Sessões Legislativas')
def __unicode__(self):
return str(self.numero)
class MesaDiretora(models.Model):
casa_legislativa = models.ForeignKey(
'casas.CasaLegislativa',
verbose_name=_(u'Casa Legislativa')
)
class Meta:
verbose_name = _(u'Mesa Diretora')
verbose_name_plural = _(u'Mesas Diretoras')
def __unicode__(self):
return _(u'Mesa Diretora da %s') % unicode(self.casa_legislativa)
class Cargo(models.Model):
descricao = models.CharField(_(u'descrição'), max_length=30)
class Meta:
ordering = ('descricao',)
def __unicode__(self):
return self.descricao
class MembroMesaDiretora(models.Model):
parlamentar = models.ForeignKey('parlamentares.Parlamentar')
cargo = models.ForeignKey(Cargo)
mesa_diretora = models.ForeignKey(MesaDiretora)
class Meta:
ordering = ('parlamentar',)
unique_together = ('cargo', 'mesa_diretora')
verbose_name = _(u'membro de Mesa Diretora')
verbose_name_plural = _(u'membros de Mesa Diretora')
def __unicode__(self):
return '%s (%s)' % (unicode(self.parlamentar), unicode(self.cargo))

1
sigi/settings/base.py

@ -60,7 +60,6 @@ INSTALLED_APPS = (
'sigi.apps.contatos', 'sigi.apps.contatos',
'sigi.apps.servidores', 'sigi.apps.servidores',
'sigi.apps.parlamentares', 'sigi.apps.parlamentares',
'sigi.apps.mesas',
'sigi.apps.casas', 'sigi.apps.casas',
'sigi.apps.convenios', 'sigi.apps.convenios',
'sigi.apps.inventario', 'sigi.apps.inventario',

Loading…
Cancel
Save