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, |
|||
painel_view, painel_votacao_view) |
|||
from .views import (controlador_painel, cronometro_painel_crud, json_presenca, |
|||
json_votacao, painel_parlamentares_view, painel_view, |
|||
painel_votacao_view) |
|||
|
|||
urlpatterns = [ |
|||
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/votacao', painel_votacao_view), |
|||
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/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