From 98bb9b8f3533cfd9eaf578d92f38501dd08a9e9e Mon Sep 17 00:00:00 2001 From: eribeiro Date: Tue, 31 Mar 2020 21:11:36 -0300 Subject: [PATCH] Adiciona mais recursos e layout --- sapl/sdr/__init__.py | 1 + sapl/{videoconf => sdr}/admin.py | 0 sapl/{videoconf => sdr}/apps.py | 6 +- sapl/{videoconf => sdr}/forms.py | 29 +++++-- .../migrations/0001_initial.py | 4 +- .../0002_videoconferencia_sessao_plenaria.py | 22 +++++ .../sdr/migrations/0003_auto_20200331_1926.py | 19 +++++ .../sdr/migrations/0004_auto_20200331_1933.py | 23 ++++++ .../{videoconf => sdr}/migrations/__init__.py | 0 sapl/{videoconf => sdr}/models.py | 14 +++- sapl/{videoconf => sdr}/tests.py | 0 sapl/sdr/urls.py | 13 +++ sapl/{videoconf => sdr}/views.py | 51 +++++++++--- sapl/settings.py | 2 +- sapl/templates/sdr/deliberacaoremota.html | 80 +++++++++++++++++++ .../deliberacaoremota_detail.html} | 3 +- sapl/templates/sdr/layouts.yaml | 12 +++ sapl/templates/videoconf/layouts.yaml | 6 -- .../templates/videoconf/videoconferencia.html | 43 ---------- sapl/urls.py | 4 +- sapl/videoconf/__init__.py | 1 - sapl/videoconf/urls.py | 13 --- 22 files changed, 255 insertions(+), 91 deletions(-) create mode 100644 sapl/sdr/__init__.py rename sapl/{videoconf => sdr}/admin.py (100%) rename sapl/{videoconf => sdr}/apps.py (54%) rename sapl/{videoconf => sdr}/forms.py (73%) rename sapl/{videoconf => sdr}/migrations/0001_initial.py (90%) create mode 100644 sapl/sdr/migrations/0002_videoconferencia_sessao_plenaria.py create mode 100644 sapl/sdr/migrations/0003_auto_20200331_1926.py create mode 100644 sapl/sdr/migrations/0004_auto_20200331_1933.py rename sapl/{videoconf => sdr}/migrations/__init__.py (100%) rename sapl/{videoconf => sdr}/models.py (70%) rename sapl/{videoconf => sdr}/tests.py (100%) create mode 100644 sapl/sdr/urls.py rename sapl/{videoconf => sdr}/views.py (53%) create mode 100644 sapl/templates/sdr/deliberacaoremota.html rename sapl/templates/{videoconf/videoconferencia_detail.html => sdr/deliberacaoremota_detail.html} (52%) create mode 100644 sapl/templates/sdr/layouts.yaml delete mode 100644 sapl/templates/videoconf/layouts.yaml delete mode 100644 sapl/templates/videoconf/videoconferencia.html delete mode 100644 sapl/videoconf/__init__.py delete mode 100644 sapl/videoconf/urls.py diff --git a/sapl/sdr/__init__.py b/sapl/sdr/__init__.py new file mode 100644 index 000000000..77b11e3d2 --- /dev/null +++ b/sapl/sdr/__init__.py @@ -0,0 +1 @@ +default_app_config = 'sapl.sdr.apps.AppConfig' \ No newline at end of file diff --git a/sapl/videoconf/admin.py b/sapl/sdr/admin.py similarity index 100% rename from sapl/videoconf/admin.py rename to sapl/sdr/admin.py diff --git a/sapl/videoconf/apps.py b/sapl/sdr/apps.py similarity index 54% rename from sapl/videoconf/apps.py rename to sapl/sdr/apps.py index 018c57d86..3b1dde410 100644 --- a/sapl/videoconf/apps.py +++ b/sapl/sdr/apps.py @@ -3,6 +3,6 @@ from django.utils.translation import ugettext_lazy as _ class AppConfig(apps.AppConfig): - name = 'sapl.videoconf' - label = 'videoconf' - verbose_name = _('Video-conferência') \ No newline at end of file + name = 'sapl.sdr' + label = 'sdr' + verbose_name = _('Sistema de Deliberação Remota') \ No newline at end of file diff --git a/sapl/videoconf/forms.py b/sapl/sdr/forms.py similarity index 73% rename from sapl/videoconf/forms.py rename to sapl/sdr/forms.py index b9611cb22..b5dd472c6 100644 --- a/sapl/videoconf/forms.py +++ b/sapl/sdr/forms.py @@ -1,20 +1,39 @@ import logging +from django import forms from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ -from sapl.videoconf.models import Videoconferencia +from sapl.sdr.models import DeliberacaoRemota -class VideoconferenciaForm(ModelForm): - +class DeliberacaoRemotaCreateForm(ModelForm): logger = logging.getLogger(__name__) class Meta: - model = Videoconferencia - fields = ['chat_id', 'descricao'] + model = DeliberacaoRemota + exclude = [] + + widgets = { + 'created_by': forms.HiddenInput(), + 'descricao': forms.Textarea(attrs={'id': 'texto-rico'}) + } + + def clean(self): + cleaned_data = super().clean() + import ipdb; ipdb.set_trace() + if not self.is_valid(): + return self.cleaned_data + return cleaned_data +# class DeliberacaoRemotaForm(ModelForm): +# +# logger = logging.getLogger(__name__) +# +# class Meta: +# model = DeliberacaoRemota +# fields = ['chat_id', 'descricao'] # class AutoriaNormaForm(ModelForm): # # tipo_autor = ModelChoiceField(label=_('Tipo Autor'), diff --git a/sapl/videoconf/migrations/0001_initial.py b/sapl/sdr/migrations/0001_initial.py similarity index 90% rename from sapl/videoconf/migrations/0001_initial.py rename to sapl/sdr/migrations/0001_initial.py index fa5a655d4..9a1f20387 100644 --- a/sapl/videoconf/migrations/0001_initial.py +++ b/sapl/sdr/migrations/0001_initial.py @@ -5,7 +5,7 @@ from __future__ import unicode_literals from django.conf import settings from django.db import migrations, models import django.db.models.deletion -import sapl.videoconf.models +import sapl.sdr.models class Migration(migrations.Migration): @@ -21,7 +21,7 @@ class Migration(migrations.Migration): name='Videoconferencia', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('chat_id', models.CharField(default=sapl.videoconf.models.gen_session_id, max_length=100, verbose_name='Chat ID')), + ('chat_id', models.CharField(default=sapl.sdr.models.gen_session_id, max_length=100, verbose_name='Chat ID')), ('titulo', models.CharField(max_length=100, verbose_name='Título')), ('descricao', models.CharField(blank=True, max_length=256, verbose_name='Descrição')), ('inicio', models.DateTimeField(auto_now=True, verbose_name='Data e Hora de Início')), diff --git a/sapl/sdr/migrations/0002_videoconferencia_sessao_plenaria.py b/sapl/sdr/migrations/0002_videoconferencia_sessao_plenaria.py new file mode 100644 index 000000000..c37407109 --- /dev/null +++ b/sapl/sdr/migrations/0002_videoconferencia_sessao_plenaria.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-03-31 21:50 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0050_auto_20191029_1441'), + ('sdr', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='videoconferencia', + name='sessao_plenaria', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.SessaoPlenaria', verbose_name='Sessão Plenária'), + ), + ] diff --git a/sapl/sdr/migrations/0003_auto_20200331_1926.py b/sapl/sdr/migrations/0003_auto_20200331_1926.py new file mode 100644 index 000000000..2c45a126b --- /dev/null +++ b/sapl/sdr/migrations/0003_auto_20200331_1926.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-03-31 22:26 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sdr', '0002_videoconferencia_sessao_plenaria'), + ] + + operations = [ + migrations.RenameModel( + old_name='Videoconferencia', + new_name='SistemaDeliberacaoRemota', + ), + ] diff --git a/sapl/sdr/migrations/0004_auto_20200331_1933.py b/sapl/sdr/migrations/0004_auto_20200331_1933.py new file mode 100644 index 000000000..0a52be7db --- /dev/null +++ b/sapl/sdr/migrations/0004_auto_20200331_1933.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-03-31 22:33 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sdr', '0003_auto_20200331_1926'), + ] + + operations = [ + migrations.RenameModel( + old_name='SistemaDeliberacaoRemota', + new_name='DeliberacaoRemota', + ), + migrations.AlterModelOptions( + name='deliberacaoremota', + options={'ordering': ['chat_id', 'descricao'], 'verbose_name': 'Deliberação Remota', 'verbose_name_plural': 'Deliberações Remotas'}, + ), + ] diff --git a/sapl/videoconf/migrations/__init__.py b/sapl/sdr/migrations/__init__.py similarity index 100% rename from sapl/videoconf/migrations/__init__.py rename to sapl/sdr/migrations/__init__.py diff --git a/sapl/videoconf/models.py b/sapl/sdr/models.py similarity index 70% rename from sapl/videoconf/models.py rename to sapl/sdr/models.py index eeef2ba73..70b13a927 100644 --- a/sapl/videoconf/models.py +++ b/sapl/sdr/models.py @@ -3,6 +3,7 @@ from django.utils import timezone from django.db import models from django.utils.translation import ugettext_lazy as _ +from sapl.sessao.models import SessaoPlenaria from sapl.utils import get_settings_auth_user_model @@ -12,7 +13,7 @@ def gen_session_id(): return ''.join([str(choice(range(10))) for _ in range(25)]) -class Videoconferencia(models.Model): +class DeliberacaoRemota(models.Model): chat_id = models.CharField(max_length=100, default=gen_session_id, @@ -20,7 +21,12 @@ class Videoconferencia(models.Model): titulo = models.CharField(max_length=100, verbose_name=_('Título')) descricao = models.CharField(max_length=256, blank=True, verbose_name=_('Descrição')) - inicio = models.DateTimeField(auto_now=timezone.now, verbose_name=_('Data e Hora de Início')) + inicio = models.DateTimeField(auto_now=timezone.now, + verbose_name=_('Data e Hora de Início')) + #TODO: obrigatorio? + sessao_plenaria = models.ForeignKey(SessaoPlenaria, + null=True, blank=True, + verbose_name=_('Sessão Plenária')) #TODO: preencher quando usuário selecionar a opção 'finalizada' termino = models.DateTimeField(blank=True, null=True, @@ -33,8 +39,8 @@ class Videoconferencia(models.Model): verbose_name=_('Criado por')) class Meta: - verbose_name = _('Videoconferência') - verbose_name_plural = _('Videoconferências') + verbose_name = _('Deliberação Remota') + verbose_name_plural = _('Deliberações Remotas') ordering = ['chat_id', 'descricao'] def __str__(self): diff --git a/sapl/videoconf/tests.py b/sapl/sdr/tests.py similarity index 100% rename from sapl/videoconf/tests.py rename to sapl/sdr/tests.py diff --git a/sapl/sdr/urls.py b/sapl/sdr/urls.py new file mode 100644 index 000000000..0cc0caf5f --- /dev/null +++ b/sapl/sdr/urls.py @@ -0,0 +1,13 @@ + +from .apps import AppConfig +from .views import ChatView, DeliberacaoRemotaCrud +from django.conf.urls import include, url + +app_name = AppConfig.name + +urlpatterns = [ + url(r'^sdr/chat/(?P[0-9]+)$', + ChatView.as_view(), name='chat-session'), + url(r'^sdr/', + include(DeliberacaoRemotaCrud.get_urls()), name='deliberacaoremota'), +] diff --git a/sapl/videoconf/views.py b/sapl/sdr/views.py similarity index 53% rename from sapl/videoconf/views.py rename to sapl/sdr/views.py index 624b49e70..9ea8c78dc 100644 --- a/sapl/videoconf/views.py +++ b/sapl/sdr/views.py @@ -7,22 +7,49 @@ from django.core.urlresolvers import reverse, reverse_lazy from django.views.generic import TemplateView from sapl.base.models import Autor -from sapl.crud.base import CrudAux +from sapl.crud.base import Crud from sapl.parlamentares.models import Parlamentar -from sapl.videoconf.models import Videoconferencia +from sapl.rules import RP_LIST, RP_DETAIL +from sapl.sdr.forms import DeliberacaoRemotaCreateForm +from sapl.sdr.models import DeliberacaoRemota, gen_session_id +from sapl.sessao.models import SessaoPlenaria -VideoConferenciaCrud = CrudAux.build(Videoconferencia, 'videoconferencia') + +class DeliberacaoRemotaCrud(Crud): + model = DeliberacaoRemota + public = [RP_LIST, RP_DETAIL] + + class BaseMixin(Crud.BaseMixin): + ordered_list = False + list_field_names = [ + 'titulo', + 'chat_id', + 'finalizada', + 'sessao_plenaria'] + + # class CreateView(Crud.CreateView): + # form_class = DeliberacaoRemotaCreateForm + # + # layout_key = 'DeliberacaoRemotaCreate' + # + # def get_initial(self): + # import ipdb; ipdb.set_trace() + # initial = super().get_initial() + # initial['created_by'] = self.request.user + # return initial + # + # def get_context_data(self): class ChatView(PermissionRequiredMixin, TemplateView): - template_name = "videoconf/videoconferencia.html" + template_name = "sdr/deliberacaoremota.html" permission_required = ('sessao.add_sessao', ) logger = logging.getLogger(__name__) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) try: - context['object'] = Videoconferencia.objects.get(id=kwargs['pk']) + context['object'] = DeliberacaoRemota.objects.get(id=kwargs['pk']) except ObjectDoesNotExist: pass #TODO: return error @@ -30,29 +57,35 @@ class ChatView(PermissionRequiredMixin, TemplateView): content_type = ContentType.objects.get_for_model(Parlamentar) try: autor = user.autor - nome = autor.nome + nome_usuario = autor.nome parlamentar = None if not autor.object_id or autor.content_type != content_type: is_parlamentar = False else: try: parlamentar = Parlamentar.objects.get(id=autor.object_id) - nome = parlamentar.nome_parlamentar + nome_usuario = parlamentar.nome_parlamentar is_parlamentar = True except ObjectDoesNotExist: is_parlamentar = False user_data = { - 'nome': nome, + 'nome_usuario': nome_usuario, 'is_autor': True, 'is_parlamentar': is_parlamentar, 'parlamentar': parlamentar } except: user_data = { - 'nome': user.username, + 'nome_usuario': user.username, 'is_autor': False, 'is_parlamentar': False } + context.update(user_data) + + # TODO: recuperar sessao_plenaria da vinculacao + sessao_plenaria = SessaoPlenaria.objects.last() + context.update({'sessao_plenaria': sessao_plenaria}) + return context diff --git a/sapl/settings.py b/sapl/settings.py index 49c22ae33..7e32ce1b6 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -66,7 +66,7 @@ SAPL_APPS = ( 'sapl.redireciona_urls', 'sapl.compilacao', 'sapl.api', - 'sapl.videoconf', + 'sapl.sdr', 'sapl.rules' diff --git a/sapl/templates/sdr/deliberacaoremota.html b/sapl/templates/sdr/deliberacaoremota.html new file mode 100644 index 000000000..44d85db26 --- /dev/null +++ b/sapl/templates/sdr/deliberacaoremota.html @@ -0,0 +1,80 @@ +{% extends "crud/detail.html" %} +{% load i18n common_tags %} +{% load render_bundle from webpack_loader %} + +{% block title%} + +{% endblock %} + +{% block base_content %}{{block.super}} +
+

Título: {{ object.titulo }}

+

Descrição: {{ object.descricao }}

+
ID: {{ object.chat_id }}

+ {% if is_parlamentar %} +

Parlamentar: {{ parlamentar.nome_parlamentar }}

+ {% else %} +

Nome: {{ nome_usuario }}

+ {% endif %} + +
+
+
+
+

Dados Básicos

+ Sessão: {{ sessao_plenaria }}
+ Data Início: {{ sessao_plenaria.data_inicio }}
+ Hora Início: {{ sessao_plenaria.hora_inicio }}
+ Iniciada: {{ sessao_plenaria.iniciada|yesno:"Sim,Não" }}
+
+
+ +
+
+

Presença Sessão Plenária

+
    + {% for p in sessao_plenaria.sessaoplenariapresenca_set.all %} +
  • {{p.parlamentar}}
  • + {% endfor %} +
+
+
+

Presentes Ordem do Dia:

+
    + {% for p in sessao_plenaria.presencaordemdia_set.all %} +
  • {{p.parlamentar}}
  • + {% endfor %} +
+
+
+
+{% endblock base_content %} + +{% block extra_js %} +{{block.super}} + + +{% endblock extra_js %} \ No newline at end of file diff --git a/sapl/templates/videoconf/videoconferencia_detail.html b/sapl/templates/sdr/deliberacaoremota_detail.html similarity index 52% rename from sapl/templates/videoconf/videoconferencia_detail.html rename to sapl/templates/sdr/deliberacaoremota_detail.html index dfc7bc369..4ba7caf37 100644 --- a/sapl/templates/videoconf/videoconferencia_detail.html +++ b/sapl/templates/sdr/deliberacaoremota_detail.html @@ -2,8 +2,7 @@ {% load i18n common_tags %} {% load render_bundle from webpack_loader %} - {% block detail_content %} {{block.super}} - Link da sessão de vídeo + Link da sessão de vídeo {% endblock detail_content %} \ No newline at end of file diff --git a/sapl/templates/sdr/layouts.yaml b/sapl/templates/sdr/layouts.yaml new file mode 100644 index 000000000..7536fb709 --- /dev/null +++ b/sapl/templates/sdr/layouts.yaml @@ -0,0 +1,12 @@ +{% load i18n %} + +DeliberacaoRemota: + {% trans 'Deliberação Remota' %}: + - titulo finalizada + - descricao + +DeliberacaoRemotaCreate: + {% trans 'Deliberação Remota' %}: + - created_by + - titulo finalizada + - descricao \ No newline at end of file diff --git a/sapl/templates/videoconf/layouts.yaml b/sapl/templates/videoconf/layouts.yaml deleted file mode 100644 index 3de12b5ad..000000000 --- a/sapl/templates/videoconf/layouts.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{% load i18n %} - -Videoconferencia: - {% trans 'Videoconferência' %}: - - titulo finalizada - - descricao \ No newline at end of file diff --git a/sapl/templates/videoconf/videoconferencia.html b/sapl/templates/videoconf/videoconferencia.html deleted file mode 100644 index 49022e6da..000000000 --- a/sapl/templates/videoconf/videoconferencia.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - Videoconferência - - -
-

Título: {{ object.titulo }}

-

Descrição: {{ object.descricao }}

- ID: {{ object.chat_id }}
-
-
- - \ No newline at end of file diff --git a/sapl/urls.py b/sapl/urls.py index 936181117..4045c9e69 100644 --- a/sapl/urls.py +++ b/sapl/urls.py @@ -34,7 +34,7 @@ import sapl.protocoloadm.urls import sapl.redireciona_urls.urls import sapl.relatorios.urls import sapl.sessao.urls -import sapl.videoconf.urls +import sapl.sdr.urls urlpatterns = [ url(r'^$', TemplateView.as_view(template_name='index.html'), @@ -65,7 +65,7 @@ urlpatterns = [ url(r'', include(sapl.redireciona_urls.urls)), - url(r'', include(sapl.videoconf.urls)), + url(r'', include(sapl.sdr.urls)), ] diff --git a/sapl/videoconf/__init__.py b/sapl/videoconf/__init__.py deleted file mode 100644 index 5d1b2901c..000000000 --- a/sapl/videoconf/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = 'sapl.videoconf.apps.AppConfig' \ No newline at end of file diff --git a/sapl/videoconf/urls.py b/sapl/videoconf/urls.py deleted file mode 100644 index bd2adb880..000000000 --- a/sapl/videoconf/urls.py +++ /dev/null @@ -1,13 +0,0 @@ - -from .apps import AppConfig -from .views import ChatView, VideoConferenciaCrud -from django.conf.urls import include, url - -app_name = AppConfig.name - -urlpatterns = [ - url(r'^videoconferencia/chat/(?P[0-9]+)$', - ChatView.as_view(), name='chat-session'), - url(r'^videoconferencia/', - include(VideoConferenciaCrud.get_urls()), name='videoconferencia'), -]