Browse Source

Merge branch '3.1.x'

pull/1981/head
Edward Ribeiro 8 years ago
parent
commit
b9e297438f
  1. 2
      docker-compose.yml
  2. 44
      release.sh
  3. 30
      sapl/materia/forms.py
  4. 3
      sapl/materia/views.py
  5. 16
      sapl/protocoloadm/forms.py
  6. 10
      sapl/sessao/views.py
  7. 2
      sapl/templates/norma/subnav.yaml
  8. 2
      sapl/templates/sessao/mesa.html
  9. 3
      sapl/utils.py
  10. 2
      setup.py

2
docker-compose.yml

@ -11,7 +11,7 @@ sapldb:
ports: ports:
- "5432:5432" - "5432:5432"
sapl: sapl:
image: interlegis/sapl:3.1.76 image: interlegis/sapl:3.1.77
restart: always restart: always
environment: environment:
ADMIN_PASSWORD: interlegis ADMIN_PASSWORD: interlegis

44
release.sh

@ -6,14 +6,40 @@ MAIN_REV=`echo $VERSION | cut -f 1,2 -d '.'`
NEXT_NUMBER=$(($LAST_DIGIT + 1)) NEXT_NUMBER=$(($LAST_DIGIT + 1))
NEXT_VERSION=$MAIN_REV'.'$NEXT_NUMBER NEXT_VERSION=$MAIN_REV'.'$NEXT_NUMBER
sed -e s/$VERSION/$NEXT_VERSION/g docker-compose.yml > tmp1
mv tmp1 docker-compose.yml
sed -e s/$VERSION/$NEXT_VERSION/g setup.py > tmp2 function bump_version {
mv tmp2 setup.py sed -e s/$VERSION/$NEXT_VERSION/g docker-compose.yml > tmp1
mv tmp1 docker-compose.yml
sed -e s/$VERSION/$NEXT_VERSION/g setup.py > tmp2
mv tmp2 setup.py
}
function commit_and_push {
echo "committing..."
git add docker-compose.yml setup.py
git commit -m "Release: $NEXT_VERSION"
git tag $NEXT_VERSION
echo "sending to github..."
git push origin $NEXT_VERSION
git push origin
echo "done."
}
case "$1" in
--dryrun)
echo "Dry run"
bump_version
echo "done."
echo "Run git checkout -- docker-compose.yml setup.py to undo the files"
exit 0
;;
--a)
echo "generating release"
bump_version
commit_and_push
esac
git add docker-compose.yml setup.py
git commit -m "Release: $NEXT_VERSION"
git tag $NEXT_VERSION
git push origin $NEXT_VERSION
git push origin

30
sapl/materia/forms.py

@ -36,7 +36,7 @@ from sapl.materia.models import (AssuntoMateria, Autoria, MateriaAssunto,
from sapl.norma.models import (LegislacaoCitada, NormaJuridica, from sapl.norma.models import (LegislacaoCitada, NormaJuridica,
TipoNormaJuridica) TipoNormaJuridica)
from sapl.parlamentares.models import Legislatura from sapl.parlamentares.models import Legislatura
from sapl.protocoloadm.models import Protocolo from sapl.protocoloadm.models import Protocolo, DocumentoAdministrativo
from sapl.settings import MAX_DOC_UPLOAD_SIZE from sapl.settings import MAX_DOC_UPLOAD_SIZE
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES,
ChoiceWithoutValidationField, ChoiceWithoutValidationField,
@ -182,19 +182,39 @@ class MateriaLegislativaForm(ModelForm):
data_apresentacao = cleaned_data['data_apresentacao'] data_apresentacao = cleaned_data['data_apresentacao']
ano = cleaned_data['ano'] ano = cleaned_data['ano']
protocolo = cleaned_data['numero_protocolo']
protocolo_antigo = self.instance.numero_protocolo
if protocolo:
if not Protocolo.objects.filter(numero=protocolo,ano=ano).exists():
raise ValidationError(_('Protocolo %s/%s não'
' existe' % (protocolo, ano)))
if protocolo_antigo != protocolo:
exist_materia = MateriaLegislativa.objects.filter(
numero_protocolo=protocolo,
ano=ano).exists()
exist_doc = DocumentoAdministrativo.objects.filter(
protocolo_id=protocolo,
ano=ano).exists()
if exist_materia or exist_doc:
raise ValidationError(_('Protocolo %s/%s ja possui'
' documento vinculado'
% (protocolo, ano)))
if data_apresentacao.year != ano: if data_apresentacao.year != ano:
raise ValidationError("O ano da matéria não pode ser " raise ValidationError(_("O ano da matéria não pode ser "
"diferente do ano na data de apresentação") "diferente do ano na data de apresentação"))
ano_origem_externa = cleaned_data['ano_origem_externa'] ano_origem_externa = cleaned_data['ano_origem_externa']
data_origem_externa = cleaned_data['data_origem_externa'] data_origem_externa = cleaned_data['data_origem_externa']
if ano_origem_externa and data_origem_externa and \ if ano_origem_externa and data_origem_externa and \
ano_origem_externa != data_origem_externa.year: ano_origem_externa != data_origem_externa.year:
raise ValidationError("O ano de origem externa da matéria não " raise ValidationError(_("O ano de origem externa da matéria não "
"pode ser diferente do ano na data de " "pode ser diferente do ano na data de "
"origem externa") "origem externa"))
return cleaned_data return cleaned_data

3
sapl/materia/views.py

@ -937,7 +937,8 @@ class RelatoriaCrud(MasterDetailCrud):
except ObjectDoesNotExist: except ObjectDoesNotExist:
pass pass
else: else:
composicao = comissao.composicao_set.last() composicao = comissao.composicao_set.order_by(
'-periodo__data_inicio').first()
participacao = Participacao.objects.filter( participacao = Participacao.objects.filter(
composicao=composicao) composicao=composicao)

16
sapl/protocoloadm/forms.py

@ -698,6 +698,22 @@ class DocumentoAdministrativoForm(ModelForm):
numero_protocolo, ano_protocolo)) numero_protocolo, ano_protocolo))
raise ValidationError(msg) raise ValidationError(msg)
inst = self.instance.protocolo
protocolo_antigo = inst.numero if inst else None
if str(protocolo_antigo) != numero_protocolo:
exist_materia = MateriaLegislativa.objects.filter(
numero_protocolo=numero_protocolo,
ano=ano_protocolo).exists()
exist_doc = DocumentoAdministrativo.objects.filter(
protocolo_id=numero_protocolo,
ano=ano_protocolo).exists()
if exist_materia or exist_doc:
raise ValidationError(_('Protocolo %s/%s ja possui'
' documento vinculado'
% (numero_protocolo, ano_protocolo)))
return self.cleaned_data return self.cleaned_data
def save(self, commit=True): def save(self, commit=True):

10
sapl/sessao/views.py

@ -4,7 +4,7 @@ from operator import itemgetter
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import permission_required from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db.models import Max, Q from django.db.models import Max, Q
from django.forms.utils import ErrorList from django.forms.utils import ErrorList
@ -990,8 +990,8 @@ class MesaView(FormMixin, DetailView):
set( set(
[p.parlamentar for p in parlamentares]) - set( [p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados)) parlamentares_ocupados))
org_parlamentares_vagos = parlamentares_vagos
org_parlamentares_vagos = sorted(parlamentares_vagos, key=lambda x: x.nome_parlamentar) org_parlamentares_vagos.sort(key=lambda x: remover_acentos(x.nome_parlamentar))
org_parlamentares_vagos = [p for p in org_parlamentares_vagos if p.ativo] org_parlamentares_vagos = [p for p in org_parlamentares_vagos if p.ativo]
# Se todos os cargos estiverem ocupados, a listagem de parlamentares # Se todos os cargos estiverem ocupados, a listagem de parlamentares
# deve ser renderizada vazia # deve ser renderizada vazia
@ -1046,8 +1046,10 @@ def atualizar_mesa(request):
lista_composicao = [(c.id, c.parlamentar.__str__(), lista_composicao = [(c.id, c.parlamentar.__str__(),
c.cargo.__str__()) for c in composicao_mesa] c.cargo.__str__()) for c in composicao_mesa]
lista_parlamentares = [( lista_parlamentares = [(
p.id, p.__str__()) for p in parlamentares_vagos] p.id, p.nome_parlamentar)
for p in parlamentares_vagos if p.ativo]
lista_cargos = [(c.id, c.__str__()) for c in cargos_vagos] lista_cargos = [(c.id, c.__str__()) for c in cargos_vagos]
lista_parlamentares.sort(key=lambda x: remover_acentos(x[1]))
return JsonResponse( return JsonResponse(
{'lista_composicao': lista_composicao, {'lista_composicao': lista_composicao,

2
sapl/templates/norma/subnav.yaml

@ -4,7 +4,7 @@
url: normajuridica_detail url: normajuridica_detail
- title: {% trans 'Alterações em Outras Normas' %} - title: {% trans 'Alterações em Outras Normas' %}
url: normarelacionada_list url: normarelacionada_list
check_permission: norma.normarelacionada_list check_permission: norma.list_normarelacionada
# Opção adicionada para chamar o TextoArticulado da norma. # Opção adicionada para chamar o TextoArticulado da norma.
# para integração foram necessárias apenas criar a url norma_ta em urls.py # para integração foram necessárias apenas criar a url norma_ta em urls.py

2
sapl/templates/sessao/mesa.html

@ -38,7 +38,7 @@
<label id='parlamentar-cargo-title' style="display: none">Parlamentar | Cargo</label> <label id='parlamentar-cargo-title' style="display: none">Parlamentar | Cargo</label>
<select class="form-control" name="parlamentar" id="id_parlamentar" style="display: none"> <select class="form-control" name="parlamentar" id="id_parlamentar" style="display: none">
{% for p in parlamentares %} {% for p in parlamentares %}
<option value="{{p.id}}">{{p.nome_completo}}</option> <option value="{{p.id}}">{{p.nome_parlamentar}}</option>
{% endfor %} {% endfor %}
</select> </select>
<br /> <br />

3
sapl/utils.py

@ -735,5 +735,4 @@ def RemoveTag(texto):
return textoSaida return textoSaida
def remover_acentos(string): def remover_acentos(string):
return ''.join([c for c in unicodedata.normalize('NFD', string) return unicodedata.normalize('NFKD', string).encode('ASCII', 'ignore').decode()
if unicodedata.category(c) != 'Mn'])

2
setup.py

@ -49,7 +49,7 @@ install_requires = [
] ]
setup( setup(
name='interlegis-sapl', name='interlegis-sapl',
version='3.1.76', version='3.1.77',
packages=find_packages(), packages=find_packages(),
include_package_data=True, include_package_data=True,
license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007', license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007',

Loading…
Cancel
Save