Browse Source

Merge pull request #3 from interlegis/master

atual 21032017
pull/1374/head
Rogério Frá 8 years ago
committed by GitHub
parent
commit
dee6943742
  1. 43
      docs/howtogit.rst
  2. 4
      sapl/base/urls.py
  3. 4
      sapl/materia/forms.py
  4. 21
      sapl/materia/migrations/0077_auto_20170321_1130.py
  5. 2
      sapl/materia/models.py
  6. 8
      sapl/materia/views.py
  7. 7
      sapl/parlamentares/forms.py
  8. 5
      sapl/parlamentares/tests/test_parlamentares.py
  9. 8
      sapl/parlamentares/views.py
  10. 22
      sapl/protocoloadm/forms.py
  11. 21
      sapl/protocoloadm/migrations/0013_auto_20170320_1637.py
  12. 21
      sapl/protocoloadm/migrations/0014_auto_20170321_1130.py
  13. 4
      sapl/protocoloadm/models.py
  14. 16
      sapl/protocoloadm/views.py
  15. 11
      sapl/relatorios/views.py
  16. 2
      sapl/sessao/urls.py
  17. 18
      sapl/templates/materia/materialegislativa_filter.html
  18. 2
      sapl/templates/protocoloadm/layouts.yaml

43
docs/howtogit.rst

@ -22,11 +22,46 @@ Atualizar a base local:
Exibir informações:
git status
Ver repositorio
git remote -v
Para definir repositorio
git remote set-url origin https://github.com/interlegis/sapl.git
Para criar um branch
git checkout -b nome_branch
git add arquivos
Para remover um branch
git branch -d nome-branch
Para comitar
git commit -m "Comentário"
Para enviar o branch
git push origin nome_branch
Na base local descartar alguma alteração feita nos arquivos:
git checkout sapl/legacy_migration_settings.py
git checkout -- <arquivo>
Ao invés dissoremover todas as alterações e commits locais, recuperar o histórico mais recente do servidor e apontar para seu branch master local
git fetch origin
git reset --hard origin/master
Atualizar para alguma brach especifica (ex:785-atualizar-migracao):
@ -39,3 +74,9 @@ Voltar para a branch master
Verificar 5 ultimos comits:
git log --oneline -n 5
Referência:
http://rogerdudler.github.io/git-guide/index.pt_BR.html
http://tableless.com.br/tudo-que-voce-queria-saber-sobre-git-e-github-mas-tinha-vergonha-de-perguntar/

4
sapl/base/urls.py

@ -90,8 +90,8 @@ urlpatterns = [
ConfirmarEmailView.as_view(), name='confirmar_email'),
# todos os sublink s de sistema devem vir acima deste
url(r'^sistema/', permission_required('base.view_tabelas_auxiliares')
# todos os sublinks de sistema devem vir acima deste
url(r'^sistema/$', permission_required('base.view_tabelas_auxiliares')
(TemplateView.as_view(template_name='sistema.html'))),
url(r'^login/$', views.login, {

4
sapl/materia/forms.py

@ -190,10 +190,6 @@ class RelatoriaForm(ModelForm):
def __init__(self, *args, **kwargs):
super(RelatoriaForm, self).__init__(*args, **kwargs)
self.fields['parlamentar'].queryset = Parlamentar.objects.filter(
ativo=True, id__in=Participacao.objects.filter(
composicao_id=self.initial['comissao']
).values_list('parlamentar_id')).order_by('nome_completo')
def clean(self):
cleaned_data = self.cleaned_data

21
sapl/materia/migrations/0077_auto_20170321_1130.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-03-21 11:30
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('materia', '0076_merge'),
]
operations = [
migrations.AlterField(
model_name='relatoria',
name='comissao',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='comissoes.Comissao', verbose_name='Comissão'),
),
]

2
sapl/materia/models.py

@ -489,7 +489,7 @@ class Relatoria(models.Model):
null=True,
verbose_name=_('Motivo Fim Relatoria'))
comissao = models.ForeignKey(
Comissao, blank=True, null=True, verbose_name=_('Localização Atual'))
Comissao, blank=True, null=True, verbose_name=_('Comissão'))
data_designacao_relator = models.DateField(
verbose_name=_('Data Designação'))
data_destituicao_relator = models.DateField(

8
sapl/materia/views.py

@ -47,8 +47,8 @@ from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm,
AdicionarVariasAutoriasFilterSet, DespachoInicialForm,
DocumentoAcessorioForm, MateriaLegislativaFilterSet,
MateriaSimplificadaForm, PrimeiraTramitacaoEmLoteFilterSet,
ReceberProposicaoForm, TramitacaoEmLoteFilterSet,
filtra_tramitacao_destino,
ReceberProposicaoForm, RelatoriaForm,
TramitacaoEmLoteFilterSet, filtra_tramitacao_destino,
filtra_tramitacao_destino_and_status,
filtra_tramitacao_status)
from .models import (AcompanhamentoMateria, Anexada, Autoria, DespachoInicial,
@ -808,6 +808,7 @@ class RelatoriaCrud(MasterDetailCrud):
public = [RP_LIST, RP_DETAIL]
class CreateView(MasterDetailCrud.CreateView):
form_class = RelatoriaForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@ -848,6 +849,9 @@ class RelatoriaCrud(MasterDetailCrud):
return {'comissao': localizacao}
class UpdateView(MasterDetailCrud.UpdateView):
form_class = RelatoriaForm
class TramitacaoCrud(MasterDetailCrud):
model = Tramitacao

7
sapl/parlamentares/forms.py

@ -61,9 +61,10 @@ class MandatoForm(ModelForm):
def clean(self):
data = self.cleaned_data
try:
mandato = Mandato.objects.get(
parlamentar__pk=self.initial['parlamentar'].pk,
legislatura__pk=data['legislatura'].pk)
if 'legislatura' in data and 'parlamentar' in data:
mandato = Mandato.objects.get(
parlamentar__pk=self.initial['parlamentar'].pk,
legislatura__pk=data['legislatura'].pk)
except ObjectDoesNotExist:
pass
else:

5
sapl/parlamentares/tests/test_parlamentares.py

@ -122,9 +122,10 @@ def test_mandato_submit(admin_client):
mommy.make(Parlamentar, pk=14)
mommy.make(Legislatura, pk=5)
admin_client.post(reverse('sapl.parlamentares:mandato_create',
response = admin_client.post(reverse('sapl.parlamentares:mandato_create',
kwargs={'pk': 14}),
{'legislatura': 5,
{'parlamentar': 14, # hidden field
'legislatura': 5,
'data_fim_mandato': '2016-01-01',
'data_expedicao_diploma': '2016-03-22',
'observacao': 'Observação do mandato',

8
sapl/parlamentares/views.py

@ -307,17 +307,19 @@ class ParlamentarCrud(Crud):
def get_queryset(self):
queryset = super().get_queryset()
legislatura_id = self.take_legislatura_id()
if legislatura_id != 0:
return queryset.filter(
mandato__legislatura_id=legislatura_id)
else:
try:
l = Legislatura.objects.all().order_by('-data_inicio').first().pk
l = Legislatura.objects.all().order_by(
'-data_inicio').first()
except ObjectDoesNotExist:
return []
return Legislatura.objects.all()
else:
if l is None:
return Legislatura.objects.all()
return queryset.filter(mandato__legislatura_id=l)
def get_headers(self):

22
sapl/protocoloadm/forms.py

@ -540,6 +540,15 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm):
class DocumentoAdministrativoForm(ModelForm):
data = forms.DateField(initial=datetime.today)
ano_protocolo = forms.ChoiceField(required=False,
label=Protocolo._meta.
get_field('ano').verbose_name,
choices=RANGE_ANOS,
widget=forms.Select(
attrs={'class': 'selector'}))
class Meta:
model = DocumentoAdministrativo
fields = ['tipo',
@ -547,6 +556,7 @@ class DocumentoAdministrativoForm(ModelForm):
'ano',
'data',
'numero_protocolo',
'ano_protocolo',
'assunto',
'interessado',
'tramitacao',
@ -561,23 +571,22 @@ class DocumentoAdministrativoForm(ModelForm):
def clean(self):
numero_protocolo = self.data['numero_protocolo']
ano = self.data['ano']
ano_protocolo = self.data['ano_protocolo']
if numero_protocolo and ano:
if numero_protocolo and ano_protocolo:
try:
self.fields['protocolo'].initial = Protocolo.objects.get(
numero=numero_protocolo,
ano=ano).pk
ano=ano_protocolo).pk
except ObjectDoesNotExist:
msg = _('Protocolo %s/%s inexistente' % (
numero_protocolo, ano))
numero_protocolo, ano_protocolo))
raise ValidationError(str(msg))
return self.cleaned_data
def save(self, commit=True):
documento = super(DocumentoAdministrativoForm, self).save(False)
if self.fields['protocolo'].initial:
documento.protocolo = Protocolo.objects.get(
id=int(self.fields['protocolo'].initial))
@ -587,11 +596,12 @@ class DocumentoAdministrativoForm(ModelForm):
return documento
def __init__(self, *args, **kwargs):
row1 = to_row(
[('tipo', 4), ('numero', 4), ('ano', 4)])
row2 = to_row(
[('data', 6), ('numero_protocolo', 6)])
[('data', 4), ('numero_protocolo', 4), ('ano_protocolo', 4)])
row3 = to_row(
[('assunto', 12)])

21
sapl/protocoloadm/migrations/0013_auto_20170320_1637.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.11 on 2017-03-20 16:37
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0012_auto_20170315_1211'),
]
operations = [
migrations.AlterField(
model_name='documentoadministrativo',
name='observacao',
field=models.TextField(blank=True, default='', verbose_name='Observação'),
preserve_default=False,
),
]

21
sapl/protocoloadm/migrations/0014_auto_20170321_1130.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-03-21 11:30
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0013_auto_20170320_1637'),
]
operations = [
migrations.AlterField(
model_name='documentoadministrativo',
name='protocolo',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='protocoloadm.Protocolo', verbose_name='Protocolo'),
),
]

4
sapl/protocoloadm/models.py

@ -110,7 +110,7 @@ class DocumentoAdministrativo(models.Model):
protocolo = models.ForeignKey(
Protocolo,
blank=True,
null=True)
null=True, verbose_name=_('Protocolo'))
data = models.DateField(verbose_name=_('Data'))
numero_protocolo = models.PositiveIntegerField(
blank=True, null=True, verbose_name=_('Núm. Protocolo'))
@ -126,7 +126,7 @@ class DocumentoAdministrativo(models.Model):
choices=YES_NO_CHOICES)
assunto = models.TextField(verbose_name=_('Assunto'))
observacao = models.TextField(
blank=True, null=True, verbose_name=_('Observação'))
blank=True, verbose_name=_('Observação'))
texto_integral = models.FileField(
blank=True,
null=True,

16
sapl/protocoloadm/views.py

@ -87,7 +87,7 @@ class DocumentoAdministrativoCrud(Crud):
class BaseMixin(Crud.BaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data',
'numero_protocolo', 'assunto',
'numero_protocolo', 'ano_protocolo', 'assunto',
'interessado', 'tramitacao', 'texto_integral']
class ListView(DocumentoAdministrativoMixin, Crud.ListView):
@ -95,9 +95,17 @@ class DocumentoAdministrativoCrud(Crud):
class CreateView(DocumentoAdministrativoMixin, Crud.CreateView):
form_class = DocumentoAdministrativoForm
layout_key = None
class UpdateView(DocumentoAdministrativoMixin, Crud.UpdateView):
form_class = DocumentoAdministrativoForm
layout_key = None
def get_initial(self):
if self.object.protocolo:
p = self.object.protocolo
return {'ano_protocolo': p.ano,
'numero_protocolo': p.numero}
class DetailView(DocumentoAdministrativoMixin, Crud.DetailView):
def get_context_data(self, **kwargs):
@ -303,8 +311,10 @@ class CriarDocumentoProtocolo(PermissionRequiredMixin, CreateView):
doc = {}
doc['tipo'] = protocolo.tipo_documento
doc['ano'] = curr_year
doc['data'] = protocolo.data
doc['data'] = datetime.today()
doc['numero_protocolo'] = protocolo.numero
doc['ano_protocolo'] = protocolo.ano
doc['protocolo'] = protocolo.id
doc['assunto'] = protocolo.assunto_ementa
doc['interessado'] = protocolo.interessado
doc['numero'] = numero_max + 1 if numero_max else 1
@ -329,7 +339,7 @@ class ProtocoloMostrarView(PermissionRequiredMixin, TemplateView):
else:
context['materia'] = materia
elif protocolo.tipo_documento:
if protocolo.tipo_documento:
context[
'documentos'] = protocolo.documentoadministrativo_set.all().order_by('-ano', '-numero')

11
sapl/relatorios/views.py

@ -504,13 +504,16 @@ def get_sessao_plenaria(sessao, casa):
lst_presenca_sessao = []
for presenca in SessaoPlenariaPresenca.objects.filter(
sessao_plenaria=sessao):
for parlamentar in Parlamentar.objects.filter(
id=presenca.parlamentar.id):
dic_presenca = {}
dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar
partido_sigla = Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla
if not partido_sigla:
partido = Filiacao.objects.filter(
parlamentar=parlamentar).first()
if partido:
partido_sigla = partido.partido.sigla
else:
partido_sigla = ''
dic_presenca['sgl_partido'] = partido_sigla
lst_presenca_sessao.append(dic_presenca)
@ -569,6 +572,7 @@ def get_sessao_plenaria(sessao, casa):
dic_expediente_materia["txt_ementa"] = str(materia.ementa)
dic_expediente_materia["ordem_observacao"] = ' ' # TODO
dic_expediente_materia["nom_autor"] = ' '
dic_expediente_materia["nom_resultado"] = ''
autoria = Autoria.objects.filter(
materia=materia, primeiro_autor=True).first()
@ -650,6 +654,7 @@ def get_sessao_plenaria(sessao, casa):
id=votacao.materia.id).first()
dic_votacao = {}
dic_votacao["nom_resultado"] = ''
dic_votacao["num_ordem"] = votacao.numero_ordem
dic_votacao["id_materia"] = (
materia.tipo.sigla + ' ' +

2
sapl/sessao/urls.py

@ -129,7 +129,7 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/matexp/votsec/view/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoExpedienteEditView.as_view(), name='votacaosecretaexpedit'),
url(r'^ajax/mudar-ordem-materia-sessao/',
url(r'^sessao/mudar-ordem-materia-sessao/',
mudar_ordem_materia_sessao,
name='mudar_ordem_materia_sessao'),
]

18
sapl/templates/materia/materialegislativa_filter.html

@ -43,17 +43,23 @@
<strong>Apresentação: </strong>{{ m.data_apresentacao }}
</br>
{% endif %}
{% if m.autoria_set.all %}
<strong>Autores:</strong>
{% for a in m.autoria_set.all %}
{% if not forloop.first %}
, &nbsp;&nbsp; {{a.autor|default_if_none:"Não Informado"}}
, &nbsp;&nbsp; {{a.autor}}
{% else %}
&nbsp;{{a.autor|default_if_none:"Não Informado"}}
&nbsp;{{a.autor}}
{% endif %}
{% endfor %}
</br>
<strong>Localização Atual:</strong> &nbsp;{{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não Informada"}}</br>
<strong>Status:</strong> &nbsp;{{m.tramitacao_set.last.status|default_if_none:"Não Informada"}}</br>
{% endif %}
{% if m.tramitacao_set.last.unidade_tramitacao_destino %}
<strong>Localização Atual:</strong> &nbsp;{{m.tramitacao_set.last.unidade_tramitacao_destino}}</br>
{% endif %}
{% if m.tramitacao_set.last.status %}
<strong>Status:</strong> &nbsp;{{m.tramitacao_set.last.status}}</br>
{% endif %}
{% if m.registrovotacao_set.exists %}
<strong>Data da última Votação:</strong>
{% if m.registrovotacao_set.last.ordem %}
@ -67,7 +73,9 @@
{% endif %}
</br>
{% endif %}
<strong>Data da última Tramitação:</strong> &nbsp;{{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não Informada"}}</br>
{% if m.tramitacao_set.last.data_tramitacao %}
<strong>Data da última Tramitação:</strong> &nbsp;{{m.tramitacao_set.last.data_tramitacao}}</br>
{% endif %}
{% if m.anexo_de.exists %}
{% for a in m.materia_anexada_set.all %}
<strong>Matéria Anexadora: </strong>&nbsp;

2
sapl/templates/protocoloadm/layouts.yaml

@ -6,7 +6,7 @@ TipoDocumentoAdministrativo:
DocumentoAdministrativo:
{% trans 'Indentificação Básica' %}:
- tipo numero ano
- data numero_protocolo
- data protocolo
- assunto
- interessado tramitacao
- texto_integral

Loading…
Cancel
Save