diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 20350ef07..b09c054ec 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -24,6 +24,7 @@ class LegislaturaForm(ModelForm): def clean(self): cleaned_data = self.cleaned_data + numero = cleaned_data['numero'] data_inicio = cleaned_data['data_inicio'] data_fim = cleaned_data['data_fim'] data_eleicao = cleaned_data['data_eleicao'] @@ -32,6 +33,9 @@ class LegislaturaForm(ModelForm): raise ValidationError(_('A data início deve ser menor que a ' + 'data fim, e a data eleição deve ser ' + 'menor que a data início')) + if Legislatura.objects.filter(numero=numero).exists(): + raise ValidationError( + _('Já cadastrada uma legislatura com este número')) return cleaned_data diff --git a/sapl/parlamentares/migrations/0028_legislatura_numero.py b/sapl/parlamentares/migrations/0028_legislatura_numero.py new file mode 100644 index 000000000..465c1b764 --- /dev/null +++ b/sapl/parlamentares/migrations/0028_legislatura_numero.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-09-21 15:03 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0027_merge'), + ] + + operations = [ + migrations.AddField( + model_name='legislatura', + name='numero', + field=models.PositiveIntegerField(default=1, verbose_name='Número'), + preserve_default=False, + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 67039a107..43556725a 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -9,6 +9,7 @@ from sapl.utils import (UF, YES_NO_CHOICES, intervalos_tem_intersecao, class Legislatura(models.Model): + numero = models.PositiveIntegerField(verbose_name=_('Número')) data_inicio = models.DateField(verbose_name=_('Data Início')) data_fim = models.DateField(verbose_name=_('Data Fim')) data_eleicao = models.DateField(verbose_name=_('Data Eleição')) @@ -32,8 +33,8 @@ class Legislatura(models.Model): else: current = '' - return _('%(id)sª (%(start)s - %(end)s)%(current)s') % { - 'id': self.id, + return _('%(numero)sª (%(start)s - %(end)s)%(current)s') % { + 'numero': self.numero, 'start': self.data_inicio.year, 'end': self.data_fim.year, 'current': current} @@ -63,8 +64,8 @@ class SessaoLegislativa(models.Model): verbose_name_plural = _('Sessões Legislativas') def __str__(self): - return _('%(id)sº (%(inicio)s - %(fim)s)') % { - 'id': self.id, + return _('%(numero)sº (%(inicio)s - %(fim)s)') % { + 'numero': self.numero, 'inicio': self.data_inicio.year, 'fim': self.data_fim.year} diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 0fabc8361..089f93efd 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -234,7 +234,7 @@ class MandatoCrud(MasterDetailCrud): help_path = '' class ListView(MasterDetailCrud.ListView): - ordering = ('-legislatura__data_inicio') + ordering = ('-numero') class CreateView(PermissionRequiredMixin, MasterDetailCrud.CreateView): permission_required = permissoes_parlamentares() @@ -251,7 +251,7 @@ class ColigacaoCrud(Crud): help_path = 'tabelas_auxiliares#coligacao' class ListView(CrudListView): - ordering = ('-legislatura__data_inicio', 'nome') + ordering = ('-numero', 'nome') class BaseMixin(PermissionRequiredMixin, CrudBaseMixin): def has_permission(self): @@ -368,7 +368,7 @@ class ParlamentarCrud(Crud): def take_legislatura_id(self): legislaturas = Legislatura.objects.all().order_by( - '-data_inicio', '-data_fim') + '-numero') if legislaturas: try: @@ -420,7 +420,7 @@ class ParlamentarCrud(Crud): # Adiciona legislatura para filtrar parlamentares legislaturas = Legislatura.objects.all().order_by( - '-data_inicio', '-data_fim') + '-numero') context['legislaturas'] = legislaturas context['legislatura_id'] = self.take_legislatura_id() return context @@ -450,7 +450,7 @@ class MesaDiretoraView(FormView): return self.render_to_response( {'legislaturas': Legislatura.objects.all( - ).order_by('-data_inicio'), + ).order_by('-numero'), 'legislatura_selecionada': Legislatura.objects.last(), 'cargos_vagos': CargoMesa.objects.all()}) @@ -477,7 +477,7 @@ class MesaDiretoraView(FormView): return self.render_to_response( {'legislaturas': Legislatura.objects.all( - ).order_by('-data_inicio'), + ).order_by('-numero'), 'legislatura_selecionada': Legislatura.objects.last(), 'sessoes': SessaoLegislativa.objects.filter( legislatura=Legislatura.objects.last()), @@ -538,7 +538,7 @@ class MesaDiretoraView(FormView): parlamentares_ocupados)) return self.render_to_response( {'legislaturas': Legislatura.objects.all( - ).order_by('-data_inicio'), + ).order_by('-numero'), 'legislatura_selecionada': Legislatura.objects.get( id=int(request.POST['legislatura'])), 'sessoes': SessaoLegislativa.objects.filter( diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index b8b24043a..42d8d02ea 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -129,7 +129,7 @@ class SessaoPlenaria(models.Model): 'tipo_nome': self.tipo.nome, 'sessao_legislativa_numero': self.sessao_legislativa.numero, # XXX check if it shouldn't be legislatura.numero - 'legislatura_id': self.legislatura.id} + 'legislatura_id': self.legislatura.numero} class AbstractOrdemDia(models.Model): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 6112307f1..4442890a1 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -2012,7 +2012,7 @@ class PesquisarSessaoPlenariaView(FilterView): qs = self.get_queryset() qs = qs.distinct().order_by( - '-legislatura__id', '-data_inicio', '-numero') + '-legislatura__numero', '-data_inicio', '-numero') kwargs.update({ 'queryset': qs, diff --git a/scripts/id_numero_legislatura.py b/scripts/id_numero_legislatura.py new file mode 100644 index 000000000..5552050cf --- /dev/null +++ b/scripts/id_numero_legislatura.py @@ -0,0 +1,11 @@ +from sapl.parlamentares.models import Legislatura + + +def popula_numero_legislatura_id(): + for l in Legislatura.objects.all(): + l.numero = l.id + l.save() + + +if __name__ == '__main__': + popula_numero_legislatura_id() diff --git a/scripts/inicializa_grupos_autorizacoes.py b/scripts/inicializa_grupos_autorizacoes.py index f0fe713ca..378301910 100644 --- a/scripts/inicializa_grupos_autorizacoes.py +++ b/scripts/inicializa_grupos_autorizacoes.py @@ -110,5 +110,6 @@ def cria_grupos_permissoes(): nome_usuario = 'operador_autor' cria_usuario(nome_usuario, grupo) + if __name__ == '__main__': cria_grupos_permissoes()