From f81ca5c1036e849a872b3555364d48860102f023 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Mon, 26 Sep 2016 17:42:21 -0300 Subject: [PATCH] =?UTF-8?q?Conclui=20registro=20de=20inclus=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/compilacao/forms.py | 38 +----- sapl/compilacao/views.py | 114 ++++++++++++------ sapl/static/js/compilacao.js | 6 +- sapl/static/js/compilacao_edit.js | 18 +-- sapl/static/styles/compilacao.scss | 5 +- sapl/templates/base.html | 1 + .../ajax_actions_registro_inclusao.html | 18 +++ .../layout/dispositivo_checkbox.html | 2 +- .../compilacao/layout/dispositivo_radio.html | 2 +- 9 files changed, 121 insertions(+), 83 deletions(-) create mode 100644 sapl/templates/compilacao/ajax_actions_registro_inclusao.html diff --git a/sapl/compilacao/forms.py b/sapl/compilacao/forms.py index f01940eac..7e318fa15 100644 --- a/sapl/compilacao/forms.py +++ b/sapl/compilacao/forms.py @@ -1357,15 +1357,15 @@ class DispositivoRegistroInclusaoForm(Form): 'Seleção do Dispositivo Base para inclusão ' 'de novo dispositivo.'), row_dispositivo, - css_class="col-md-6")) + css_class="col-md-12")) layout.append(Field('dispositivo_search_form')) - layout.append(Div(css_class="allowed_inserts col-md-6")) + layout.append(Div(css_class="allowed_inserts col-md-12")) more = [ HTML('%s' % _('Cancelar')), ] - more.append(Submit('salvar', _('Salvar'), css_class='pull-right')) + #more.append(Submit('salvar', _('Salvar'), css_class='pull-right')) buttons = FormActions(*more, css_class='form-group') @@ -1378,35 +1378,3 @@ class DispositivoRegistroInclusaoForm(Form): super(DispositivoRegistroInclusaoForm, self).__init__(*args, **kwargs) self.fields['dispositivo_base_para_inclusao'].choices = [] - - -class AllowedInsertsFragmentForm(forms.Form): - - json_add_next = forms.ChoiceField( - label=_('Inserir Depois'), choices=[], - required=False) - - json_add_in = forms.ChoiceField( - label=_('Inserir Dentro'), choices=[], - required=False) - - def __init__(self, *args, **kwargs): - kwargs.pop('instance') - allowed_inserts = kwargs['initial'].pop('allowed_inserts') - - super(AllowedInsertsFragmentForm, self).__init__( - *args, **kwargs) - - self.fields['json_add_next'].widget = forms.RadioSelect() - self.fields['json_add_in'].widget = forms.RadioSelect() - - for opcoes in allowed_inserts: - self.fields[opcoes['action']].choices = [ - ('%s,%s' % (item['tipo_pk'], - item['variacao']), - item['provavel']) - for item in opcoes['itens']] - - self.helper = FormHelper() - self.helper.form_tag = False - self.helper.disable_csrf = True diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 4a3d4c7f3..ff85b0d6b 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1,6 +1,6 @@ -import sys from collections import OrderedDict from datetime import datetime, timedelta +import sys from braces.views import FormMessagesMixin from django import forms @@ -23,8 +23,7 @@ from django.views.generic.edit import (CreateView, DeleteView, FormView, UpdateView) from django.views.generic.list import ListView -from sapl.compilacao.forms import (AllowedInsertsFragmentForm, - DispositivoDefinidorVigenciaForm, +from sapl.compilacao.forms import (DispositivoDefinidorVigenciaForm, DispositivoEdicaoAlteracaoForm, DispositivoEdicaoBasicaForm, DispositivoEdicaoVigenciaForm, @@ -44,6 +43,7 @@ from sapl.compilacao.utils import (DISPOSITIVO_SELECT_RELATED, DISPOSITIVO_SELECT_RELATED_EDIT) from sapl.crud.base import Crud, CrudListView, make_pagination + TipoNotaCrud = Crud.build(TipoNota, 'tipo_nota') TipoVideCrud = Crud.build(TipoVide, 'tipo_vide') TipoPublicacaoCrud = Crud.build(TipoPublicacao, 'tipo_publicacao') @@ -1743,7 +1743,9 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): def json_add_in(self, context): return self.json_add_next(context, local_add='json_add_in') - def json_add_next(self, context, local_add='json_add_next'): + def json_add_next( + self, + context, local_add='json_add_next', create_auto_inserts=True): try: dp_auto_insert = None @@ -1837,23 +1839,24 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): dp.publicacao = pub_last dp.save() - tipos_dp_auto_insert = tipo.filhos_permitidos.filter( - filho_de_insercao_automatica=True, - perfil_id=context['perfil_pk']) - count_auto_insert = 0 - for tipoauto in tipos_dp_auto_insert: - qtdp = tipoauto.quantidade_permitida - if qtdp >= 0: - qtdp -= Dispositivo.objects.filter( - ta_id=dp.ta_id, - dispositivo_pai_id=dp.id, - tipo_dispositivo_id=tipoauto.filho_permitido.pk - ).count() - if qtdp > 0: + if create_auto_inserts: + tipos_dp_auto_insert = tipo.filhos_permitidos.filter( + filho_de_insercao_automatica=True, + perfil_id=context['perfil_pk']) + + for tipoauto in tipos_dp_auto_insert: + qtdp = tipoauto.quantidade_permitida + if qtdp >= 0: + qtdp -= Dispositivo.objects.filter( + ta_id=dp.ta_id, + dispositivo_pai_id=dp.id, + tipo_dispositivo_id=tipoauto.filho_permitido.pk + ).count() + if qtdp > 0: + count_auto_insert += 1 + else: count_auto_insert += 1 - else: - count_auto_insert += 1 # Inserção automática if count_auto_insert: @@ -2006,6 +2009,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): except Exception as e: print(e) + return {} class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, @@ -2022,6 +2026,9 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, if 'variacao' in self.request.GET: context['variacao'] = self.request.GET['variacao'] + if 'pk_bloco' in self.request.GET: + context['pk_bloco'] = self.request.GET['pk_bloco'] + if 'perfil_estrutural' in self.request.session: context['perfil_pk'] = self.request.session['perfil_estrutural'] @@ -2069,13 +2076,42 @@ class ActionsEditMixin(ActionDragAndMoveDispositivoAlteradoMixin, return perfis[0].pk return None - def registra_inclusao(self, bloco_alteracao, dispositivo_base_inclusao): - data = {} - data.update({'pk': bloco_alteracao.pk, - 'pai': [bloco_alteracao.pk, ]}) + def json_add_next_registra_inclusao( + self, context, local_add='json_add_next'): + + data = self.json_add_next(context, + local_add=local_add, + create_auto_inserts=True) + + if data: + bloco_alteracao = Dispositivo.objects.get(pk=context['pk_bloco']) + + ndp = Dispositivo.objects.get(pk=data['pk']) + + ndp.dispositivo_atualizador = bloco_alteracao + ndp.ta_publicado = bloco_alteracao.ta + ndp.publicacao = bloco_alteracao.publicacao + ndp.dispositivo_vigencia = bloco_alteracao.dispositivo_vigencia + if ndp.dispositivo_vigencia: + ndp.inicio_eficacia = ndp.dispositivo_vigencia.inicio_eficacia + ndp.inicio_vigencia = ndp.dispositivo_vigencia.inicio_vigencia + else: + ndp.inicio_eficacia = bloco_alteracao.inicio_eficacia + ndp.inicio_vigencia = bloco_alteracao.inicio_vigencia + + ndp.save() + + bloco_alteracao.ordenar_bloco_alteracao() + + data.update({'pk': ndp.pk, + 'pai': [bloco_alteracao.pk, ]}) return data + def json_add_in_registra_inclusao(self, context): + return self.json_add_next_registra_inclusao( + context, local_add='json_add_in') + def registra_revogacao(self, bloco_alteracao, dispositivo_a_revogar): return self.registra_alteracao( bloco_alteracao, @@ -2261,14 +2297,13 @@ class DispositivoDinamicEditView( self.form_class = DispositivoRegistroRevogacaoForm elif self.action.endswith('_inclusao'): self.form_class = DispositivoRegistroInclusaoForm - elif self.action.endswith('_radio_allowed_inserts'): - self.form_class = AllowedInsertsFragmentForm + context = self.get_context_data() return self.render_to_response(context) elif self.action.startswith('get_actions'): self.form_class = None - self.template_name = 'compilacao/ajax_actions_dinamic_edit.html' + self.object = Dispositivo.objects.get( pk=self.kwargs['dispositivo_id']) @@ -2277,17 +2312,26 @@ class DispositivoDinamicEditView( context = {} context['object'] = self.object - if ta_id == str(self.object.ta_id): + if self.action.endswith('_allowed_inserts_registro_inclusao'): + self.template_name = ('compilacao/' + 'ajax_actions_registro_inclusao.html') context['allowed_inserts'] = self.allowed_inserts() - if 'perfil_pk' in request.GET: - self.set_perfil_in_session( - request, request.GET['perfil_pk']) - elif 'perfil_estrutural' not in request.session: - self.set_perfil_in_session(request=request) + else: + self.template_name = ('compilacao/' + 'ajax_actions_dinamic_edit.html') + + if ta_id == str(self.object.ta_id): + context['allowed_inserts'] = self.allowed_inserts() + + if 'perfil_pk' in request.GET: + self.set_perfil_in_session( + request, request.GET['perfil_pk']) + elif 'perfil_estrutural' not in request.session: + self.set_perfil_in_session(request=request) - context['perfil_estrutural_list' - ] = PerfilEstruturalTextoArticulado.objects.all() + context['perfil_estrutural_list' + ] = PerfilEstruturalTextoArticulado.objects.all() return self.render_to_response(context) @@ -2310,7 +2354,7 @@ class DispositivoDinamicEditView( data = self.registra_alteracao(d, dispositivo_a_alterar) - if formtype == 'get_form_revogacao': + elif formtype == 'get_form_revogacao': dispositivo_a_revogar = Dispositivo.objects.get( pk=request.POST['dispositivo_revogado']) diff --git a/sapl/static/js/compilacao.js b/sapl/static/js/compilacao.js index f18d56bc2..6d797ea41 100644 --- a/sapl/static/js/compilacao.js +++ b/sapl/static/js/compilacao.js @@ -148,7 +148,7 @@ function DispostivoSearch(opts) { var btn_open_search = $('