diff --git a/compilacao/forms.py b/compilacao/forms.py index 10aafbdd9..341983a47 100644 --- a/compilacao/forms.py +++ b/compilacao/forms.py @@ -980,43 +980,41 @@ class DispositivoEdicaoAlteracaoForm(ModelForm): (inst.dispositivo_atualizador.pk, inst.dispositivo_atualizador)] - def clean_dispositivo_substituido(self): - dst = self.cleaned_data['dispositivo_substituido'] + def clean(self): + """os cleans individuais do framework não puderam ser usados devido + a última validação compor dois valores + """ + data = self.cleaned_data + + dst = data['dispositivo_substituido'] + dsq = data['dispositivo_subsequente'] + da = data['dispositivo_atualizador'] + if dst == self.instance: + raise ValidationError(_('Não é permitido selecionar o próprio ' + 'Dispositivo como seu substituto.')) if dst and dst.ta != self.instance.ta: raise ValidationError(_('Não é permitido selecionar um ' 'Dispositivo de outro Texto Articulado.')) if dst and dst.tipo_dispositivo != self.instance.tipo_dispositivo: raise ValidationError(_('Não é permitido selecionar um ' 'Dispositivo de outro Tipo.')) - return dst - - def clean_dispositivo_subsequente(self): - dsq = self.cleaned_data['dispositivo_subsequente'] + if dsq == self.instance: + raise ValidationError(_('Não é permitido selecionar o próprio ' + 'Dispositivo como seu subsequente.')) if dsq and dsq.ta != self.instance.ta: raise ValidationError(_('Não é permitido selecionar um ' 'Dispositivo de outro Texto Articulado.')) if dsq and dsq.tipo_dispositivo != self.instance.tipo_dispositivo: raise ValidationError(_('Não é permitido selecionar um ' 'Dispositivo de outro Tipo.')) - return dsq - - def clean_dispositivo_atualizador(self): - da = self.cleaned_data['dispositivo_atualizador'] - if da and not da.tipo_dispositivo.dispositivo_de_alteracao and\ - not da.tipo_dispositivo.dispositivo_de_articulacao: + if da and not (da.tipo_dispositivo.dispositivo_de_alteracao and + da.tipo_dispositivo.dispositivo_de_articulacao): raise ValidationError(_('O Dispositivo de Atualização selecionado ' 'não é um Bloco de Alteração.')) - return da - - def clean(self): - data = self.cleaned_data - ndst = data['dispositivo_substituido'] - nda = data['dispositivo_atualizador'] - - if not nda and ndst: + if not da and dst: raise ValidationError(_('Não é permitido substituir um ' 'Dispositivo sem haver um ' 'Dispositivo Alterador.')) diff --git a/compilacao/templatetags/compilacao_filters.py b/compilacao/templatetags/compilacao_filters.py index 7a8bd5398..b43d28baf 100644 --- a/compilacao/templatetags/compilacao_filters.py +++ b/compilacao/templatetags/compilacao_filters.py @@ -100,7 +100,7 @@ def render_actions_head(view, d_atual): if view.pk_view == view.pk_edit and d_atual.pk == view.pk_view: return True - # conteudo e menu no filho + # conteudo e menu no filho - ocorre nas inclusões feitas através do editor if view.pk_view != view.pk_edit and d_atual.pk == view.pk_edit: return True diff --git a/compilacao/views.py b/compilacao/views.py index 48c211faf..44e4821e7 100644 --- a/compilacao/views.py +++ b/compilacao/views.py @@ -440,7 +440,7 @@ class VideCreateView(VideMixin, CreateView): self.object = None form = self.get_form() return self.render_to_response(self.get_context_data(form=form)) -""" + """ def get_form_kwargs(self): kwargs = super(VideCreateView, self).get_form_kwargs() @@ -1031,9 +1031,7 @@ class DispositivoSimpleEditView(TextEditView): return itens def select_provaveis_inserts(self, request=None): - try: - if request and 'perfil_estrutural' not in request.session: self.set_perfil_in_session(request) @@ -1247,10 +1245,14 @@ class DispositivoSimpleEditView(TextEditView): # result.insert(1, r) # remover temporariamente a opção inserir antes - # confirmar falta de necessidade + # confirmar necessidade if len(result) > 2: result.pop() + if tipb.dispositivo_de_articulacao and\ + tipb.dispositivo_de_alteracao: + result.pop() + except Exception as e: print(e) diff --git a/materia/migrations/0032_merge.py b/materia/migrations/0032_merge.py index 0592ea507..8882ae927 100644 --- a/materia/migrations/0032_merge.py +++ b/materia/migrations/0032_merge.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-10 12:43 +# Generated by Django 1.9.5 on 2016-05-09 01:00 from __future__ import unicode_literals from django.db import migrations @@ -8,8 +8,8 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('materia', '0031_merge'), ('materia', '0031_auto_20160502_1131'), + ('materia', '0031_merge'), ] operations = [ diff --git a/parlamentares/views.py b/parlamentares/views.py index fcd3c42ca..75f61426e 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -10,8 +10,8 @@ import crud.masterdetail from crud.base import Crud from crud.masterdetail import MasterDetailCrud -from .forms import (FiliacaoForm, LegislaturaForm, - ParlamentarCreateForm, ParlamentarForm) +from .forms import (FiliacaoForm, LegislaturaForm, ParlamentarCreateForm, + ParlamentarForm) from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, Filiacao, Legislatura, Mandato, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, diff --git a/static/js/compilacao_edit.js b/static/js/compilacao_edit.js index 4368325d9..c460ed3c7 100644 --- a/static/js/compilacao_edit.js +++ b/static/js/compilacao_edit.js @@ -156,7 +156,7 @@ var clickUpdateDispositivo = function(event, __pk_refresh, __pk_edit, __action, $('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2); $('.actions_inserts').removeClass('menu_flutuante'); } - else if (_editortype == 'detail') { + else if (_editortype == 'detail') { //TODO: código obsoleto - confirmar retirada desta condição $('.csform .btn-salvar').parent().removeClass("displaynone"); $('.csform .btn-salvar, .csform .fields').removeClass("displaynone"); $('#dpt'+pk_refresh).css('min-height', $('.actions_right').height()*2); @@ -164,7 +164,6 @@ var clickUpdateDispositivo = function(event, __pk_refresh, __pk_edit, __action, } $(".edt-"+_editortype).addClass('selected'); - //$(".container").addClass('class_color_container'); if (flag_actions_vibible == null || flag_actions_vibible) { $('#dpt'+pk_edit).addClass('dpt-selected'); @@ -265,6 +264,28 @@ function reloadFunctionClicks() { $('.btn-action').on('click', clickUpdateDispositivo); $('#editdi_texto').focus(); + $( ".bloco_alteracao" ).sortable({ + revert: true, + stop: function( event, ui ) { + var pk = ui.item.attr('pk'); + var pk_bloco = ui.item.closest('.bloco').closest('.dpt').attr('pk'); + console.log(pk+ ' - '+ pk_bloco); + }, + }); + + $( ".bloco_alteracao .dpt" ).draggable({ + connectToSortable: ".bloco_alteracao", + revert: 'invalid', + zIndex: 1, + drag: function( event, ui ) { + $( ".bloco_alteracao" ).css('border-width', '2px'); + }, + stop: function( event, ui ) { + $( ".bloco_alteracao" ).css('border-width', '0px'); + }, + }); + + $( ".bloco_alteracao" ).disableSelection(); } $(document).ready(function() { @@ -284,4 +305,9 @@ $(document).ready(function() { clickUpdateDispositivo(null, href[1], href[1], 'refresh', true); } + $('main').click(function(event) { + if (event.target == this || event.target == this.firstElementChild) + clearEditSelected(); + }); + }); diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index a1f9a195c..40163d5ad 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -50,7 +50,6 @@ a:link:after, a:visited:after { } @mixin li_flutuante() { - & > ul { transform: translateY(30px); transition: transform 0.1s linear, opacity 0.1s linear, clip 0s 0.3s; @@ -67,9 +66,7 @@ a:link:after, a:visited:after { border-right: 0px !important; } - &:first-child { - &::before { border-width: 0.375rem; border-style: inset inset solid; @@ -172,7 +169,6 @@ a:link:after, a:visited:after { .dpt { font-size:1em; - transition: all 0.2s ease-in-out; position: relative; .ementa { @@ -262,7 +258,6 @@ a:link:after, a:visited:after { margin-top: 2px; } - .bloco_alteracao { padding-left: 10%; font-style: italic; @@ -535,16 +530,14 @@ a:link:after, a:visited:after { position: absolute; opacity: 0; transition: all 0.4s ease-in-out; - z-index: 1; + z-index: 2000; a { &.btn-edit { - @include background-top-down(#3498DB, #2980C9); + background-color: #3498db; color: #ffffff !important; - font-weight: bold; - padding: 5px 7px 3px; + padding: 8px 18px 6px; display: inline-block; line-height: 1; - } } } @@ -568,35 +561,26 @@ a:link:after, a:visited:after { margin: 2em 0; } .bloco_alteracao { - border: 1px solid #ddd; - margin: -1px 0 0; - padding: 1em; - } - - .articulacao1 { - margin-top: 2em; - &::before { - content: "Articulação"; - background-color: #eee; - border-bottom: 1px dotted #E88C8C; - padding: 0.333em; - padding-left: 1em; - display:block; - } - } - .bloco_alteracao1 { - @extend .articulacao1; - margin: -1px 0 0; - padding: 1em; - border: 1px dotted #E88C8C; - overflow: hidden; - &::before { - content: "Bloco de Alteração"; - margin: -1em -1em 0; - display: block; + margin: 1em 0; + padding: 0em ; + background-color: transparent; + min-height: 100px; + border: 0px dashed #d9ddde; + .dpt { + width: 100% !important; + box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24); + padding: 0.3em 1em; + margin: 1px 0; + background-color: #edf0f1; + z-index: 1; + &:not(:first-child) { + border-top: 1px solid white; + } + &.ui-draggable div { + cursor: pointer; + } } } - } /* fim dpt */ .dpt-selected { @@ -606,10 +590,8 @@ a:link:after, a:visited:after { padding: 2.2em 2.2em 1.6em 2.2em; box-shadow: -4px 15px 15px rgba(0, 0, 0, 0.1), 0px 6px 6px rgba(0, 0, 0, 0.23); - @include background-top-down(#eaeaee, #ddd); - ul { list-style: none; margin: 0; @@ -632,15 +614,21 @@ a:link:after, a:visited:after { & > .bloco { opacity: 1; - margin: 1em !important; + margin: 1em ; } .bloco_alteracao { - padding-top: 2em; + margin: 0; + padding: 1em; + @include background-top-down(#eaeaee, #ddd); + &:not(:first-child) { + border-top: 0px solid white; + } + .dpt { + background-color: white; + } } - - & > .dpt { padding: 0; &:last-child { @@ -915,7 +903,7 @@ a:link:after, a:visited:after { } /* actions_inserts */ - .menu_flutuante { + .menu_flutuante, .menu_flutuante_fixo { & > li { @include li_flutuante(); diff --git a/templates/compilacao/dispositivo_form_search_fragment.html b/templates/compilacao/dispositivo_form_search_fragment.html index b80a5c1ec..ee93aea13 100644 --- a/templates/compilacao/dispositivo_form_search_fragment.html +++ b/templates/compilacao/dispositivo_form_search_fragment.html @@ -68,7 +68,7 @@ {{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }} {{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{%if dpt.texto %}{{ dpt.texto|safe }}{%else%}{%if not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {% endif %}{% endif %} {% if dpt.ta_publicado_id %} diff --git a/templates/compilacao/text_edit_bloco.html b/templates/compilacao/text_edit_bloco.html index cc36d6bb6..d2cad7afb 100644 --- a/templates/compilacao/text_edit_bloco.html +++ b/templates/compilacao/text_edit_bloco.html @@ -48,7 +48,7 @@ {% endfor %} -