Browse Source

Fix #918 cronometro painel set (#919)

* Fix #918

* Conserta alguns erros encontrados no teste
pull/929/head
eduardocalil 8 years ago
committed by Edward
parent
commit
eb214e0541
  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. 6
      sapl/parlamentares/models.py
  6. 4
      sapl/sessao/models.py
  7. 24
      sapl/sessao/views.py
  8. 1
      sapl/static/js/app.js
  9. 3
      sapl/templates/base/layouts.yaml
  10. 8
      sapl/templates/painel/index.html
  11. 7
      sapl/templates/sessao/painel.html
  12. 11
      sapl/utils.py

11
sapl/base/forms.py

@ -694,7 +694,16 @@ class ConfiguracoesAppForm(ModelForm):
'texto_articulado_proposicao',
'texto_articulado_materia',
'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):

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'),
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:
verbose_name = _('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://'):
return True
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)

6
sapl/parlamentares/models.py

@ -7,9 +7,9 @@ from model_utils import Choices
from sapl.base.models import Autor
from sapl.utils import (INDICADOR_AFASTAMENTO, UF, YES_NO_CHOICES,
SaplGenericRelation, intervalos_tem_intersecao,
restringe_tipos_de_arquivo_img,
get_settings_auth_user_model, texto_upload_path)
SaplGenericRelation, get_settings_auth_user_model,
intervalos_tem_intersecao,
restringe_tipos_de_arquivo_img, texto_upload_path)
class Legislatura(models.Model):

4
sapl/sessao/models.py

@ -8,8 +8,8 @@ from sapl.materia.models import MateriaLegislativa
from sapl.parlamentares.models import (CargoMesa, Legislatura, Parlamentar,
Partido, SessaoLegislativa)
from sapl.utils import (YES_NO_CHOICES, SaplGenericRelation,
restringe_tipos_de_arquivo_txt, texto_upload_path,
get_settings_auth_user_model)
get_settings_auth_user_model,
restringe_tipos_de_arquivo_txt, texto_upload_path)
class CargoBancada(models.Model):

24
sapl/sessao/views.py

@ -590,16 +590,38 @@ class PainelView(PermissionRequiredForAppCrudMixin, TemplateView):
def get(self, request, *args, **kwargs):
if request.user.is_anonymous():
self.template_name = 'painel/index.html'
return TemplateView.get(self, request, *args, **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.update({
'head_title': str(_('Painel Plenário')),
'sessao_id': 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

1
sapl/static/js/app.js

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

3
sapl/templates/base/layouts.yaml

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

8
sapl/templates/painel/index.html

@ -1,5 +1,6 @@
{% load i18n %}
{% load staticfiles sass_tags %}
{% load common_tags %}
<!DOCTYPE HTML>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
@ -39,6 +40,7 @@
<table style="width:100%">
<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_hora_inicio"></span></font></th>
</tr>
</table>
@ -119,7 +121,7 @@
$('#cronometro_discurso').runner({
autostart: false,
countdown: true,
startAt: 5 * 60 * 1000, // 5 minutes
startAt: {{ 'discurso'|cronometro_to_seconds }} * 1000,
stopAt: 0,
milliseconds: false
}).on('runnerFinish', function(eventObject, info){
@ -129,7 +131,7 @@
$('#cronometro_aparte').runner({
autostart: false,
countdown: true,
startAt: 3 * 60 * 1000, // 3 minutes
startAt: {{ 'aparte'|cronometro_to_seconds }} * 1000,
stopAt: 0,
milliseconds: false
}).on('runnerFinish', function(eventObject, info){
@ -139,7 +141,7 @@
$('#cronometro_ordem').runner({
autostart: false,
countdown: true,
startAt: 2 * 60 * 1000, // 2 minutes
startAt: {{ 'ordem'|cronometro_to_seconds }} * 1000,
stopAt: 0,
milliseconds: false
}).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>
<br />
<h1>Operação do Painel Eletrônico</h1>
<h2><span id="relogio"></span></h2>
<br />
@ -101,7 +102,7 @@ $(function() {
$('#discurso').runner({
autostart: false,
countdown: true,
startAt: 60 * 5 * 1000,
startAt: {{cronometro_discurso}} * 1000,
stopAt: 0,
milliseconds: false
}).on('runnerFinish', function(eventObject, info){
@ -156,7 +157,7 @@ $(function() {
$('#aparte').runner({
autostart: false,
countdown: true,
startAt: 60 * 3 * 1000,
startAt: {{cronometro_aparte}} * 1000,
stopAt: 0,
milliseconds: false
}).on('runnerFinish', function(eventObject, info){
@ -210,7 +211,7 @@ $(function() {
$('#ordem').runner({
autostart: false,
countdown: true,
startAt: 60 * 2 * 1000,
startAt: {{cronometro_ordem}} * 1000,
stopAt: 0,
milliseconds: false
}).on('runnerFinish', function(eventObject, info){

11
sapl/utils.py

@ -1,10 +1,12 @@
from datetime import date
from functools import wraps
from unicodedata import normalize as unicodedata_normalize
import hashlib
import logging
import re
from datetime import date
from functools import wraps
from unicodedata import normalize as unicodedata_normalize
import django_filters
import magic
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button
from django import forms
@ -17,13 +19,10 @@ from django.core.exceptions import ValidationError
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
from floppyforms import ClearableFileInput
import django_filters
import magic
from sapl.crispy_layout_mixin import SaplFormLayout, form_actions, to_row
from sapl.settings import BASE_DIR
sapl_logger = logging.getLogger(BASE_DIR.name)

Loading…
Cancel
Save