Browse Source

Fix #918

pull/919/head
Eduardo Calil 9 years ago
parent
commit
d80e9943b0
  1. 11
      sapl/base/forms.py
  2. 30
      sapl/base/migrations/0032_auto_20170308_1006.py
  3. 15
      sapl/base/models.py
  4. 11
      sapl/base/templatetags/common_tags.py
  5. 1
      sapl/painel/views.py
  6. 24
      sapl/sessao/views.py
  7. 1
      sapl/static/js/app.js
  8. 3
      sapl/templates/base/layouts.yaml
  9. 8
      sapl/templates/painel/index.html
  10. 7
      sapl/templates/sessao/painel.html

11
sapl/base/forms.py

@ -694,7 +694,16 @@ class ConfiguracoesAppForm(ModelForm):
'texto_articulado_proposicao', 'texto_articulado_proposicao',
'texto_articulado_materia', 'texto_articulado_materia',
'texto_articulado_norma', 'texto_articulado_norma',
'proposicao_incorporacao_obrigatoria'] 'proposicao_incorporacao_obrigatoria',
'cronometro_discurso',
'cronometro_aparte',
'cronometro_ordem']
def __init__(self, *args, **kwargs):
super(ConfiguracoesAppForm, self).__init__(*args, **kwargs)
self.fields['cronometro_discurso'].widget.attrs['class'] = 'cronometro'
self.fields['cronometro_aparte'].widget.attrs['class'] = 'cronometro'
self.fields['cronometro_ordem'].widget.attrs['class'] = 'cronometro'
class RecuperarSenhaForm(PasswordResetForm): class RecuperarSenhaForm(PasswordResetForm):

30
sapl/base/migrations/0032_auto_20170308_1006.py

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-03-08 10:06
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('base', '0031_auto_20170203_1019'),
]
operations = [
migrations.AddField(
model_name='appconfig',
name='cronometro_aparte',
field=models.TimeField(blank=True, null=True, verbose_name='Cronômetro do Aparte'),
),
migrations.AddField(
model_name='appconfig',
name='cronometro_discurso',
field=models.TimeField(blank=True, null=True, verbose_name='Cronômetro do Discurso'),
),
migrations.AddField(
model_name='appconfig',
name='cronometro_ordem',
field=models.TimeField(blank=True, null=True, verbose_name='Cronômetro da Ordem'),
),
]

15
sapl/base/models.py

@ -114,6 +114,21 @@ class AppConfig(models.Model):
verbose_name=_('Regra de incorporação de proposições e protocolo'), verbose_name=_('Regra de incorporação de proposições e protocolo'),
max_length=1, choices=POLITICA_PROTOCOLO_CHOICES, default='O') max_length=1, choices=POLITICA_PROTOCOLO_CHOICES, default='O')
cronometro_discurso = models.TimeField(
verbose_name=_('Cronômetro do Discurso'),
blank=True,
null=True)
cronometro_aparte = models.TimeField(
verbose_name=_('Cronômetro do Aparte'),
blank=True,
null=True)
cronometro_ordem = models.TimeField(
verbose_name=_('Cronômetro da Ordem'),
blank=True,
null=True)
class Meta: class Meta:
verbose_name = _('Configurações da Aplicação') verbose_name = _('Configurações da Aplicação')
verbose_name_plural = _('Configurações da Aplicação') verbose_name_plural = _('Configurações da Aplicação')

11
sapl/base/templatetags/common_tags.py

@ -121,3 +121,14 @@ def url(value):
if value.startswith('http://') or value.startswith('https://'): if value.startswith('http://') or value.startswith('https://'):
return True return True
return False return False
@register.filter
def cronometro_to_seconds(value):
if not AppConfig.attr('cronometro_' + value):
return 0
m, s, x = AppConfig.attr(
'cronometro_' + value).isoformat().split(':')
return 60 * int(m) + int(s)

1
sapl/painel/views.py

@ -8,6 +8,7 @@ from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from sapl.base.models import AppConfig as AppsAppConfig
from sapl.crud.base import Crud from sapl.crud.base import Crud
from sapl.painel.apps import AppConfig from sapl.painel.apps import AppConfig
from sapl.painel.models import Painel from sapl.painel.models import Painel

24
sapl/sessao/views.py

@ -590,16 +590,38 @@ class PainelView(PermissionRequiredForAppCrudMixin, TemplateView):
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
if request.user.is_anonymous(): if request.user.is_anonymous():
self.template_name = 'painel/index.html' self.template_name = 'painel/index.html'
return TemplateView.get(self, request, *args, **kwargs) return TemplateView.get(self, request, *args, **kwargs)
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
cronometro_discurso = AppsAppConfig.attr('cronometro_discurso')
cronometro_aparte = AppsAppConfig.attr('cronometro_aparte')
cronometro_ordem = AppsAppConfig.attr('cronometro_ordem')
if not cronometro_discurso or not cronometro_aparte or not cronometro_ordem:
msg = _(
'Você precisa primeiro configurar os cronômetros nas Configurações da Aplicação')
messages.add_message(self.request, messages.ERROR, msg)
else:
m, s, x = cronometro_discurso.isoformat().split(':')
cronometro_discurso = int(m) * 60 + int(s)
m, s, x = cronometro_aparte.isoformat().split(':')
cronometro_aparte = int(m) * 60 + int(s)
m, s, x = cronometro_ordem.isoformat().split(':')
cronometro_ordem = int(m) * 60 + int(s)
context = TemplateView.get_context_data(self, **kwargs) context = TemplateView.get_context_data(self, **kwargs)
context.update({ context.update({
'head_title': str(_('Painel Plenário')), 'head_title': str(_('Painel Plenário')),
'sessao_id': kwargs['pk'], 'sessao_id': kwargs['pk'],
'root_pk': kwargs['pk'], 'root_pk': kwargs['pk'],
'sessaoplenaria': SessaoPlenaria.objects.get(pk=kwargs['pk'])}) 'sessaoplenaria': SessaoPlenaria.objects.get(pk=kwargs['pk']),
'cronometro_discurso': cronometro_discurso,
'cronometro_aparte': cronometro_aparte,
'cronometro_ordem': cronometro_ordem})
return context return context

1
sapl/static/js/app.js

@ -48,6 +48,7 @@ function refreshMask() {
$('.dateinput').mask('00/00/0000', {placeholder:"__/__/____"}); $('.dateinput').mask('00/00/0000', {placeholder:"__/__/____"});
$('.hora').mask("00:00", {placeholder:"hh:mm"}); $('.hora').mask("00:00", {placeholder:"hh:mm"});
$('.hora_hms').mask("00:00:00", {placeholder:"hh:mm:ss"}); $('.hora_hms').mask("00:00:00", {placeholder:"hh:mm:ss"});
$('.cronometro').mask("00:00", {placeholder:"mm:ss"});
} }
function autorModal() { function autorModal() {

3
sapl/templates/base/layouts.yaml

@ -20,6 +20,9 @@ AppConfig:
{% trans 'Textos Articulados' %}: {% trans 'Textos Articulados' %}:
- texto_articulado_proposicao texto_articulado_materia texto_articulado_norma - texto_articulado_proposicao texto_articulado_materia texto_articulado_norma
{% trans 'Cronômetros do Painel' %}:
- cronometro_discurso cronometro_aparte cronometro_ordem
TipoAutor: TipoAutor:
{% trans 'Tipo Autor' %}: {% trans 'Tipo Autor' %}:
- content_type:4 descricao - content_type:4 descricao

8
sapl/templates/painel/index.html

@ -1,5 +1,6 @@
{% load i18n %} {% load i18n %}
{% load staticfiles sass_tags %} {% load staticfiles sass_tags %}
{% load common_tags %}
<!DOCTYPE HTML> <!DOCTYPE HTML>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <!--[if gt IE 8]><!-->
@ -39,6 +40,7 @@
<table style="width:100%"> <table style="width:100%">
<tr> <tr>
<th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_data"></span></font></th> <th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_data"></span></font></th>
<th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_hora_inicio"></span></font></th> <th style="text-align:center"><font color="white" size="4"><span id="sessao_plenaria_hora_inicio"></span></font></th>
</tr> </tr>
</table> </table>
@ -119,7 +121,7 @@
$('#cronometro_discurso').runner({ $('#cronometro_discurso').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 5 * 60 * 1000, // 5 minutes startAt: {{ 'discurso'|cronometro_to_seconds }} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
@ -129,7 +131,7 @@
$('#cronometro_aparte').runner({ $('#cronometro_aparte').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 3 * 60 * 1000, // 3 minutes startAt: {{ 'aparte'|cronometro_to_seconds }} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
@ -139,7 +141,7 @@
$('#cronometro_ordem').runner({ $('#cronometro_ordem').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 2 * 60 * 1000, // 2 minutes startAt: {{ 'ordem'|cronometro_to_seconds }} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){

7
sapl/templates/sessao/painel.html

@ -21,6 +21,7 @@
<div class="col-md-6"><a href="{% url 'sapl.painel:painel_controlador' %}" class="btn btn-primary btn-sm active">Controlador Painel</a></div> <div class="col-md-6"><a href="{% url 'sapl.painel:painel_controlador' %}" class="btn btn-primary btn-sm active">Controlador Painel</a></div>
</div> </div>
<br /> <br />
<h1>Operação do Painel Eletrônico</h1> <h1>Operação do Painel Eletrônico</h1>
<h2><span id="relogio"></span></h2> <h2><span id="relogio"></span></h2>
<br /> <br />
@ -101,7 +102,7 @@ $(function() {
$('#discurso').runner({ $('#discurso').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 60 * 5 * 1000, startAt: {{cronometro_discurso}} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
@ -156,7 +157,7 @@ $(function() {
$('#aparte').runner({ $('#aparte').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 60 * 3 * 1000, startAt: {{cronometro_aparte}} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){
@ -210,7 +211,7 @@ $(function() {
$('#ordem').runner({ $('#ordem').runner({
autostart: false, autostart: false,
countdown: true, countdown: true,
startAt: 60 * 2 * 1000, startAt: {{cronometro_ordem}} * 1000,
stopAt: 0, stopAt: 0,
milliseconds: false milliseconds: false
}).on('runnerFinish', function(eventObject, info){ }).on('runnerFinish', function(eventObject, info){

Loading…
Cancel
Save