From 139cdb68b36ce700245e98d55cc593121ba6ee39 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Sun, 8 May 2016 21:30:28 -0300 Subject: [PATCH 1/4] =?UTF-8?q?Reposic=20do=20Bot=C3=A3o=20Notifica=C3=A7?= =?UTF-8?q?=C3=B5es=20no=20menu=20Secund=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/compilacao/text_list.html | 1 - templates/compilacao/text_notificacoes.html | 4 +--- templates/compilacao/textoarticulado_detail.html | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/templates/compilacao/text_list.html b/templates/compilacao/text_list.html index f0aa0874e..99db8a044 100644 --- a/templates/compilacao/text_list.html +++ b/templates/compilacao/text_list.html @@ -14,7 +14,6 @@ {% block actions %}
diff --git a/templates/compilacao/text_notificacoes.html b/templates/compilacao/text_notificacoes.html index ea7b2e477..c46aa757e 100644 --- a/templates/compilacao/text_notificacoes.html +++ b/templates/compilacao/text_notificacoes.html @@ -1,13 +1,11 @@ -{% extends "base.html" %} +{% extends "compilacao/textoarticulado_detail.html" %} {% load i18n crispy_forms_tags compilacao_filters common_tags sass_tags%} {% block base_content %} -{{title}} {% block head_content %}{{block.super}} {% endblock %} - {% crispy form %} diff --git a/templates/compilacao/textoarticulado_detail.html b/templates/compilacao/textoarticulado_detail.html index 90c55a268..b47234aa2 100644 --- a/templates/compilacao/textoarticulado_detail.html +++ b/templates/compilacao/textoarticulado_detail.html @@ -14,6 +14,7 @@ {%endif%}
  • {% model_verbose_name_plural 'compilacao.models.Publicacao' %}
  • +
  • {% trans 'Notificações' %}
  • {% trans 'Texto' %}
  • {%endif %} @@ -25,7 +26,6 @@
    From ebdba29335c9cf7690aba733187f1c163007e900 Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Sun, 8 May 2016 22:14:19 -0300 Subject: [PATCH 2/4] commit makemigrations --- materia/migrations/0032_merge.py | 4 ++-- .../migrations/0018_auto_20160508_2201.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 parlamentares/migrations/0018_auto_20160508_2201.py 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/migrations/0018_auto_20160508_2201.py b/parlamentares/migrations/0018_auto_20160508_2201.py new file mode 100644 index 000000000..49c839aa1 --- /dev/null +++ b/parlamentares/migrations/0018_auto_20160508_2201.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.5 on 2016-05-09 01:01 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0017_remove_parlamentar_unidade_deliberativa'), + ] + + operations = [ + migrations.AlterModelOptions( + name='filiacao', + options={'ordering': ('parlamentar', '-data', '-data_desfiliacao'), 'verbose_name': 'Filiação', 'verbose_name_plural': 'Filiações'}, + ), + ] From b5002f8c47f699167d94ff935d95599b0ec210be Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Fri, 13 May 2016 14:33:35 -0300 Subject: [PATCH 3/4] Layout de alternancia de pos de disp. alterados --- compilacao/forms.py | 38 +++++----- compilacao/templatetags/compilacao_filters.py | 2 +- compilacao/views.py | 15 ++-- .../migrations/0018_auto_20160508_2201.py | 19 ----- static/js/compilacao_edit.js | 24 +++++- static/styles/compilacao.scss | 75 ++++++++----------- .../dispositivo_form_search_fragment.html | 2 +- templates/compilacao/text_edit_bloco.html | 8 +- .../compilacao/text_edit_blocoalteracao.html | 5 +- 9 files changed, 89 insertions(+), 99 deletions(-) delete mode 100644 parlamentares/migrations/0018_auto_20160508_2201.py 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..1abcb1f58 100644 --- a/compilacao/views.py +++ b/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 @@ -37,6 +37,7 @@ from compilacao.models import (Dispositivo, Nota, from compilacao.utils import DISPOSITIVO_SELECT_RELATED from 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') @@ -133,7 +134,7 @@ def choice_models_in_extenal_views(): class CompMixin: @property - def title(self): + def title(self): try: return self.get_object() except: @@ -440,7 +441,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 +1032,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 +1246,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/parlamentares/migrations/0018_auto_20160508_2201.py b/parlamentares/migrations/0018_auto_20160508_2201.py deleted file mode 100644 index 49c839aa1..000000000 --- a/parlamentares/migrations/0018_auto_20160508_2201.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9.5 on 2016-05-09 01:01 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('parlamentares', '0017_remove_parlamentar_unidade_deliberativa'), - ] - - operations = [ - migrations.AlterModelOptions( - name='filiacao', - options={'ordering': ('parlamentar', '-data', '-data_desfiliacao'), 'verbose_name': 'Filiação', 'verbose_name_plural': 'Filiações'}, - ), - ] diff --git a/static/js/compilacao_edit.js b/static/js/compilacao_edit.js index 4368325d9..146deba12 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,22 @@ 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, + }); + + $( ".bloco_alteracao" ).disableSelection(); } $(document).ready(function() { @@ -284,4 +299,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..f33c84b6b 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,25 @@ 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: #edf0f1; + min-height: 36px; + .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: 0em 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 +589,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 +613,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 +902,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 %} -
      +
        {% if dpt.dispositivo_subsequente == None %} {% for inserts in view|select_provaveis_inserts:request %} {% if inserts.itens %} @@ -130,7 +130,9 @@ {% endif %}
        {% spaceless %} -
        {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ dpt.rotulo }}{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{% if dpt.texto == '' and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}({{dpt.tipo_dispositivo}} sem texto){%else%}{{ dpt.texto|safe }}{%endif%}
        + {% if not dpt.tipo_dispositivo.dispositivo_de_alteracao %} +
        {{ dpt.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ dpt.rotulo }}{{ dpt.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ dpt.tipo_dispositivo.texto_prefixo_html|safe }}{% if dpt.texto == '' and not dpt.tipo_dispositivo.dispositivo_de_articulacao %}({{dpt.tipo_dispositivo}} sem texto){%else%}{{ dpt.texto|safe }}{%endif%}
        + {% endif %} {% if dpt.ta_publicado_id != None and not dpt.tipo_dispositivo.dispositivo_de_articulacao %} {{ dpt.tipo_dispositivo.nota_automatica_prefixo_html|safe }} @@ -139,7 +141,7 @@ {% endif %} {% endspaceless %} - {% if dpt.tipo_dispositivo.class_css == 'bloco_alteracao'%} + {% if dpt.tipo_dispositivo.dispositivo_de_alteracao %} {%with node=dpt template_name='compilacao/text_edit_blocoalteracao.html' %} {%include template_name%} {%endwith%} diff --git a/templates/compilacao/text_edit_blocoalteracao.html b/templates/compilacao/text_edit_blocoalteracao.html index b2fa9a4ff..3a16d5954 100644 --- a/templates/compilacao/text_edit_blocoalteracao.html +++ b/templates/compilacao/text_edit_blocoalteracao.html @@ -1,10 +1,9 @@ {% load compilacao_filters %} {% load common_tags %} -aaaaa {% for ch in dpt.pk|get_bloco_atualizador %} {% spaceless %} -
        -
        +
        +
        {{ ch.tipo_dispositivo.rotulo_prefixo_html|safe }}{{ ch.rotulo }}{{ ch.tipo_dispositivo.rotulo_sufixo_html|safe }}{{ ch.tipo_dispositivo.texto_prefixo_html|safe }}{{ ch.texto|safe }}
        From 4392b97d455447c2ed7c39d86e20d30b0f57a18a Mon Sep 17 00:00:00 2001 From: LeandroRoberto Date: Tue, 17 May 2016 15:21:44 -0300 Subject: [PATCH 4/4] front-end de alternancia de dispositivos alterados --- compilacao/views.py | 5 ++--- parlamentares/views.py | 4 ++-- static/js/compilacao_edit.js | 16 +++++++++++----- static/styles/compilacao.scss | 7 ++++--- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/compilacao/views.py b/compilacao/views.py index 1abcb1f58..44e4821e7 100644 --- a/compilacao/views.py +++ b/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 @@ -37,7 +37,6 @@ from compilacao.models import (Dispositivo, Nota, from compilacao.utils import DISPOSITIVO_SELECT_RELATED from 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') @@ -134,7 +133,7 @@ def choice_models_in_extenal_views(): class CompMixin: @property - def title(self): + def title(self): try: return self.get_object() except: 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 146deba12..c460ed3c7 100644 --- a/static/js/compilacao_edit.js +++ b/static/js/compilacao_edit.js @@ -266,17 +266,23 @@ function reloadFunctionClicks() { $('#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); - }, + 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(); diff --git a/static/styles/compilacao.scss b/static/styles/compilacao.scss index f33c84b6b..40163d5ad 100644 --- a/static/styles/compilacao.scss +++ b/static/styles/compilacao.scss @@ -563,12 +563,13 @@ a:link:after, a:visited:after { .bloco_alteracao { margin: 1em 0; padding: 0em ; - background-color: #edf0f1; - min-height: 36px; + 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: 0em 1em; + padding: 0.3em 1em; margin: 1px 0; background-color: #edf0f1; z-index: 1;