mirror of https://github.com/interlegis/sapl.git
LeandroRoberto
9 years ago
19 changed files with 504 additions and 75 deletions
@ -0,0 +1,34 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.CreateModel( |
||||
|
name='Cronometro', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)), |
||||
|
('start', models.PositiveIntegerField(verbose_name='Iniciar cronômetro')), |
||||
|
('reset', models.PositiveIntegerField(verbose_name='Reiniciar cronômetro')), |
||||
|
('stop', models.PositiveIntegerField(verbose_name='Parar cronômetro')), |
||||
|
('data_painel', models.DateField(verbose_name='Data cronômetro')), |
||||
|
('tipo', models.CharField(max_length=1, choices=[('A', 'Aparte'), ('D', 'Discurso'), ('O', 'Ordem do dia')], verbose_name='Tipo Cronômetro')), |
||||
|
], |
||||
|
), |
||||
|
migrations.CreateModel( |
||||
|
name='Painel', |
||||
|
fields=[ |
||||
|
('id', models.AutoField(primary_key=True, serialize=False, verbose_name='ID', auto_created=True)), |
||||
|
('abrir', models.PositiveIntegerField(verbose_name='Abrir painel', default=0)), |
||||
|
('fechar', models.PositiveIntegerField(verbose_name='Fechar painel', default=1)), |
||||
|
('data_painel', models.DateField(verbose_name='Data painel')), |
||||
|
('mostrar', models.CharField(max_length=1, choices=[('C', 'Completo'), ('P', 'Parlamentares'), ('V', 'Votação'), ('M', 'Mensagem')], default='C')), |
||||
|
], |
||||
|
), |
||||
|
] |
@ -0,0 +1,27 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('painel', '0001_initial'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RemoveField( |
||||
|
model_name='painel', |
||||
|
name='abrir', |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='painel', |
||||
|
name='fechar', |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='painel', |
||||
|
name='aberto', |
||||
|
field=models.BooleanField(verbose_name='Abrir painel', default=False), |
||||
|
), |
||||
|
] |
@ -0,0 +1,19 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('painel', '0002_auto_20150908_1818'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='cronometro', |
||||
|
name='counter', |
||||
|
field=models.PositiveIntegerField(default=0), |
||||
|
), |
||||
|
] |
@ -0,0 +1,45 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('painel', '0003_cronometro_counter'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RemoveField( |
||||
|
model_name='cronometro', |
||||
|
name='counter', |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='cronometro', |
||||
|
name='reset', |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='cronometro', |
||||
|
name='start', |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='cronometro', |
||||
|
name='stop', |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='cronometro', |
||||
|
name='status', |
||||
|
field=models.CharField(max_length=1, verbose_name='Status do cronômetro', choices=[('I', 'Start'), ('R', 'Reset'), ('S', 'Stop')], default='S'), |
||||
|
), |
||||
|
migrations.AddField( |
||||
|
model_name='cronometro', |
||||
|
name='time', |
||||
|
field=models.FloatField(verbose_name='Start time', default=0), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='cronometro', |
||||
|
name='data_painel', |
||||
|
field=models.DateField(verbose_name='Data do cronômetro'), |
||||
|
), |
||||
|
] |
@ -0,0 +1,23 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
from __future__ import unicode_literals |
||||
|
|
||||
|
from django.db import models, migrations |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('painel', '0004_auto_20150908_1858'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.RenameField( |
||||
|
model_name='cronometro', |
||||
|
old_name='data_painel', |
||||
|
new_name='data_cronometro', |
||||
|
), |
||||
|
migrations.RemoveField( |
||||
|
model_name='cronometro', |
||||
|
name='time', |
||||
|
), |
||||
|
] |
@ -1,3 +1,38 @@ |
|||||
# from django.db import models |
from django.db import models |
||||
|
|
||||
# Create your models here. |
|
||||
|
class Painel(models.Model): |
||||
|
PAINEL_TYPES = ( |
||||
|
('C', 'Completo'), |
||||
|
('P', 'Parlamentares'), |
||||
|
('V', 'Votação'), |
||||
|
('M', 'Mensagem'), |
||||
|
) |
||||
|
|
||||
|
aberto = models.BooleanField(verbose_name='Abrir painel', default=False) |
||||
|
data_painel = models.DateField(verbose_name='Data painel') |
||||
|
mostrar = models.CharField(max_length=1, |
||||
|
choices=PAINEL_TYPES, default='C') |
||||
|
|
||||
|
|
||||
|
class Cronometro(models.Model): |
||||
|
CRONOMETRO_TYPES = ( |
||||
|
('A', 'Aparte'), |
||||
|
('D', 'Discurso'), |
||||
|
('O', 'Ordem do dia') |
||||
|
) |
||||
|
|
||||
|
CRONOMETRO_STATUS = ( |
||||
|
('I', 'Start'), |
||||
|
('R', 'Reset'), |
||||
|
('S', 'Stop'), |
||||
|
) |
||||
|
|
||||
|
status = models.CharField( |
||||
|
max_length=1, |
||||
|
verbose_name='Status do cronômetro', |
||||
|
choices=CRONOMETRO_STATUS, |
||||
|
default='S') |
||||
|
data_cronometro = models.DateField(verbose_name='Data do cronômetro') |
||||
|
tipo = models.CharField( |
||||
|
max_length=1, choices=CRONOMETRO_TYPES, verbose_name='Tipo Cronômetro') |
||||
|
@ -1,12 +1,17 @@ |
|||||
from django.conf.urls import url |
from django.conf.urls import include, url |
||||
|
|
||||
from .views import (json_presenca, json_votacao, painel_parlamentares_view, |
from .views import (controlador_painel, cronometro_painel_crud, json_presenca, |
||||
painel_view, painel_votacao_view) |
json_votacao, painel_parlamentares_view, painel_view, |
||||
|
painel_votacao_view) |
||||
|
|
||||
urlpatterns = [ |
urlpatterns = [ |
||||
url(r'^sistema/painel$', painel_view), |
url(r'^sistema/painel$', painel_view), |
||||
|
url(r'^sistema/painel/controlador', |
||||
|
controlador_painel, name='controlador_painel'), |
||||
url(r'^sistema/painel/parlamentares', painel_parlamentares_view), |
url(r'^sistema/painel/parlamentares', painel_parlamentares_view), |
||||
url(r'^sistema/painel/votacao', painel_votacao_view), |
url(r'^sistema/painel/votacao', painel_votacao_view), |
||||
url(r'^sistema/painel/json_presenca', json_presenca, name='json_presenca'), |
url(r'^sistema/painel/json_presenca', json_presenca, name='json_presenca'), |
||||
url(r'^sistema/painel/json_votacao', json_votacao, name='json_votacao'), |
url(r'^sistema/painel/json_votacao', json_votacao, name='json_votacao'), |
||||
|
url(r'^sistema/painel/cronometro', |
||||
|
include(cronometro_painel_crud.urls)), |
||||
] |
] |
||||
|
@ -0,0 +1,13 @@ |
|||||
|
|
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (1, 21, 'S', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (2, 23, 'S', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (3, 33, 'S', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (4, 112, 'S', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (5, 117, 'S', 83); |
||||
|
|
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (9, 116, 'N', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (6, 120, 'N', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (7, 121, 'N', 83); |
||||
|
INSERT INTO sessao_votoparlamentar (id, parlamentar_id, voto, votacao_id) values (8, 122, 'N', 83); |
||||
|
|
||||
|
SELECT * FROM sessao_votoparlamentar; |
@ -1,45 +0,0 @@ |
|||||
{% load i18n %} |
|
||||
{% load staticfiles %} |
|
||||
<!DOCTYPE HTML> |
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> |
|
||||
<!--[if gt IE 8]><!--> |
|
||||
<html lang="en"> |
|
||||
<!--<![endif]--> |
|
||||
|
|
||||
<head> |
|
||||
<meta charset="UTF-8"> |
|
||||
<!-- TODO: does it need this head_title here? --> |
|
||||
<title>{% block head_title %}{% trans 'SAPL - Sistema de Apoio ao Processo Legislativo' %}{% endblock %}</title> |
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
||||
<script type="text/javascript" src="{% static 'foundation/js/vendor/jquery.js' %}"></script> |
|
||||
|
|
||||
<STYLE type="text/css"> |
|
||||
@media screen { |
|
||||
body {font-size: medium; color: white; line-height: 1em; background: black;} |
|
||||
} |
|
||||
</STYLE> |
|
||||
|
|
||||
</head> |
|
||||
<body> |
|
||||
STATUS SESSÃO:<br/> |
|
||||
|
|
||||
<button id="open-votacao">Iniciar Votação</button> |
|
||||
<button id="close-votacao">Fechar Votação</button> |
|
||||
<br/> |
|
||||
|
|
||||
CRONÔMETROS:<br/> |
|
||||
<button id="init-stopwatch-discurso">Iniciar Cronômetro discurso</button> |
|
||||
<button id="init-stopwatch-aparte">Iniciar Cronômetro aparte</button> |
|
||||
<button id="init-stopwatch-questaoordem">Iniciar Cronômetro Questão de Ordem</button> |
|
||||
<br/> |
|
||||
<button id="stop-stopwatch-discurso">Parar Cronômetro discurso</button> |
|
||||
<button id="stop-stopwatch-aparte">Parar Cronômetro aparte</button> |
|
||||
<button id="stop-stopwatch-questaoordem">Parar Cronômetro Questão de Ordem</button> |
|
||||
<br/> |
|
||||
<button id="reset-stopwatch-discurso">Reiniciar Cronômetro discurso</button> |
|
||||
<button id="reset-stopwatch-aparte">Reiniciar Cronômetro aparte</button> |
|
||||
<button id="reset-stopwatch-questaoordem">Reiniciar Cronômetro Questão de Ordem</button> |
|
||||
<br/> |
|
||||
|
|
||||
</body> |
|
||||
</html> |
|
@ -0,0 +1,24 @@ |
|||||
|
{% extends 'base.html' %} |
||||
|
{% load i18n %} |
||||
|
{% block base_content %} |
||||
|
|
||||
|
STATUS: |
||||
|
{% if painel.aberto %} |
||||
|
ABERTO |
||||
|
{% else %} |
||||
|
FECHADO |
||||
|
{% endif %} |
||||
|
<br/> |
||||
|
<form method="post"> |
||||
|
{% csrf_token %} |
||||
|
Tipo de painel: {{ painel.get_mostrar_display }}</br> |
||||
|
{% for id, value in PAINEL_TYPES %} |
||||
|
<input type="radio" name="tipo_painel" id="tipo_painel{{ forloop.counter }}" value="{{ id }}" {% if id == painel.mostrar %}checked="checked" {% endif %}> |
||||
|
<label for="tipo_painel{{ forloop.counter }}">{{ value }}</label><br /> |
||||
|
{% endfor %} |
||||
|
</br> |
||||
|
<input type="submit" name="start-painel" value="Abrir Painel"> |
||||
|
<input type="submit" name="stop-painel" value="Fechar Painel"> |
||||
|
<input type="submit" name="save-painel" value="Salvar"> |
||||
|
</form> |
||||
|
{% endblock %} |
@ -0,0 +1,21 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% load i18n %} |
||||
|
|
||||
|
{% block base_content %} |
||||
|
<form action="" method="post">{% csrf_token %} |
||||
|
<div class="callout panel text-center radius clearfix"> |
||||
|
|
||||
|
<p> |
||||
|
{% blocktrans %} |
||||
|
Tem certeza que deseja apagar o orador? |
||||
|
{% endblocktrans %} |
||||
|
</p> |
||||
|
|
||||
|
<div class="button-group"> |
||||
|
<a href="{{ view.detail_url }}" class="button button radius alert">{% trans 'Cancelar' %}</a> |
||||
|
<input name="submit" value="{% trans 'Confirmar' %}" class="submit button button radius success" type="submit"></li> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</form> |
||||
|
{% endblock %} |
@ -0,0 +1,56 @@ |
|||||
|
{% extends "sessao/sessaoplenaria_detail.html" %} |
||||
|
{% load i18n %} |
||||
|
{% load crispy_forms_tags %} |
||||
|
|
||||
|
{% block detail_content %} |
||||
|
|
||||
|
<fieldset> |
||||
|
<legend>Oradores do Expediente</legend> |
||||
|
<ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4"> |
||||
|
<li>Ordem de pronunciamento</li> |
||||
|
<li>Parlamentar</li> |
||||
|
<li>URL Discurso</li> |
||||
|
<li>Excluir</li> |
||||
|
</ul> |
||||
|
|
||||
|
<form method="post" action="./oradorexpediente"> |
||||
|
{% csrf_token %} |
||||
|
{% for numero_ordem, url_discurso, parlamentar in view.get_oradores %} |
||||
|
<ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4"> |
||||
|
<li><input size="2" type="text" id="numero_ordem" name="numero_ordem" value="{{numero_ordem}}" /></li> |
||||
|
<li>{{parlamentar.nome_parlamentar }}</li> |
||||
|
<li>{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %}</li> |
||||
|
<li><a id="excluir-orador" href="{% url 'sessaoplenaria:oradorexcluir' object.pk parlamentar.id %}">Excluir</a></li> |
||||
|
</ul> |
||||
|
{% endfor %} |
||||
|
|
||||
|
<br /> |
||||
|
<input type="submit" value="Atualizar" /> |
||||
|
</form> |
||||
|
</fieldset> |
||||
|
|
||||
|
<fieldset> |
||||
|
<legend>Adicionar Orador</legend> |
||||
|
<form method="POST" action="{% url 'sessaoplenaria:oradorexpediente' object.pk %}"> |
||||
|
{% csrf_token %} |
||||
|
|
||||
|
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> |
||||
|
<li>Ordem de pronunciamento</li> |
||||
|
<li>Parlamentar</li> |
||||
|
<li>URL Discurso</li> |
||||
|
</ul> |
||||
|
|
||||
|
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3"> |
||||
|
<li><input type="text" id="numero_ordem" name="numero_ordem"/></li> |
||||
|
|
||||
|
<li><select name="parlamentar" id="parlamentar"> |
||||
|
{% for parlamentar in view.get_candidatos_orador %} |
||||
|
<option value="{{parlamentar.id}}">{{parlamentar.nome_parlamentar}}</option> |
||||
|
{% endfor %} |
||||
|
</select></li> |
||||
|
<li><input type="text" id="url_discurso" name="url_discurso" /></li> |
||||
|
</ul> |
||||
|
<input type="submit" value="Adicionar Orador" /> |
||||
|
</form> |
||||
|
</fieldset> |
||||
|
{% endblock detail_content %} |
Loading…
Reference in new issue