Skip to content

Commit

Permalink
feat: add evento
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulloClara committed Jan 7, 2020
1 parent 97d82e8 commit 8f71e77
Show file tree
Hide file tree
Showing 15 changed files with 357 additions and 42 deletions.
6 changes: 6 additions & 0 deletions src/controller/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from src.controller.aluno import Aluno
from src.controller.grupo import Grupo
from src.controller.sobre import Sobre
from src.controller.evento import Evento
from src.controller.tarefa import Tarefa
from src.controller.atividade import Atividade
from src.controller.apresentacao import Apresentacao
Expand All @@ -26,6 +27,7 @@ def __init__(self) -> None:
self.aluno = Aluno()
self.grupo = Grupo()
self.sobre = Sobre()
self.evento = Evento()
self.tarefa = Tarefa()
self.atividade = Atividade()
self.apresentacao = Apresentacao()
Expand All @@ -41,6 +43,7 @@ def iniciar(self, view, model) -> None:
self.aluno.iniciar(controller=self)
self.grupo.iniciar(controller=self)
self.sobre.iniciar(controller=self)
self.evento.iniciar(controller=self)
self.tarefa.iniciar(controller=self)
self.atividade.iniciar(controller=self)
self.apresentacao.iniciar(controller=self)
Expand All @@ -57,6 +60,9 @@ def fechar(self):
if self.view.home.cadastro_apresentacao.ativa:
self.view.home.cadastro_apresentacao.fechar()

if self.view.home.cadastro_evento.ativa:
self.view.home.cadastro_evento.fechar()

if self.view.home.cadastro_tarefa.ativa:
self.view.home.cadastro_tarefa.fechar()

Expand Down
24 changes: 24 additions & 0 deletions src/controller/evento/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
"""Controller da Home e da Evento."""

from src.controller.evento.listagem import Listagem
from src.controller.evento.cadastro import Cadastro


class Evento(Listagem, Cadastro):
"""Classe responsavel por gerenciar Home de View e Evento de Model."""

def __init__(self) -> None:
"""Construtor padrao, define os atributos view e model."""
Listagem.__init__(self)
Cadastro.__init__(self)

def iniciar(self, controller: object):
self.view = controller.view
self.model = controller.model

Listagem.configurar(self)

def cadastrar(self, evt) -> None:
"""Evento click do botao cadastrar na actions."""
self.view.home.cadastro_evento.iniciar()
Cadastro.configurar(self)
35 changes: 35 additions & 0 deletions src/controller/evento/cadastro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class Cadastro(object):

def __init__(self):
pass

def confirmar(self, evt=None) -> None:
"""Evento click do botao confirmar no formulario de cadastro."""
formulario = self.view.home.cadastro_evento.obter_campos()

erro = self.model.evento.validar(formulario)
if erro:
return self.view.janela_erro.iniciar(erro)

evento = self.model.evento.cadastrar(formulario)

elemento = self.view.home.listagem.adicionar(evento=evento)
self.configurar_(elemento)

self.view.home.cadastro_evento.fechar()

def cancelar(self, evt=None) -> None:
"""Evento click do botao cancelar no formulario de cadastro."""
self.view.home.cadastro_evento.fechar()

def configurar(self) -> None:
cadastro = self.view.home.cadastro_evento.subelemento

cadastro.data.input.evento['<Return>'] = self.confirmar
cadastro.titulo.input.evento['<Return>'] = self.confirmar
cadastro.duracao.input.evento['<Return>'] = self.confirmar

cadastro.cancelar.defs.mcnf['command'] = self.cancelar
cadastro.confirmar.defs.mcnf['command'] = self.confirmar

self.view.home.cadastro_evento.carregar_eventos()
39 changes: 39 additions & 0 deletions src/controller/evento/listagem.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
class Listagem(object):

def __init__(self):
pass

def remover(self, evt, id_apresentacao: str) -> None:
"""Evento click do botao remover na lista de eventos."""
self.model.evento.remover(id_apresentacao)
self.view.home.listagem.remover(id_apresentacao, filtro='titulo')

def expandir_recolher(self, evt, elemento):
if elemento.subelemento.secundario.defs.visivel:
elemento.subelemento.secundario.ocultar()
else:
elemento.subelemento.secundario.mostrar()

def configurar_(self, elemento):
primario = elemento.subelemento.primario
secundario = elemento.subelemento.secundario

primario.subelemento.label.evento['<Button-1>'] =\
lambda evt: self.expandir_recolher(evt, elemento)

primario.subelemento.remover.evento['<Button-1>'] =\
lambda evt: self.remover(evt, elemento.dados['_id'])

secundario.subelemento.cadastro.evento['<Button-1>'] =\
lambda evt: self.expandir_recolher(evt, elemento)

secundario.subelemento.apresentacao.evento['<Button-1>'] =\
lambda evt: self.expandir_recolher(evt, elemento)

elemento.carregar_eventos()

def configurar(self) -> None:
"""Carrega as eventos na lista de eventos da Home na View."""
for evento in self.model.evento.eventos:
elemento = self.view.home.listagem.adicionar(evento=evento)
self.configurar_(elemento)
15 changes: 12 additions & 3 deletions src/controller/home.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def iniciar(self, controller: object) -> None:
self.view = controller.view
self.model = controller.model

self.cadastrar_evento = controller.evento.cadastrar
self.cadastrar_tarefa = controller.tarefa.cadastrar
self.cadastrar_apresentacao = controller.apresentacao.cadastrar

Expand All @@ -26,25 +27,33 @@ def configurar(self) -> None:
filtro = self.view.home.filtro.subelemento
actions = self.view.home.actions.subelemento

filtro.evento.evento['<Button-1>'] =\
lambda evt: self.filtrar(evt, 'evento')
filtro.tarefa.evento['<Button-1>'] =\
lambda evt: self.filtrar(evt, 'tarefa')
filtro.apresentacao.evento['<Button-1>'] =\
lambda evt: self.filtrar(evt, 'apresentacao')

filtro.tarefa.desativar()

actions.evento.evento['<Button-1>'] = self.cadastrar_evento
actions.tarefa.evento['<Button-1>'] = self.cadastrar_tarefa
actions.cadastrar.evento['<Button-1>'] = self.cadastrar_apresentacao
actions.apresentacao.evento['<Button-1>'] = self.cadastrar_apresentacao

self.view.home.filtro.carregar_eventos()
self.view.home.actions.carregar_eventos()

self.view.home.cadastro_apresentacao.defs.mcnf['<Start>'] =\
actions.cadastrar.desativar
actions.apresentacao.desativar
self.view.home.cadastro_apresentacao.defs.mcnf['<Destroy>'] =\
actions.cadastrar.ativar
actions.apresentacao.ativar

self.view.home.cadastro_tarefa.defs.mcnf['<Start>'] =\
actions.tarefa.desativar
self.view.home.cadastro_tarefa.defs.mcnf['<Destroy>'] =\
actions.tarefa.ativar

self.view.home.cadastro_evento.defs.mcnf['<Start>'] =\
actions.evento.desativar
self.view.home.cadastro_evento.defs.mcnf['<Destroy>'] =\
actions.evento.ativar
3 changes: 3 additions & 0 deletions src/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from src.model.sobre import Sobre
from src.model.atividade import Atividade

from src.model.evento import Evento
from src.model.tarefa import Tarefa
from src.model.apresentacao import Apresentacao

Expand All @@ -20,6 +21,7 @@ def __init__(self):
self.sobre = Sobre()
self.atividade = Atividade()

self.evento = Evento()
self.tarefa = Tarefa()
self.apresentacao = Apresentacao()

Expand All @@ -29,5 +31,6 @@ def iniciar(self):
self.sobre.iniciar(model=self)
self.atividade.iniciar(model=self)

self.evento.iniciar(model=self)
self.tarefa.iniciar(model=self)
self.apresentacao.iniciar(model=self)
102 changes: 102 additions & 0 deletions src/model/evento.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
from src.utils import Utils
from src.model.modelo import Modelo


class Evento(Modelo):

def __init__(self):
super().__init__()

self.tabela = 'evento'
self.eventos = []

def iniciar(self, model):
super().iniciar(model)

self.carregar()
self.ordenar()

def obter(self, _id):
return super().obter(_id)

def carregar(self):
self.eventos = super().carregar()

def cadastrar(self, evento):
vals = []
vals.append(evento['titulo'])
vals.append(evento['duracao'])
vals.append(evento['data'])
vals.append(Utils.data_e_hora_atual())

super().cadastrar(vals)
self.carregar()

evento = self.eventos[-1]
self.ordenar()

return evento

def remover(self, _id):
super().remover(_id)

def ordenar(self):
dp = 'data'
self.eventos.sort(key=lambda a: a[dp].split('/')[::-1])

def validar(self, formulario):
data, duracao = formulario['data'], formulario['duracao']

if not self.model.atividade.atividades:
return 'Lista de Atividades vazia'

if not self.model.grupo.grupos:
return 'Lista de Grupos vazia'

if not data:
return 'O campo "Apresentação" não pode estar vazio!'
if not duracao:
return 'O campo "Duração" não pode estar vazio!'

if data[2] != '/' or data[5] != '/':
return 'Formato invalido! Entre com o formato dd/mm/aaaa'

dia, mes, ano = data.split('/')
data_atual = Utils.data_e_hora_atual().split(' ')[0].split('/')

try:
dia, mes, ano = int(dia), int(mes), int(ano)
except Exception as e:
return 'Os valores em dd, mm e aaaa precisam ser numeros!'

data_valida = False

if data_atual[::-1] > data.split('/')[::-1]:
return 'Data INVALIDA'

meses_com_ate_31_dias = [1, 3, 5, 7, 8, 10, 12]
if mes in meses_com_ate_31_dias:
if dia <= 31:
data_valida = True

meses_com_ate_30_dias = [4, 6, 9, 11]
if mes in meses_com_ate_30_dias:
if dia <= 30:
data_valida = True

if mes == 2:
if ano % 4 == 0 and ano % 100 != 0 or ano % 400 == 0:
# Ano Bisexto! Fevereiro com possíveis 29 dias
if dia <= 29:
data_valida = True

if dia <= 28:
data_valida = True

if not data_valida:
return 'Data INVALIDA!'

try:
duracao = int(duracao)
except Exception as e:
return 'O campo "Duração" só aceita valor inteiro!'
Binary file modified src/store/file/bd.sqlite
Binary file not shown.
2 changes: 1 addition & 1 deletion src/store/infos.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def colunas_apresentacao() -> list:
@staticmethod
def colunas_evento() -> list:
"""."""
return []
return '_id', 'titulo', 'duracao', 'data', 'cadastro'

@staticmethod
def colunas_sobre() -> list:
Expand Down
4 changes: 3 additions & 1 deletion src/view/home/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from src.view.home.filtro import Filtro
from src.view.home.actions import Actions
from src.view.home.listagem import ListaDeElementos
from src.view.home.cadastro import FormularioApresentacao, FormularioTarefa
from src.view.home.cadastro import (FormularioApresentacao, FormularioTarefa,
FormularioEvento)


class Home(TKUtils.obter_container()):
Expand All @@ -16,6 +17,7 @@ def __init__(self):
self.filtro = Filtro()
self.actions = Actions()
self.listagem = ListaDeElementos()
self.cadastro_evento = FormularioEvento()
self.cadastro_tarefa = FormularioTarefa()
self.cadastro_apresentacao = FormularioApresentacao()

Expand Down
30 changes: 21 additions & 9 deletions src/view/home/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,41 @@ def __init__(self):
self.defs.pack['expand'] = True
self.defs.pack['side'] = 'bottom'

self.subelemento.evento = TKUtils.obter_botao()
self.subelemento.tarefa = TKUtils.obter_botao()
self.subelemento.cadastrar = TKUtils.obter_botao()
self.subelemento.apresentacao = TKUtils.obter_botao()

def iniciar(self, master):
super().iniciar(master=master)

self.inicializar_botao_cadastro()
self.inicializar_botao_cadastro_evento()
self.inicializar_botao_cadastro_tarefa()
self.inicializar_botao_cadastro_apresentacao()

def inicializar_botao_cadastro(self):
self.subelemento.cadastrar.defs.cnf['text'] = 'Cadastrar Apresentação'
self.subelemento.cadastrar.defs.cnf['bg'] = 'green'
self.subelemento.cadastrar.defs.cnf['width'] = 30
def inicializar_botao_cadastro_apresentacao(self):
self.subelemento.apresentacao.defs.cnf['text'] =\
'Cadastrar Apresentação'
self.subelemento.apresentacao.defs.cnf['bg'] = 'green'
self.subelemento.apresentacao.defs.cnf['width'] = 26

self.subelemento.cadastrar.defs.pack['side'] = 'right'
self.subelemento.apresentacao.defs.pack['side'] = 'right'

self.subelemento.cadastrar.iniciar(master=self)
self.subelemento.apresentacao.iniciar(master=self)

def inicializar_botao_cadastro_tarefa(self):
self.subelemento.tarefa.defs.cnf['text'] = 'Cadastrar Tarefa'
self.subelemento.tarefa.defs.cnf['bg'] = 'blue'
self.subelemento.tarefa.defs.cnf['width'] = 30
self.subelemento.tarefa.defs.cnf['width'] = 20

self.subelemento.tarefa.defs.pack['side'] = 'left'

self.subelemento.tarefa.iniciar(master=self)

def inicializar_botao_cadastro_evento(self):
self.subelemento.evento.defs.cnf['text'] = 'Cadastrar Evento'
self.subelemento.evento.defs.cnf['bg'] = 'orange'
self.subelemento.evento.defs.cnf['width'] = 20

self.subelemento.evento.defs.pack['side'] = 'right'

self.subelemento.evento.iniciar(master=self)
Loading

0 comments on commit 8f71e77

Please sign in to comment.