From 8c38e061cdfc4ad8c0b0a6fae1706f1120c8accc Mon Sep 17 00:00:00 2001 From: Mariana Mendes Date: Fri, 28 Sep 2018 10:43:24 -0300 Subject: [PATCH 01/13] Resolving issue #2265 (#2269) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trying to fix 'Pauta Sessão PDF' error Co-authored-by: Mariana Mendes --- sapl/relatorios/views.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index c602e991b..1bc62befa 100644 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -741,16 +741,7 @@ def get_sessao_plenaria(sessao, casa): def get_turno(dic, materia, sessao_data_inicio): descricao_turno = ' ' descricao_tramitacao = ' ' - tramitacao = Tramitacao.objects.filter(materia=materia, - turno__isnull=False, - data_tramitacao__lte=sessao_data_inicio, - ).exclude(turno__exact='' - ).select_related( - 'materia', - 'status', - 'materia__tipo').order_by( - '-data_tramitacao' - ).first() + tramitacao = None if tramitacao is None: tramitacao = materia.tramitacao_set.last() @@ -759,7 +750,7 @@ def get_turno(dic, materia, sessao_data_inicio): if t[0] == tramitacao.turno: descricao_turno = t[1] break - descricao_tramitacao = tramitacao.status.descricao if tramitacao.status else ' ' + descricao_tramitacao = tramitacao.status.descricao if tramitacao.status else 'Não informada' return (descricao_turno, descricao_tramitacao) From bb03aff449261087ae62326bd7c37ac78091a874 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Mon, 1 Oct 2018 15:31:06 -0300 Subject: [PATCH 02/13] HOT-FIX: impede norma somente com letras --- sapl/norma/forms.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sapl/norma/forms.py b/sapl/norma/forms.py index afcc052cd..5fa26f0fd 100644 --- a/sapl/norma/forms.py +++ b/sapl/norma/forms.py @@ -132,15 +132,21 @@ class NormaJuridicaForm(ModelForm): if not self.is_valid(): return cleaned_data + + import re + has_digits = re.sub('[^0-9]', '', cleaned_data['numero']) + if not has_digits: + raise ValidationError('Número de norma não pode conter somente letras') + if self.instance.numero != cleaned_data['numero']: norma = NormaJuridica.objects.filter(ano=cleaned_data['ano'], - numero=cleaned_data['numero'], - tipo=cleaned_data['tipo']).exists() + numero=cleaned_data['numero'], + tipo=cleaned_data['tipo']).exists() if norma: raise ValidationError("Já existe uma norma de mesmo Tipo, Ano " "e Número no sistema") if (cleaned_data['tipo_materia'] and - cleaned_data['numero_materia'] and + cleaned_data['numero_materia'] and cleaned_data['ano_materia']): try: materia = MateriaLegislativa.objects.get( From f3c7960478a247b6c3d97c2df42d00dd2907fe77 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Thu, 4 Oct 2018 15:07:06 -0300 Subject: [PATCH 03/13] Adiciona campo de release na tela principal --- release.sh | 4 ++++ sapl/templates/base.html | 1 + 2 files changed, 5 insertions(+) diff --git a/release.sh b/release.sh index cc3a172b5..958e91b21 100755 --- a/release.sh +++ b/release.sh @@ -13,6 +13,10 @@ function bump_version { sed -e s/$VERSION/$NEXT_VERSION/g setup.py > tmp2 mv tmp2 setup.py + + + sed -e s/$VERSION/$NEXT_VERSION/g sapl/templates/base.html > tmp3 + mv tmp3 sapl/templates/base.html } function commit_and_push { diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 8c4e24b6c..850669307 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -184,6 +184,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. + release: 3.1.122

From 3c86de16528f6bdc4748aac2a39994b2be4eb8df Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Thu, 4 Oct 2018 15:34:26 -0300 Subject: [PATCH 04/13] corrige detalhes de front-end --- sapl/static/styles/_header.scss | 7 +- sapl/static/styles/_home_index.scss | 188 ++++++++ sapl/static/styles/app.scss | 656 +++++++++++----------------- sapl/templates/base.html | 2 +- sapl/templates/index.html | 295 +++++++------ 5 files changed, 596 insertions(+), 552 deletions(-) create mode 100644 sapl/static/styles/_home_index.scss diff --git a/sapl/static/styles/_header.scss b/sapl/static/styles/_header.scss index e5fa310a3..b04c99494 100644 --- a/sapl/static/styles/_header.scss +++ b/sapl/static/styles/_header.scss @@ -2,9 +2,4 @@ $logo-height: 0.8 * $navbar-height; $logo-margin: ($navbar-height - $logo-height) / 2; -.logo img { - width: $logo-height; - height: $logo-height; - margin: $logo-margin $navbar-padding-horizontal; -} - +$footer-height : 140px; diff --git a/sapl/static/styles/_home_index.scss b/sapl/static/styles/_home_index.scss new file mode 100644 index 000000000..d85ce05a3 --- /dev/null +++ b/sapl/static/styles/_home_index.scss @@ -0,0 +1,188 @@ + +.container-home { + position: relative; + padding: 2em 1.5em 1.5em 1.5em; + max-width: 1000px; + margin: 0 auto; + a:hover { + color: #444; + -webkit-transition: 0.3s ease-in; + -moz-transition: 0.3s ease-in; + -o-transition: 0.3s ease-in + } + + #homeIndex { + text-align: center; + } + + .homeBanner span { + color: white; + font-size: 32px; + font-weight: 600; + display: inline-block; + vertical-align: middle; + padding: 2px 45px 4px; + border: 2px solid; + } + + .homeBanner::after { + display: inline-block; + vertical-align: middle; + height: 100%; + } + + .homeBlock { + display: inline-block; + position: relative; + background-color: #F3F3F3; + width: 190px; + height: 260px; + margin: 3px; + text-align: center; + font-size: 0; + overflow: hidden; + } + + .homeBlock > a { + display: block; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + } + + .homeBlock::after { + content: ''; + display: inline-block; + vertical-align: middle; + height: 100%; + overflow: visible; + clear: none; + visibility: initial; + } + + .homeContent { + position: relative; + padding: 10px; + text-align: justify; + font-size: 14px; + color: #FFF; + opacity: 0; + transition: opacity 0.5s ease; + display: inline-block; + vertical-align: middle; + } + + .homeContent p { + display: block; + line-height: 13px; + font-size: 80%; + color: white; + } + + .homeIcon { + position: relative; + display: inline-block; + width: 105px; + height: 105px; + border-radius: 50%; + background: #364347; + z-index: 1; + } + + .homeIcon::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + border-radius: 50%; + background: #364347; + top: 0; + left: 0; + transform: scale(0.95); + transition: transform 0.6s ease; + } + + .homeIcon img { + position: absolute; + margin: auto; + top: 0; + bottom: 0; + right: 0; + left: 0; + transition: opacity 0.4s 0.4s ease; + } + + .homeFront { + position: absolute; + top: 46%; + width: 100%; + font-size: 0; + transform: translateY(-60%); + + } + + .homeFront h2 { + position: absolute; + margin-top: 18px; + font-size: 22px; + font-weight: 700; + color: #595959 !important; + width: 100%; + padding: 0 6%; + z-index: 0; + } + + .homeTitle { + display: block; + height: 32px; + text-align: center; + width: 100%; + opacity: 0; + transition: opacity 0.4s ease; + } + + .homeTitle::before { + content: ''; + display: inline-block; + vertical-align: middle; + height: 100%; + } + + .homeTitle h2 { + display: inline-block; + vertical-align: middle; + max-width: 110px; + font-size: 14px; + color: white !important; + line-height: 1em; + } + + .homeTitle img { + display: inline-block; + vertical-align: middle; + height: 30px; + margin-right: 5px; + } + + .homeBlock:hover .homeIcon::before { + transform: scale(3.6) translateY(7px); + } + + .homeBlock:hover .homeContent{ + opacity: 1; + transition-delay: 0.2s; + } + + .homeBlock:hover .homeIcon img { + opacity: 0; + transition-duration: 0.2s; + transition-delay: 0s; + } + + .homeBlock:hover .homeTitle { + opacity: 1; + } + +} \ No newline at end of file diff --git a/sapl/static/styles/app.scss b/sapl/static/styles/app.scss index 760830cbd..f8980133e 100644 --- a/sapl/static/styles/app.scss +++ b/sapl/static/styles/app.scss @@ -1,73 +1,18 @@ - @import "bootstrap/variables.scss"; -@import "header"; -.vcenter { - display: inline-block; - vertical-align: middle; - float: none; - padding: 10px; -} - -nav { - &.navbar { - border-radius: 0; - font-size: 15px; - } - .navbar-nav { - & > li { - & > a { - padding-top: 0px; - padding-bottom: 0px; - line-height: $grid-gutter-width * 2.5; - &:hover { - background-color: $link-hover-color; - } - } - &:nth-child(2) { - & > .dropdown-menu { - right: auto; - } - } +@import "header"; - } - &:last-child { - & > li:last-child { - a { - padding-right: 0px; - } - } - } - } -} -.masthead { - padding: 10px; - .nav { - clear:both; - } - .navbar-brand { - color: $headings-color; - font-size: 24px; - img.img-responsive { - height: 95px; - margin-right: $navbar-padding-horizontal; - } - small { - color: #93A4AA; - font-size: 75%; - line-height: 25px; - } - } -} +@import "home_index"; -.navbar { - margin-bottom: 0; +html, body { + position: relative; + min-height: 100%; } -.navbar-brand { - padding: 0px; +h1, h2, h3, h4, h5, h6, form, dl, dt, dd, p, div, img, a { + margin: 0; + padding: 0; } -// ADJUST DRUNKEN PARROT STYLES ######################################## h1, .h1 { font-size: 30px; } @@ -87,21 +32,41 @@ h6, .h6 { font-size: 12px; } -.page-header { - margin: 20px 0px 10px; +p { + margin: 0.5em 0; + .control-label { + font-weight: bold; + } } -.btn:hover, .btn:focus { - color: inherit; +label { + margin-bottom: 0; + line-height: 1; +} + +fieldset { + fieldset { + font-size: 95%; + legend { + font-size: 18px; + } + } +} + +.page-header { + margin: 20px 0px 10px; } .caret { - /* Por padrão caret aponta para baixo*/ &.top { transform: rotate(180deg); } } +.btn:hover, .btn:focus { + color: inherit; +} + .btn-default { &.btn-excluir { color: $btn-danger-bg; @@ -113,68 +78,19 @@ h6, .h6 { } } -.controls-file { - padding: 10px; - border: 1px solid #d6e1e5; - border-radius: 4px; - - label.checkbox-inline { - margin: 0px; - display: block; - } -} - -.help-block-danger { - margin: $grid-gutter-width / 2; - padding: $grid-gutter-width / 2; - border: 2px dashed #f00; -} - -.controls-radio-checkbox { - padding: 0px; - border: 1px solid #d6e1e5; - border-radius: 4px; - min-height: 20px; - .help-block { - margin: $grid-gutter-width / 2; - padding: $grid-gutter-width / 2; - border: 2px dashed #d6e1e5; - } - - label { - padding: 5px; - .icons { - top: 5px; - left: 8px; - } - &.checkbox-inline, &.radio-inline { - padding: 8px; - padding-left: 36px; - .icons { - top: 8px; - left: 8px; - } - } +.btn-cancel-iframe { + position: relative; + text-align: right; + opacity: 0.5; + &:hover { + opacity: 1; } - .checkbox, .radio, .checkbox-inline, .radio-inline { - margin: 0; - &:hover { - background-color: #d6e1e5; - } + a { + padding: 10px; + display: inline-block; } } - -// #### CRUD DETAIL ######################################## -p.control-label { - font-weight: bold; -} - -// copied from bootstrap _forms.scss legend -// using @extend would require importing parts of bootstrap again and overriding drunken parrot css -// @import "bootstrap/mixins.scss"; -// @import "bootstrap/forms.scss"; - .legend { display: block; width: 100%; @@ -190,42 +106,27 @@ p.control-label { .grid-gutter-width-right { margin-right: $grid-gutter-width / 2; } -// #### footer ########################################### -// based on http://getbootstrap.com/examples/sticky-footer -$footer-height : 140px; -html { - position: relative; - min-height: 100%; -} -body { - margin-bottom: $footer-height + 20px; -} -.footer { - position: absolute; - bottom: 0; - width: 100%; - /* Set the fixed height of the footer here */ - height: $footer-height; - background: #364347 none repeat scroll 0% 0%; - color: white; - text-align: center; - p { - color: white; - margin-top: 10px; - } - .container { - padding-top: 25px; +.controls-file { + padding: 10px; + border: 1px solid #d6e1e5; + border-radius: 4px; + label.checkbox-inline { + margin: 0px; + display: block; } } -label { - margin-bottom: 0; - line-height: 1; +.help-block-danger { + margin: $grid-gutter-width / 2; + padding: $grid-gutter-width / 2; + border: 2px dashed #f00; } + .control-label { margin: 0; } + .form-control-static { padding-top: 0; min-height: auto; @@ -234,8 +135,6 @@ label { } } - -// #### pagination ######################################## .pagination { padding-top: 25px; } @@ -246,15 +145,6 @@ label { } } -fieldset { - fieldset { - font-size: 95%; - legend { - font-size: 18px; - } - } -} - .avatar-parlamentar { height: 128px; width: 128px; @@ -262,228 +152,120 @@ fieldset { display: table; } -/* INDEX */ -#conteudo { - position: relative; - padding: 2em 1.5em 1.5em 1.5em; - overflow: hidden; - font-size: 100%; - text-align: left; - min-height: 350px; - max-width: 1000px; - margin: 0 auto; -} -#conteudo a:hover { - color: #444; - -webkit-transition: 0.3s ease-in; - -moz-transition: 0.3s ease-in; - -o-transition: 0.3s ease-in -} - -#homeIndex { - text-align: center; -} - -.homeBanner span { - color: white; - font-size: 32px; - font-weight: 600; - display: inline-block; - vertical-align: middle; - padding: 2px 45px 4px; - border: 2px solid; -} - -.homeBanner::after { - display: inline-block; - vertical-align: middle; - height: 100%; -} - -.homeBlock { - display: inline-block; - position: relative; - background-color: #F3F3F3; - width: 190px; - height: 260px; - margin: 3px; - text-align: center; - font-size: 0; - overflow: hidden; -} - -.homeBlock > a { - display: block; - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; -} - -.homeBlock::after { - content: ''; - display: inline-block; - vertical-align: middle; - height: 100%; - overflow: visible; - clear: none; - visibility: initial; -} - -.homeContent { - position: relative; - padding: 10px; - text-align: justify; - font-size: 14px; - color: #FFF; - opacity: 0; - transition: opacity 0.5s ease; - display: inline-block; - vertical-align: middle; -} - -.homeContent p { - display: block; - line-height: 13px; - font-size: 80%; - color: white; -} - -.homeIcon { - position: relative; - display: inline-block; - width: 105px; - height: 105px; - border-radius: 50%; - background: #364347; - z-index: 1; -} - -.homeIcon::before { - content: ''; - position: absolute; - width: 100%; - height: 100%; - border-radius: 50%; - background: #364347; - top: 0; - left: 0; - transform: scale(0.95); - transition: transform 0.6s ease; -} - -.homeIcon img { - position: absolute; - margin: auto; - top: 0; - bottom: 0; - right: 0; - left: 0; - transition: opacity 0.4s 0.4s ease; -} - -.homeFront { - position: absolute; - top: 46%; - width: 100%; - font-size: 0; - transform: translateY(-60%); - -} - -.homeFront h2 { - position: absolute; - margin-top: 18px; - font-size: 22px; - font-weight: 700; - color: #595959 !important; - width: 100%; - padding: 0 6%; - z-index: 0; -} - -.homeTitle { - display: block; - height: 32px; - text-align: center; - width: 100%; - opacity: 0; - transition: opacity 0.4s ease; -} - -.homeTitle::before { - content: ''; - display: inline-block; - vertical-align: middle; - height: 100%; -} -.homeTitle h2 { - display: inline-block; - vertical-align: middle; - max-width: 110px; - font-size: 14px; - color: white !important; - line-height: 1em; -} - -.homeTitle img { - display: inline-block; - vertical-align: middle; - height: 30px; - margin-right: 5px; -} - -.homeBlock:hover .homeIcon::before { - transform: scale(3.6) translateY(7px); -} - -.homeBlock:hover .homeContent{ - opacity: 1; - transition-delay: 0.2s; -} - -.homeBlock:hover .homeIcon img { - opacity: 0; - transition-duration: 0.2s; - transition-delay: 0s; +.masthead { + padding: 10px; + .nav { + clear:both; + } + .navbar-brand { + padding: 0px; + color: $headings-color; + font-size: 24px; + img.img-responsive { + height: 95px; + margin-right: $navbar-padding-horizontal; + } + small { + color: #93A4AA; + font-size: 75%; + line-height: 25px; + } + .vcenter { + display: inline-block; + vertical-align: middle; + float: none; + padding: 10px; + } + } } -.homeBlock:hover .homeTitle { - opacity: 1; -} +nav { + &.navbar { + margin-bottom: 0; + border-radius: 0; + font-size: 15px; + } + .navbar-nav { + & > li { + & > a { + padding-top: 0px; + padding-bottom: 0px; + line-height: $grid-gutter-width * 2.5; + &:hover { + background-color: $link-hover-color; + } + } + &:nth-child(2) { + & > .dropdown-menu { + right: auto; + } + } -h1, h2, h3, h4, h5, h6, form, dl, dt, dd, p, div, img, a { - margin: 0; - padding: 0; + } + &:last-child { + & > li:last-child { + a { + padding-right: 0px; + } + } + } + } } -p { - margin: 0.5em 0; -} -/* FIM INDEX */ +.controls-radio-checkbox { + padding: 0px; + border: 1px solid #d6e1e5; + border-radius: 4px; + min-height: 20px; + .help-block { + margin: $grid-gutter-width / 2; + padding: $grid-gutter-width / 2; + border: 2px dashed #d6e1e5; + } -/* TEMPLATE AJUDA */ -.manual li { - display: list-item; - line-height: 1.5em; - padding-right: 0; -} -.manual li a { - background-color: transparent; - border: none; - border-radius: none; - padding: 0; + label { + padding: 5px; + .icons { + top: 5px; + left: 8px; + } + &.checkbox-inline, &.radio-inline { + padding: 8px; + padding-left: 36px; + .icons { + top: 8px; + left: 8px; + } + } + } + .checkbox, .radio, .checkbox-inline, .radio-inline { + margin: 0; + &:hover { + background-color: #d6e1e5; + } + } } -.manual, .manual ul { +.manual { + &, & ul { padding-left: 1.5em; list-style-type: none; margin-top: 0; font-size: 100%; + } + li { + display: list-item; + line-height: 1.5em; + padding-right: 0; + a { + background-color: transparent; + border: none; + border-radius: none; + padding: 0; + } + } } -/* FIM TEMPLATE AJUDA */ .container-tabaux { .sidebar-tabaux { @@ -558,29 +340,43 @@ p { } } -.btn-cancel-iframe { - position: relative; - text-align: right; - opacity: 0.5; - &:hover { - opacity: 1; +#styleparlamentar { + border: 0px solid #d6e1e5; + border-top-color: rgb(214, 225, 229); + border-right-color: rgb(214, 225, 229); + border-bottom-color: rgb(214, 225, 229); + border-left-color: rgb(214, 225, 229); + border-image-source: initial; + border-image-slice: initial; + border-image-repeat: initial; + font-size: 16px; + line-height: 1.467; + padding: 7px 12px; + height: 40px; + -webkit-appearance: none; + border-radius: 4px; + -webkit-box-shadow: none; + box-shadow: none; + margin-left: 1.0em; +} + +.footer { + background: #364347; + color: white; + text-align: center; + p { + color: white; + margin-top: 10px; } - a { - padding: 10px; - display: inline-block; + .container { + padding-top: 25px; } } - @media (max-width: 1199px) { - .masthead { - .navbar-brand { - font-size: 22px; - img.img-responsive { - height: 60px; - width: 60px; - margin-right: $navbar-padding-horizontal / 2; - } + nav { + .container { + width: auto !important; } } .navbar-nav > li > a { @@ -589,14 +385,70 @@ p { } } + @media (max-width: 1091px) { + .container { + width: auto; + } .navbar-nav > li > a { padding-left: $grid-gutter-width / 4; padding-right: $grid-gutter-width / 4; } + .masthead { + .navbar-brand { + font-size: 22px; + img.img-responsive { + height: 60px; + margin-right: $navbar-padding-horizontal / 2; + } + } + } } +@media (max-width: 991px) { + .caret { + margin-left: 1px; + } + .navbar-nav > li > a { + padding-left: 4px; + padding-right: 4px; + } + .table{ + width: auto; + white-space: normal; + display:block; + overflow-x: auto; + } +} +@media (max-width: 767px) { + nav { + .navbar-nav > li > a { + line-height: 2.5; + } + .navbar-right { + position: absolute; + top: 0; + margin: 10px; + & > li { + vertical-align: top; + display: inline-block; + a { + padding-left: 10px; + padding-right: 10px; + } + } + .pesquisa.open { + ul { + position: absolute; + } + } + .navbar-form { + margin: 8px 0; + } + } + } +} @media (min-width: 1092px) and (max-width: 1199px) { .container { @@ -609,25 +461,3 @@ p { content: none !important; } } - -/* Estilização da Listagem de Votos em sessões plenárias */ - -#styleparlamentar { - border: 0px solid #d6e1e5; - border-top-color: rgb(214, 225, 229); - border-right-color: rgb(214, 225, 229); - border-bottom-color: rgb(214, 225, 229); - border-left-color: rgb(214, 225, 229); - border-image-source: initial; - border-image-slice: initial; - border-image-repeat: initial; - font-size: 16px; - line-height: 1.467; - padding: 7px 12px; - height: 40px; - -webkit-appearance: none; - border-radius: 4px; - -webkit-box-shadow: none; - box-shadow: none; - margin-left: 1.0em; -} diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 850669307..ae84f0164 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -193,7 +193,7 @@

- Conteúdo e dados sob licença Creative Commons 4.0 Atribuir Fonte - Compartilhar Igual + Conteúdo e dados sob licença Creative Commons 4.0
Atribuir Fonte - Compartilhar Igual

diff --git a/sapl/templates/index.html b/sapl/templates/index.html index 7eab8dbc0..bbcfb97e2 100644 --- a/sapl/templates/index.html +++ b/sapl/templates/index.html @@ -1,164 +1,195 @@ {% extends "base.html" %} {% load i18n staticfiles %} -{% block title%} - - -
-
-
-
-
-
- Mesa Diretora -
-

Mesa Diretora

-
-
-
- +{% block title %} + +{% endblock title %} +{% block base_content%} +
+
+
+
+
+ Mesa Diretora +

Mesa Diretora

-

- Órgão colegiado, composto de no mínimo três membros efetivos - Presidente e 1° e 2° Secretários - a quem cabe a direção dos trabalhos legislativos. Os parlamentares integrantes da Mesa Diretora são eleitos por seus pares na primeira reunião de instalação do período legislativo, para um mandato de um a dois anos. -

+
+
+ +

Mesa Diretora

+
+

+ Órgão colegiado, composto de no mínimo três membros efetivos - Presidente e 1° e 2° Secretários - a + quem cabe a direção dos trabalhos legislativos. Os parlamentares integrantes da Mesa Diretora são + eleitos por seus pares na primeira reunião de instalação do período legislativo, para um mandato de + um + a dois anos. +

+
+
- -
-
-
-
- Comissões -
-

Comissões

-
-
-
- +
+
+
+ Comissões +

Comissões

-

- Órgãos da Casa Legislativa, de natureza técnica especializada e que têm por objetivo prestar melhores esclarecimentos aos parlamentares para a tomada de decisões. Assim, as comissões elaboram estudos, pareceres a respeito de determinados projetos de lei e investigação de irregularidades sobre fato determinado. -

+
+
+ +

Comissões

+
+

+ Órgãos da Casa Legislativa, de natureza técnica especializada e que têm por objetivo prestar + melhores + esclarecimentos aos parlamentares para a tomada de decisões. Assim, as comissões elaboram estudos, + pareceres a respeito de determinados projetos de lei e investigação de irregularidades sobre fato + determinado. +

+
+
- -
-
-
-
- Parlamentares -
-

Parlamentares

-
-
-
- +
+
+
+ Parlamentares +

Parlamentares

-

- O Poder Legislativo, exercido pelo sistema de representação, tem nos parlamentares a sua expressão máxima. Devem transformar os anseios de seus representados em ações diretas, na forma de leis ou buscando junto do Executivo obras e atos que beneficiem a sua comunidade. Possuem funções legisladora, administrativa, julgadora e de fiscalização sobre a conduta do Executivo. -

+
+
+ +

Parlamentares

+
+

+ O Poder Legislativo, exercido pelo sistema de representação, tem nos parlamentares a sua expressão + máxima. Devem transformar os anseios de seus representados em ações diretas, na forma de leis ou + buscando junto do Executivo obras e atos que beneficiem a sua comunidade. Possuem funções + legisladora, + administrativa, julgadora e de fiscalização sobre a conduta do Executivo. +

+
+
- -
-
-
-
- Pautas das Sessões -
-

Pautas das Sessões

+
+
+
+ Pautas das Sessões +
+

Pautas das Sessões

+
+
+
+ +

Pautas das
Sessões

+
+

+ Utilizadas para se determinar quais matérias serão discutidas e votadas. A responsabilidade pela + elaboração das Pautas, que incluem Expediente e Ordem do Dia, é definida no Regimento Interno que, + em + geral, dá poderes ao Presidente da Casa Legislativa para a sua elaboração. Também, pode ficar a + cargo + de um colégio de líderes dos partidos políticos. +

+
+
-
-
- -

Pautas das
Sessões

-
-

- Utilizadas para se determinar quais matérias serão discutidas e votadas. A responsabilidade pela elaboração das Pautas, que incluem Expediente e Ordem do Dia, é definida no Regimento Interno que, em geral, dá poderes ao Presidente da Casa Legislativa para a sua elaboração. Também, pode ficar a cargo de um colégio de líderes dos partidos políticos. -

-
- -
-
-
-
- Sessão Plenária -
-

Sessão Plenária

-
-
-
- +
+
+
+ Sessão Plenária +

Sessão Plenária

-

- Foro apropriado para a tomada de decisões sobre os projetos de lei e outras matérias legislativas ou administrativas, aprovadas ou rejeitadas em votação pelos parlamentares. É dirigida pela Mesa Diretora de acordo com o Regimento Interno da Casa. As decisões votadas em Plenário são soberanas e prevalecem sobre interesses ou vontades individuais. -

+
+
+ +

Sessão Plenária

+
+

+ Foro apropriado para a tomada de decisões sobre os projetos de lei e outras matérias legislativas + ou + administrativas, aprovadas ou rejeitadas em votação pelos parlamentares. É dirigida pela Mesa + Diretora + de acordo com o Regimento Interno da Casa. As decisões votadas em Plenário são soberanas e + prevalecem + sobre interesses ou vontades individuais. +

+
+
- -
-
-
-
- Matérias Legislativas -
-

Matérias Legislativas

-
-
-
- -

Matérias
Legislativas

-
-

- Têm início com o processo de criação de leis e a apresentação de projetos no Poder Legislativo. Na apreciação de matérias, podem haver eventuais conflitos de interpretação ou de entendimento entre o que estabelece o Regimento Interno da Casa e a Lei Orgânica do Município. Nestes casos, prevalece a Lei Orgânica. -

+
+
+
+ Matérias Legislativas +
+

Matérias Legislativas

+
+
+
+ +

Matérias
Legislativas

+
+

+ Têm início com o processo de criação de leis e a apresentação de projetos no Poder Legislativo. Na + apreciação de matérias, podem haver eventuais conflitos de interpretação ou de entendimento entre o + que + estabelece o Regimento Interno da Casa e a Lei Orgânica do Município. Nestes casos, prevalece a Lei + Orgânica. +

+
+
- -
-
-
-
- Normas Jurídicas -
-

Normas Jurídicas

-
-
-
- +
+
+
+ Normas Jurídicas +

Normas Jurídicas

-

- Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, aos decretos legislativos e às resoluções. -

-
- -
- -
-
-
- Relatórios +
+
+ +

Normas Jurídicas

+
+

+ Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, + aos + decretos legislativos e às resoluções. +

-

Relatórios

+
-
-
- + +
+
+
+ Relatórios +

Relatórios

-

- Contém informações estatísticas sobre a produção legislativa dos parlamentares e da Casa, dispostas e agrupadas de diferentes formas de acordo com parâmetros fornecidos. -

+
+
+ +

Relatórios

+
+

+ Contém informações estatísticas sobre a produção legislativa dos parlamentares e da Casa, dispostas + e + agrupadas de diferentes formas de acordo com parâmetros fornecidos. +

+
+
- -
-
+
-{% endblock %} +{% endblock %} \ No newline at end of file From cdc18d079408b85bfc50bc5b4ef8d43e323ed7de Mon Sep 17 00:00:00 2001 From: Edward Date: Thu, 4 Oct 2018 16:23:00 -0300 Subject: [PATCH 05/13] =?UTF-8?q?Ajusta=20footer=20com=20vers=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/templates/base.html b/sapl/templates/base.html index ae84f0164..1953032a3 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -184,7 +184,7 @@ Desenvolvido pelo Interlegis em software livre e aberto. - release: 3.1.122 + Release: 3.1.121

From 563d3db75dcbd6f2b59b062702bc24dc02cf61f3 Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Fri, 5 Oct 2018 11:07:20 -0300 Subject: [PATCH 06/13] Fix #2282 (#2283) --- sapl/parlamentares/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 207bc2bc7..6ae314785 100644 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -142,7 +142,7 @@ class LegislaturaForm(ModelForm): pk = self.instance.pk - ultima_legislatura = Legislatura.objects.filter(data_inicio__lte=data_inicio + ultima_legislatura = Legislatura.objects.filter(data_inicio__lt=data_inicio ).order_by('-data_inicio').first() proxima_legislatura = Legislatura.objects.filter(data_fim__gt=data_fim ).order_by('data_fim').first() From 86e5bda7d6fb1c43f643978898379f567ca6b267 Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Fri, 5 Oct 2018 11:07:43 -0300 Subject: [PATCH 07/13] Fix #2279 (#2280) --- .../migrations/0010_auto_20181004_1939.py | 20 +++++++++++++++++++ sapl/compilacao/models.py | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 sapl/compilacao/migrations/0010_auto_20181004_1939.py diff --git a/sapl/compilacao/migrations/0010_auto_20181004_1939.py b/sapl/compilacao/migrations/0010_auto_20181004_1939.py new file mode 100644 index 000000000..76b2de609 --- /dev/null +++ b/sapl/compilacao/migrations/0010_auto_20181004_1939.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.13 on 2018-10-04 22:39 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('compilacao', '0009_auto_20180926_1015'), + ] + + operations = [ + migrations.AlterField( + model_name='textoarticulado', + name='numero', + field=models.CharField(max_length=8, verbose_name='Número'), + ), + ] diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index efb834c51..3d5b7a679 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -186,7 +186,8 @@ class TextoArticulado(TimestampedMixin): data = models.DateField(blank=True, null=True, verbose_name=_('Data')) ementa = models.TextField(verbose_name=_('Ementa')) observacao = models.TextField(blank=True, verbose_name=_('Observação')) - numero = models.PositiveIntegerField(verbose_name=_('Número')) + numero = models.CharField( + max_length=8,verbose_name=_('Número')) ano = models.PositiveSmallIntegerField(verbose_name=_('Ano')) tipo_ta = models.ForeignKey( TipoTextoArticulado, From 7ca93743d36a659f6af9560149f39f0e3567f589 Mon Sep 17 00:00:00 2001 From: Leandro Roberto Date: Fri, 5 Oct 2018 11:07:07 -0300 Subject: [PATCH 08/13] ajuste de front-end --- sapl/static/styles/app.scss | 26 ++++++++++++++----- sapl/templates/comissoes/composicao_list.html | 4 ++- sapl/templates/crud/detail_detail.html | 20 ++++++++------ 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/sapl/static/styles/app.scss b/sapl/static/styles/app.scss index f8980133e..099392fde 100644 --- a/sapl/static/styles/app.scss +++ b/sapl/static/styles/app.scss @@ -4,10 +4,13 @@ @import "home_index"; -html, body { +html { position: relative; min-height: 100%; } +body { + margin-bottom: 160px; +} h1, h2, h3, h4, h5, h6, form, dl, dt, dd, p, div, img, a { margin: 0; @@ -364,6 +367,9 @@ nav { background: #364347; color: white; text-align: center; + position: absolute; + width: 100%; + bottom: 0px; p { color: white; margin-top: 10px; @@ -406,6 +412,12 @@ nav { } @media (max-width: 991px) { + body { + margin: 0; + } + .footer { + position: relative; + } .caret { margin-left: 1px; } @@ -413,12 +425,6 @@ nav { padding-left: 4px; padding-right: 4px; } - .table{ - width: auto; - white-space: normal; - display:block; - overflow-x: auto; - } } @media (max-width: 767px) { @@ -448,6 +454,12 @@ nav { } } } + .table{ + width: auto; + white-space: normal; + display:block; + overflow-x: auto; + } } @media (min-width: 1092px) and (max-width: 1199px) { diff --git a/sapl/templates/comissoes/composicao_list.html b/sapl/templates/comissoes/composicao_list.html index 29071c85d..3f543b0c5 100644 --- a/sapl/templates/comissoes/composicao_list.html +++ b/sapl/templates/comissoes/composicao_list.html @@ -37,7 +37,9 @@
{% endif %} -
+ +
+
diff --git a/sapl/templates/crud/detail_detail.html b/sapl/templates/crud/detail_detail.html index b2312ec51..bddb962f0 100644 --- a/sapl/templates/crud/detail_detail.html +++ b/sapl/templates/crud/detail_detail.html @@ -63,14 +63,18 @@ {% endfor %} {% endfor %} {% endblock detail_content %} -
- {% if view.detail_set_create_url %} - - {% blocktrans with verbose_name=view.verbose_name_set %} Adicionar {{ verbose_name }} {% endblocktrans %} - - {% endif %} - {% block more_buttons %}{% endblock more_buttons %} -
+ +
+ {% if view.detail_set_create_url %} + + {% blocktrans with verbose_name=view.verbose_name_set %} Adicionar {{ verbose_name }} {% endblocktrans %} + + {% endif %} + {% block more_buttons %}{% endblock more_buttons %} +
+ +
+
{% if not rows %}

{{ NO_ENTRIES_MSG }}

From 79dfe5f68210f0eaa99eb57871a96d60e763bfa7 Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Fri, 5 Oct 2018 12:25:11 -0300 Subject: [PATCH 09/13] Fix #2284 (#2285) --- sapl/sessao/forms.py | 3 ++- sapl/sessao/tests/test_sessao.py | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index f7308f62e..5d36ba99a 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -86,7 +86,8 @@ class SessaoPlenariaForm(ModelForm): sessoes = SessaoPlenaria.objects.filter(numero=num, sessao_legislativa=sl, legislatura=leg, - tipo=tipo).\ + tipo=tipo, + data_inicio__year=abertura.year).\ values_list('id', flat=True) qtd_sessoes = len(sessoes) diff --git a/sapl/sessao/tests/test_sessao.py b/sapl/sessao/tests/test_sessao.py index 1715cd0ae..c1af4fc7e 100644 --- a/sapl/sessao/tests/test_sessao.py +++ b/sapl/sessao/tests/test_sessao.py @@ -51,17 +51,17 @@ def test_numero_duplicado_sessao_plenaria_form(): legislatura = mommy.make(Legislatura) sessao = mommy.make(SessaoLegislativa) tipo = mommy.make(TipoSessaoPlenaria) - mommy.make(SessaoPlenaria, - legislatura=legislatura, - sessao_legislativa=sessao, - tipo=tipo, - numero=1) + sessao_plenaria = mommy.make(SessaoPlenaria, + legislatura=legislatura, + sessao_legislativa=sessao, + tipo=tipo, + numero=1) form = forms.SessaoPlenariaForm(data={'legislatura': str(legislatura.pk), 'numero': '1', 'tipo': str(tipo.pk), 'sessao_legislativa': str(sessao.pk), - 'data_inicio': '10/11/2017', + 'data_inicio': sessao_plenaria.data_inicio, 'hora_inicio': '10:10' }) From 76f4771895e7e6000884fc5fce4f0df2dfc05468 Mon Sep 17 00:00:00 2001 From: Edward Date: Fri, 5 Oct 2018 15:36:25 -0300 Subject: [PATCH 10/13] Fixes #2288 (#2289) --- sapl/relatorios/templates/pdf_pauta_sessao_gerar.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py b/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py index 31636401e..f1a827e35 100755 --- a/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py +++ b/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py @@ -21,6 +21,7 @@ def cabecalho(inf_basicas_dic, imagem): tmp += '\t\t\t\t\n' tmp += '\t\t\t\tSistema de Apoio ao Processo Legislativo\n' tmp += '\t\t\t\t\n' + import ipdb; ipdb.set_trace() tmp += '\t\t\t\tPauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da \n' tmp += '\t\t\t\t' + \ From 9144e1786ec8e1027e6ce4fcee8bbc89c40f57fb Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Fri, 5 Oct 2018 15:39:41 -0300 Subject: [PATCH 11/13] HOT-FIX: conserta commit #76f477 --- sapl/relatorios/templates/pdf_pauta_sessao_gerar.py | 1 - sapl/relatorios/views.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py b/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py index f1a827e35..31636401e 100755 --- a/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py +++ b/sapl/relatorios/templates/pdf_pauta_sessao_gerar.py @@ -21,7 +21,6 @@ def cabecalho(inf_basicas_dic, imagem): tmp += '\t\t\t\t\n' tmp += '\t\t\t\tSistema de Apoio ao Processo Legislativo\n' tmp += '\t\t\t\t\n' - import ipdb; ipdb.set_trace() tmp += '\t\t\t\tPauta da ' + str(inf_basicas_dic['num_sessao_plen']) + 'ª Reunião ' + str(inf_basicas_dic['nom_sessao']) + ' da ' + str( inf_basicas_dic['num_sessao_leg']) + 'ª Sessão Legislativa da \n' tmp += '\t\t\t\t' + \ diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 1bc62befa..4d273b6da 100644 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1019,7 +1019,7 @@ def get_pauta_sessao(sessao, casa): inf_basicas_dic["nom_sessao"] = sessao.tipo.nome inf_basicas_dic["num_sessao_plen"] = sessao.numero inf_basicas_dic["num_legislatura"] = sessao.legislatura - inf_basicas_dic["num_sessao_leg"] = sessao.legislatura + inf_basicas_dic["num_sessao_leg"] = sessao.sessao_legislativa.numero inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio inf_basicas_dic["dat_fim_sessao"] = sessao.data_fim From 9172e98c45ecb2da20c455ce68290830445f2c85 Mon Sep 17 00:00:00 2001 From: Talitha Pumar Date: Fri, 5 Oct 2018 15:45:48 -0300 Subject: [PATCH 12/13] Fix #2286 (#2287) * Fix #2286 * more pythonic --- sapl/materia/forms.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 77ccca5d6..6f6a544cd 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -245,7 +245,7 @@ class MateriaLegislativaForm(ModelForm): primeiro_autor = True else: primeiro_autor = False - + materia = super(MateriaLegislativaForm, self).save(commit) materia.save() @@ -281,6 +281,20 @@ class UnidadeTramitacaoForm(ModelForm): raise ValidationError(msg) return cleaned_data + def save(self, commit=False): + unidade = super(UnidadeTramitacaoForm, self).save(commit) + cd = self.cleaned_data + + if not cd.get('orgao'): + unidade.orgao = None + if not cd.get('parlamentar'): + unidade.parlamentar = None + if not cd.get('comissao'): + unidade.comissao = None + + unidade.save() + return unidade + class AcompanhamentoMateriaForm(ModelForm): From ae8adafa96a8db4fe98d94f9473087cd5fc012f9 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Fri, 5 Oct 2018 17:27:49 -0300 Subject: [PATCH 13/13] Release: 3.1.122 --- docker-compose.yml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b559eff7e..1bfcf65f5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ sapldb: ports: - "5432:5432" sapl: - image: interlegis/sapl:3.1.121 + image: interlegis/sapl:3.1.122 restart: always environment: ADMIN_PASSWORD: interlegis diff --git a/setup.py b/setup.py index e31740a2b..fac072615 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ install_requires = [ ] setup( name='interlegis-sapl', - version='3.1.121', + version='3.1.122', packages=find_packages(), include_package_data=True, license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007',