Browse Source

Dados da sessão obtidos pelo WebSocket

Websocket_painel
AlGouvea 3 years ago
parent
commit
e85f232334
  1. 10
      frontend/src/__apps/painel/main.js
  2. 25
      sapl/painel/consumers.py
  3. 3
      sapl/painel/urls.py
  4. 26
      sapl/painel/views.py

10
frontend/src/__apps/painel/main.js

@ -249,15 +249,15 @@ const v = new Vue({ // eslint-disable-line
this.clockRunning(crono) this.clockRunning(crono)
}, 100) }, 100)
}, },
foi: function foi () { call_data: function call_data () {
socket.send('Teste de entrada') socket.send('Calling Data...')
}, },
pollData () { pollData () {
this.fetchData() this.fetchData()
this.polling = setInterval(() => { this.polling = setInterval(() => {
// console.info('Fetching data from backend') // console.info('Fetching data from backend')
this.foi() this.call_data()
}, 30000) }, 300)
} }
}, },
beforeDestroy () { beforeDestroy () {
@ -271,7 +271,7 @@ const v = new Vue({ // eslint-disable-line
socket.onmessage = function (e) { socket.onmessage = function (e) {
this.teste = JSON.parse(e.data) this.teste = JSON.parse(e.data)
console.log(this.teste.sessao_plenaria) console.log('Data Received...')
} }
socket.onclose = function (e) { socket.onclose = function (e) {

25
sapl/painel/consumers.py

@ -2,10 +2,7 @@ import json
import requests import requests
from asgiref.sync import async_to_sync from asgiref.sync import async_to_sync
from channels.generic.websocket import AsyncJsonWebsocketConsumer from channels.generic.websocket import AsyncJsonWebsocketConsumer
from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia, from sapl.painel import views
PresencaOrdemDia, RegistroVotacao,
SessaoPlenaria, SessaoPlenariaPresenca,
VotoParlamentar, RegistroLeitura)
class PainelConsumer(AsyncJsonWebsocketConsumer): class PainelConsumer(AsyncJsonWebsocketConsumer):
@ -14,29 +11,15 @@ class PainelConsumer(AsyncJsonWebsocketConsumer):
await self.accept() await self.accept()
async def disconnect(self, close_code): async def disconnect(self, close_code):
print('Disconectado:', close_code) print('Desconectado:', close_code)
pass pass
async def join_group(self):
print('Group')
await self.channel_layer.group_add('painel', self.channel_name)
async def receive(self, text_data): async def receive(self, text_data):
print('Received Message:' + text_data)
await self.send_data(786) await self.send_data(786)
async def send_data(self, id): async def send_data(self, id):
sessao = SessaoPlenaria.objects.get(id=id) response = views.get_dados_painel(id)
response = {
'sessao_plenaria': str(sessao),
'sessao_plenaria_data': sessao.data_inicio.strftime('%d/%m/%Y'),
'sessao_plenaria_hora_inicio': sessao.hora_inicio,
'sessao_solene': sessao.tipo.nome == "Solene",
'sessao_finalizada': sessao.finalizada,
'tema_solene': sessao.tema_solene,
'status_painel': sessao.painel_aberto,
}
await self.send_json(response) await self.send_json(response)

3
sapl/painel/urls.py

@ -5,7 +5,7 @@ from django.urls import path
from .apps import AppConfig from .apps import AppConfig
from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view, from .views import (cronometro_painel, get_dados_painel, painel_mensagem_view,
painel_parlamentar_view, painel_view, painel_votacao_view, painel_parlamentar_view, painel_view, painel_votacao_view,
switch_painel, verifica_painel, votante_view, room) switch_painel, verifica_painel, votante_view)
app_name = AppConfig.name app_name = AppConfig.name
@ -26,5 +26,4 @@ urlpatterns = [
url(r'^voto-individual/$', votante_view, url(r'^voto-individual/$', votante_view,
name='voto_individual'), name='voto_individual'),
path(r'chat/', room, name='room'),
] ]

26
sapl/painel/views.py

@ -348,7 +348,7 @@ def cronometro_painel(request):
return HttpResponse({}) return HttpResponse({})
def get_cronometro_status(request, name): def get_cronometro_status(name):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
username = request.user.username username = request.user.username
try: try:
@ -361,7 +361,7 @@ def get_cronometro_status(request, name):
return cronometro return cronometro
def get_cronometro_value(request, name): def get_cronometro_value(name):
if name == 'discurso': if name == 'discurso':
result = ConfiguracoesAplicacao.objects.first().cronometro_discurso result = ConfiguracoesAplicacao.objects.first().cronometro_discurso
if name == 'aparte': if name == 'aparte':
@ -562,8 +562,8 @@ def get_votos(response, materia):
return response return response
@user_passes_test(check_permission) #@user_passes_test(check_permission)
def get_dados_painel(request, pk): def get_dados_painel(pk):
sessao = SessaoPlenaria.objects.get(id=pk) sessao = SessaoPlenaria.objects.get(id=pk)
casa = CasaLegislativa.objects.first() casa = CasaLegislativa.objects.first()
@ -582,15 +582,15 @@ def get_dados_painel(request, pk):
'sessao_solene': sessao.tipo.nome == "Solene", 'sessao_solene': sessao.tipo.nome == "Solene",
'sessao_finalizada': sessao.finalizada, 'sessao_finalizada': sessao.finalizada,
'tema_solene': sessao.tema_solene, 'tema_solene': sessao.tema_solene,
'status_cronometro_discurso': get_cronometro_status(request, 'discurso'), #'status_cronometro_discurso': get_cronometro_status(request, 'discurso'),
'cronometro_aparte': get_cronometro_value(request, 'aparte'), 'cronometro_aparte': get_cronometro_value('aparte'),
'cronometro_discurso': get_cronometro_value(request, 'discurso'), 'cronometro_discurso': get_cronometro_value('discurso'),
'cronometro_ordem': get_cronometro_value(request, 'ordem'), 'cronometro_ordem': get_cronometro_value('ordem'),
'cronometro_consideracoes': get_cronometro_value(request, 'consideracoes'), 'cronometro_consideracoes': get_cronometro_value('consideracoes'),
'status_painel': sessao.painel_aberto, 'status_painel': sessao.painel_aberto,
'brasao': brasao 'brasao': brasao
} }
return response
ordem_dia = get_materia_aberta(pk) ordem_dia = get_materia_aberta(pk)
expediente = get_materia_expediente_aberta(pk) expediente = get_materia_expediente_aberta(pk)
@ -643,9 +643,3 @@ def get_dados_painel(request, pk):
# Retorna que não há nenhuma matéria já votada ou aberta # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(get_presentes(pk, response, None)) return response_nenhuma_materia(get_presentes(pk, response, None))
def room(request):
return render(request, 'painel/room.html', {
'room_name': 'chat'
})
Loading…
Cancel
Save