Browse Source

Conclui registro de inclusões

pull/704/head
LeandroRoberto 8 years ago
parent
commit
f81ca5c103
  1. 38
      sapl/compilacao/forms.py
  2. 114
      sapl/compilacao/views.py
  3. 4
      sapl/static/js/compilacao.js
  4. 18
      sapl/static/js/compilacao_edit.js
  5. 5
      sapl/static/styles/compilacao.scss
  6. 1
      sapl/templates/base.html
  7. 18
      sapl/templates/compilacao/ajax_actions_registro_inclusao.html
  8. 2
      sapl/templates/compilacao/layout/dispositivo_checkbox.html
  9. 2
      sapl/templates/compilacao/layout/dispositivo_radio.html

38
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('<a class="btn btn-inverse btn-fechar">%s</a>' %
_('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

114
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'])

4
sapl/static/js/compilacao.js

@ -148,7 +148,7 @@ function DispostivoSearch(opts) {
var btn_open_search = $('<button>')
.text(opts['text_button'])
.attr('type','button')
.attr('class','btn btn-sm btn-modal-open');
.attr('class','btn btn-sm btn-success btn-modal-open');
button_ds.append(btn_open_search);
btn_open_search.on('click', function() {
$.get(opts['url_form'], function(data) {
@ -222,7 +222,7 @@ function DispostivoSearch(opts) {
modal_ds.modal('hide');
if ('post_selected' in opts)
opts['post_selected']()
opts['post_selected'](opts['params_post_selected'])
});

18
sapl/static/js/compilacao_edit.js

@ -33,6 +33,7 @@ function DispositivoEdit() {
'tipo_pk' : this.getAttribute('tipo_pk'),
'perfil_pk' : this.getAttribute('perfil_pk'),
'variacao' : this.getAttribute('variacao'),
'pk_bloco' : this.getAttribute('pk_bloco'),
};
var url = pk+'/refresh';
@ -148,7 +149,9 @@ function DispositivoEdit() {
DispostivoSearch({
'url_form': url_search,
'text_button': 'Selecionar',
'post_selected': instance.update_radio_allowed_inserts
'post_selected': instance.allowed_inserts_registro_inclusao,
'params_post_selected': {'pk_bloco': _this.attr('pk')}
});
instance.scrollTo(_this);
@ -183,15 +186,16 @@ function DispositivoEdit() {
});
}
instance.update_radio_allowed_inserts = function(event) {
instance.allowed_inserts_registro_inclusao = function(params) {
dispositivo_base_para_inclusao = $("input[name='dispositivo_base_para_inclusao']")
var dispositivo_base_para_inclusao = $("#id"+params.pk_bloco+" input[name='dispositivo_base_para_inclusao']")
if (dispositivo_base_para_inclusao.length == 0)
return
var pk = dispositivo_base_para_inclusao[0].value;
return;
var pk = dispositivo_base_para_inclusao[0].value;
var form_data = {
'action' : 'get_form_radio_allowed_inserts'
'action' : 'get_actions_allowed_inserts_registro_inclusao',
'pk_bloco' : params.pk_bloco
};
var url = pk+'/refresh';
@ -199,8 +203,8 @@ function DispositivoEdit() {
$.get(url, form_data).done(function(data) {
$(".allowed_inserts").html(data);
$(".allowed_inserts").find('.btn-action').on('click', instance.bindActionsClick);
}).fail(instance.waitHide).always(instance.waitHide);
}
instance.loadActionsEdit = function(dpt) {

5
sapl/static/styles/compilacao.scss

@ -1281,7 +1281,7 @@ a:link:after, a:visited:after {
}
}
.result-busca-dispositivo, .lista-dispositvo {
.result-busca-dispositivo, .lista-dispositivo {
padding: 0 0 1em;
min-height: 3em;
@ -1342,6 +1342,9 @@ a:link:after, a:visited:after {
display: block;
margin: 0px;
}
.artigo {
float: none;
}
}
}
}

1
sapl/templates/base.html

@ -286,6 +286,7 @@
<script type="text/javascript" src="{% static 'js/jquery.runner.js' %}"></script>
<script type="text/javascript" src="{% static 'jquery-mask-plugin/dist/jquery.mask.js' %}"></script>
<script src="{% static 'tinymce/tinymce.min.js' %}"></script>
<script type="text/javascript" src="{% static 'jsdiff/diff.min.js' %}"></script>

18
sapl/templates/compilacao/ajax_actions_registro_inclusao.html

@ -0,0 +1,18 @@
{% load i18n %}
{% if object.dispositivo_subsequente == None %}
<div class="row">
{% for inserts in allowed_inserts %}
{% if inserts.itens %}
<div class="col-md-6">
<div class="list-group">
<a class="list-group-item active">{{inserts.icone|safe}}<span>{{inserts.tipo_insert}}</span></a>
{% for item in inserts.itens %}
<a class="btn-action list-group-item" action="{{inserts.action}}_registra_inclusao" pk="{{item.dispositivo_base}}" variacao="{{item.variacao}}" tipo_pk="{{item.tipo_pk}}" pk_bloco="{{request.GET.pk_bloco}}" >{{item.provavel|safe}}</a>
{% endfor %}
</div>
</div>
{% endif %}
{% endfor %}
</div>
{% endif %}

2
sapl/templates/compilacao/layout/dispositivo_checkbox.html

@ -1,7 +1,7 @@
{% load crispy_forms_filters %}
{% load i18n compilacao_filters common_tags%}
<div class="controls cp lista-dispositvo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
<div class="controls cp lista-dispositivo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
{% include 'bootstrap/layout/field_errors_block.html' %}
{% for choice in field.field.choices %}

2
sapl/templates/compilacao/layout/dispositivo_radio.html

@ -2,7 +2,7 @@
{% load i18n compilacao_filters common_tags%}
<div class="controls lista-dispositvo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
<div class="controls lista-dispositivo"{% if flat_attrs %} {{ flat_attrs|safe }}{% endif %}>
{% include 'bootstrap/layout/field_errors_block.html' %}
{% for choice, dpt in field.field.choices %}

Loading…
Cancel
Save