Browse Source

Merge branch '3.1.x' of https://github.com/interlegis/sapl into 1801-justificativa

pull/2260/head
Mariana Mendes 7 years ago
parent
commit
beccefede0
  1. 2
      docker-compose.yml
  2. 4
      release.sh
  3. 20
      sapl/compilacao/migrations/0010_auto_20181004_1939.py
  4. 3
      sapl/compilacao/models.py
  5. 14
      sapl/materia/forms.py
  6. 12
      sapl/norma/forms.py
  7. 2
      sapl/parlamentares/forms.py
  8. 15
      sapl/relatorios/views.py
  9. 3
      sapl/sessao/forms.py
  10. 12
      sapl/sessao/tests/test_sessao.py
  11. 7
      sapl/static/styles/_header.scss
  12. 188
      sapl/static/styles/_home_index.scss
  13. 666
      sapl/static/styles/app.scss
  14. 3
      sapl/templates/base.html
  15. 4
      sapl/templates/comissoes/composicao_list.html
  16. 20
      sapl/templates/crud/detail_detail.html
  17. 293
      sapl/templates/index.html
  18. 2
      setup.py

2
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

4
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 {

20
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'),
),
]

3
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,

14
sapl/materia/forms.py

@ -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):

12
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(

2
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()

15
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)
@ -1028,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

3
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)

12
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'
})

7
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;

188
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;
}
}

666
sapl/static/styles/app.scss

@ -1,73 +1,21 @@
@import "bootstrap/variables.scss";
@import "header";
.vcenter {
display: inline-block;
vertical-align: middle;
float: none;
padding: 10px;
}
@import "home_index";
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;
}
}
}
&: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;
}
}
html {
position: relative;
min-height: 100%;
}
.navbar {
margin-bottom: 0;
body {
margin-bottom: 160px;
}
.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 +35,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 +81,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 +109,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 +138,6 @@ label {
}
}
// #### pagination ########################################
.pagination {
padding-top: 25px;
}
@ -246,15 +148,6 @@ label {
}
}
fieldset {
fieldset {
font-size: 95%;
legend {
font-size: 18px;
}
}
}
.avatar-parlamentar {
height: 128px;
width: 128px;
@ -262,228 +155,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 +343,46 @@ 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;
position: absolute;
width: 100%;
bottom: 0px;
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 +391,76 @@ 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) {
body {
margin: 0;
}
.footer {
position: relative;
}
.caret {
margin-left: 1px;
}
.navbar-nav > li > a {
padding-left: 4px;
padding-right: 4px;
}
}
@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;
}
}
}
.table{
width: auto;
white-space: normal;
display:block;
overflow-x: auto;
}
}
@media (min-width: 1092px) and (max-width: 1199px) {
.container {
@ -609,25 +473,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;
}

3
sapl/templates/base.html

@ -184,6 +184,7 @@
<small>
Desenvolvido pelo <a href="http://www.interlegis.leg.br/">Interlegis</a> em software livre e aberto.
</small>
<span>Release: 3.1.121</span>
</p>
</div>
<div class="col-md-4">
@ -192,7 +193,7 @@
</a>
<p>
<small>
Conteúdo e dados sob licença <a href="https://creativecommons.org">Creative Commons</a> 4.0 <a href="https://creativecommons.org/licenses/by/4.0/">Atribuir Fonte - Compartilhar Igual</a>
Conteúdo e dados sob licença <a href="https://creativecommons.org">Creative Commons</a> 4.0<br><a href="https://creativecommons.org/licenses/by/4.0/">Atribuir Fonte - Compartilhar Igual</a>
</small>
</p>
</div>

4
sapl/templates/comissoes/composicao_list.html

@ -37,7 +37,9 @@
</a>
</div>
{% endif %}
<br />
<div class="clearfix"></div>
<div class="container-table">
<table class="table table-striped table-hover table-link-ordering">

20
sapl/templates/crud/detail_detail.html

@ -63,14 +63,18 @@
{% endfor %}
{% endfor %}
{% endblock detail_content %}
<div class="actions btn-group pull-right btn-group-lg" role="group">
{% if view.detail_set_create_url %}
<a href="{{ view.detail_set_create_url }}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name_set %} Adicionar {{ verbose_name }} {% endblocktrans %}
</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}
</div>
<div class="actions btn-group pull-right btn-group-lg" role="group">
{% if view.detail_set_create_url %}
<a href="{{ view.detail_set_create_url }}" class="btn btn-default">
{% blocktrans with verbose_name=view.verbose_name_set %} Adicionar {{ verbose_name }} {% endblocktrans %}
</a>
{% endif %}
{% block more_buttons %}{% endblock more_buttons %}
</div>
<div class="clearfix"></div>
<div class="container-table">
{% if not rows %}
<p>{{ NO_ENTRIES_MSG }}</p>

293
sapl/templates/index.html

@ -1,164 +1,195 @@
{% extends "base.html" %}
{% load i18n staticfiles %}
{% block title%}
<head>
</head>
<br />
<div id="conteudo" style="min-height: 60px">
<div id="homeIndex">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_mesa_diretora.png' %}" alt="Mesa Diretora">
</div>
<h2>Mesa Diretora</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_mesa_diretora.png' %}">
{% block title %}
{% endblock title %}
{% block base_content%}
<div class="container-home">
<div id="homeIndex">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_mesa_diretora.png' %}" alt="Mesa Diretora">
</div>
<h2>Mesa Diretora</h2>
</div>
<p>
Ó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.
</p>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_mesa_diretora.png' %}">
<h2>Mesa Diretora</h2>
</div>
<p>
Ó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.
</p>
</div>
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a>
</div>
<a href="{% url 'sapl.parlamentares:mesa_diretora' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_comissoes.png' %}" alt="Comissões">
</div>
<h2>Comissões</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_comissoes.png' %}">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_comissoes.png' %}" alt="Comissões">
</div>
<h2>Comissões</h2>
</div>
<p>
Ó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.
</p>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_comissoes.png' %}">
<h2>Comissões</h2>
</div>
<p>
Ó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.
</p>
</div>
<a href="{% url 'sapl.comissoes:comissao_list' %}"></a>
</div>
<a href="{% url 'sapl.comissoes:comissao_list' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_parlamentares.png' %}" alt="Parlamentares">
</div>
<h2>Parlamentares</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_parlamentares.png' %}">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_parlamentares.png' %}" alt="Parlamentares">
</div>
<h2>Parlamentares</h2>
</div>
<p>
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.
</p>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_parlamentares.png' %}">
<h2>Parlamentares</h2>
</div>
<p>
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.
</p>
</div>
<a href="{% url 'sapl.parlamentares:parlamentar_list' %}"></a>
</div>
<a href="{% url 'sapl.parlamentares:parlamentar_list' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_pautas.png' %}" alt="Pautas das Sessões">
</div>
<h2>Pautas das Sessões</h2>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_pautas.png' %}" alt="Pautas das Sessões">
</div>
<h2>Pautas das Sessões</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_pautas.png' %}">
<h2>Pautas das<br>Sessões</h2>
</div>
<p>
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.
</p>
</div>
<a href="{% url 'sapl.sessao:pauta_sessao' %}"></a>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_pautas.png' %}">
<h2>Pautas das<br>Sessões</h2>
</div>
<p>
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.
</p>
</div>
<a href="{% url 'sapl.sessao:pauta_sessao' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_plenarias.png' %}" alt="Sessão Plenária">
</div>
<h2>Sessão Plenária</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_plenarias.png' %}">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_plenarias.png' %}" alt="Sessão Plenária">
</div>
<h2>Sessão Plenária</h2>
</div>
<p>
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.
</p>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_plenarias.png' %}">
<h2>Sessão Plenária</h2>
</div>
<p>
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.
</p>
</div>
<a href="{% url 'sapl.sessao:pesquisar_sessao' %}"></a>
</div>
<a href="{% url 'sapl.sessao:pesquisar_sessao' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_materia_legislativa.png' %}" alt="Matérias Legislativas">
</div>
<h2>Matérias Legislativas</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_materia_legislativa.png' %}">
<h2>Matérias<br>Legislativas</h2>
</div>
<p>
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.
</p>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_materia_legislativa.png' %}" alt="Matérias Legislativas">
</div>
<h2>Matérias Legislativas</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_materia_legislativa.png' %}">
<h2>Matérias<br>Legislativas</h2>
</div>
<p>
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.
</p>
</div>
<a href="{% url 'sapl.materia:pesquisar_materia' %}"></a>
</div>
<a href="{% url 'sapl.materia:pesquisar_materia' %}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_normas_juridicas.png' %}" alt="Normas Jurídicas">
</div>
<h2>Normas Jurídicas</h2>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_normas_juridicas.png' %}">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_normas_juridicas.png' %}" alt="Normas Jurídicas">
</div>
<h2>Normas Jurídicas</h2>
</div>
<p>
Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias, aos decretos legislativos e às resoluções.
</p>
</div>
<a href="{% url 'sapl.norma:norma_pesquisa'%}"></a>
</div>
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_relatorios.png' %}" alt="Relatórios">
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_normas_juridicas.png' %}">
<h2>Normas Jurídicas</h2>
</div>
<p>
Nos Municípios, referem-se às emendas à Lei Orgânica, às leis complementares, às leis ordinárias,
aos
decretos legislativos e às resoluções.
</p>
</div>
<h2>Relatórios</h2>
<a href="{% url 'sapl.norma:norma_pesquisa'%}"></a>
</div>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_relatorios.png' %}">
<div class="homeBlock">
<div class="homeFront">
<div class="homeIcon">
<img src="{% static 'img/icon_relatorios.png' %}" alt="Relatórios">
</div>
<h2>Relatórios</h2>
</div>
<p>
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.
</p>
<div class="homeContent">
<div class="homeTitle">
<img src="{% static 'img/icon_relatorios.png' %}">
<h2>Relatórios</h2>
</div>
<p>
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.
</p>
</div>
<a href="/sistema/relatorios/"></a>
</div>
<a href="/sistema/relatorios/"></a>
</div>
</div>
</div>
</div>
{% endblock %}

2
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',

Loading…
Cancel
Save