def gera(ids_sessoes, bt_ver, bt_fechar):

    # Linha de cabeçalho:
    cabs_raw = [
        'Sessão', 'Usuário', 'Aberta?', 'Cookie', 'Carrinho', 'Data de Criação'
    ]
    cabs_div = [].copy()
    for cb in cabs_raw:
        cabs_div.append(
            html_div.gera(html_estilo_cabecalho_de_tabela.gera(), cb))

    linhas = [].copy()
    for id_ses in ids_sessoes:
        # busca por id da sessao no banco
        ses = sessao.busca_por_identificador(id_ses)

        # Gera uma lista de fragmentos HTML com as informacoes dessa compra
        res_campos = html_resumo_de_sessao.gera(ses, bt_ver, bt_fechar)

        # Adiciona essa lista à lista de linhas para a tabela HTML:
        linhas.append(res_campos)
    # Gera a tabela HTML a partir da lista de linhas
    ht_itens = html_table.gera(linhas, cabs_div)

    ht_cabe = html_cabecalho.gera("Minhas Sessões", False)
    ht_conteudo = \
        ht_cabe + "<br/>\n" + \
        ht_itens

    # Devolve a tabela HTML
    return ht_conteudo
def fecha_sessoes(id_usr):
    sessoes = list(
        map(lambda id_ses: sessao.busca_por_identificador(id_ses),
            sessao.busca_por_usuario(id_usr)))
    for sessao_usr in sessoes:
        if sessao.aberta(sessao_usr):
            sessao.fecha(sessao_usr)
def sessoes_abertas(usr):
    id_usr = usuario.obtem_identificador(usr)
    ids_sessoes_usr = sessao.busca_por_usuario(
        id_usr)  # IDs das sessões deste usuário.
    sessoes_usr = map(lambda id: sessao.busca_por_identificador(id),
                      ids_sessoes_usr)  # Pega objetos.
    # Filtra apenas as Sessoes que estao abertas
    abertas_usr = list(filter(lambda ses: sessao.aberta(ses), sessoes_usr))
    return abertas_usr
Beispiel #4
0
def processa(ses, args):
    usr_ses = None if ses == None else sessao.obtem_usuario(ses)
    assert sessao.eh_administrador(
        ses)  # O dono da sessão deve ser administrador.
    try:
        if not 'id' in args:
            pag = html_pag_mensagem_de_erro.gera(
                ses, 'É necessário adicionar um ID para pesquisar.')
            return pag

        id = args['id']
        if len(id) != 10:
            raise ErroAtrib("O identificador \"" + id + "\" é inválido")

        letra = id[0]
        if letra == "U":
            usr = usuario.busca_por_identificador(id)
            if usr == None:
                raise ErroAtrib("Não existe usuário com identificador " + id)
            usr_atrs = usuario.obtem_atributos(usr)
            usr_atrs['id_usuario'] = usuario.obtem_identificador(usr)
            pag = html_pag_usuario.gera(ses, usr, usr_atrs, None)
        elif letra == "C":
            cpr = compra.busca_por_identificador(id)
            if cpr == None:
                raise ErroAtrib(
                    "Não existe pedido de compra com identificador" + id)
            pag = html_pag_compra.gera(ses, cpr, None, None)
        elif letra == "T":
            trc = trecho.busca_por_identificador(id)
            if trc == None:
                raise ErroAtrib(
                    "Não existe trecho de viagem com identificador" + id)
            pag = html_pag_trecho.gera(ses, trc, None, None)
        elif letra == "S":
            ses_a_ver = sessao.busca_por_identificador(id)
            if ses_a_ver == None:
                raise ErroAtrib("Não existe sessão com identificador" + id)
            pag = html_pag_sessao.gera(ses, ses_a_ver, None)
        elif letra == "A":
            pol = poltrona.busca_por_identificador(id)
            if pol == None:
                raise ErroAtrib("Não existe poltrona com identificador" + id)
            pag = html_pag_poltrona.gera(ses, pol, None, None)
        else:
            raise ErroAtrib("Classe de objeto \"" + letra + "\" inválida")
    except ErroAtrib as ex:
        erros = ex.args[0]
        return html_pag_mensagem_de_erro.gera(ses, erros)
    return pag
Beispiel #5
0
 def obtem_sessao(self, dados):
     """Determina a sessão à qual o comando HTTP se refere, ou {None}
 se o usuário não está logado, a partir do dicionário de cookies
 contidos em {dados}."""
     if not 'cookies' in dados:
         # Não temos cookies?
         return None
     cookies = dados['cookies']
     if 'id_sessao' in cookies:
         id_sessao = cookies['id_sessao']
         ses = sessao.busca_por_identificador(id_sessao)
     else:
         ses = None
     return ses
Beispiel #6
0
def id_para_objeto(id):
    letra = id[0]
    if letra == "U":
        obj = usuario.busca_por_identificador(id)
    elif letra == "C":
        obj = compra.busca_por_identificador(id)
    elif letra == "S":
        obj = sessao.busca_por_identificador(id)
    elif letra == "A":
        obj = poltrona.busca_por_identificador(id)
    elif letra == "T":
        obj = trecho.busca_por_identificador(id)
    else:
        erro_prog("identificador '" + id + " inválido")
    return obj
def processa(ses, args):
    assert ses != None and sessao.aberta(ses)

    id_ses = args['id_sessao']
    ses_exit = sessao.busca_por_identificador(id_ses)

    # Se for fechar a sessao ativa, feito logout
    if ses == ses_exit:
        sessao.fecha(ses)
        ses_nova = None
        pag = html_pag_principal.gera(ses_nova, None)
    # caso nao seja a sessao ativa, somente fecha e retorna para pagina de sessoes
    else:
        sessao.fecha(ses)
        ses_nova = None
        pag = html_pag_principal.gera(ses_nova, None)

    return pag, ses_nova
def processa(ses, args):
    assert ses != None
    assert sessao.aberta(ses)
    usr_ses = sessao.obtem_usuario(ses)
    if 'id_sessao' in args:
        id_sessao = args['id_sessao']
        sesaux = sessao.busca_por_identificador(id_sessao)
        if sesaux == None or sessao.obtem_usuario(sesaux) != usr_ses:
            pag = html_erro.gera('id de sessão inválido')

        else:
            ht_conteudo = html_form_dados_de_sessao.gera(sesaux)
            args_bt = {'id_sessao': id_sessao}
            ht_conteudo += html_botao_simples.gera("Fechar sessão",
                                                   'fechar_sessao', args_bt,
                                                   '#FFA700')
            pag = html_pag_generica.gera(ses, ht_conteudo, None)

    else:
        pag = html_erro.gera('Chamada sem argumentos')

    return pag
Beispiel #9
0
base_sql.conecta("DB", None, None)

tabelas.inicializa_todas(True)
tabelas.cria_todos_os_testes(False)

usr1_id = "U-00000001"
usr1 = usuario.busca_por_identificador(usr1_id)

usr2_id = "U-00000002"
usr2 = usuario.busca_por_identificador(usr2_id)

cpr1_id = "C-00000001"
cpr1 = compra.busca_por_identificador(cpr1_id)

ses1_id = "S-00000001"
ses1 = sessao.busca_por_identificador(ses1_id)

ok_global = True  # Vira {False} se um teste falha.

# ----------------------------------------------------------------------
# TESTES DE CONVERSÃO DE VALORES


def verifica_valor(rotulo, val_mem, tipo_mem, val_SQL, tipo_SQL, nulo_ok):
    """Testa {valor_mem_para_valor_SQL} e {valor_SQL_para_valor_mem}."""
    global ok_global
    ok = True  # Estado deste teste.

    # Mostra parâmetros:
    sys.stderr.write("%s\n" % ("-" * 70))
    sys.stderr.write(rotulo + "\n")
Beispiel #10
0
sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res == None

sys.stderr.write("Criando objetos...\n")
tabelas.cria_todos_os_testes(False)


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""
    modulo = comando_fechar_sessao
    funcao = modulo.processa
    frag = False
    pretty = False
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


id_ses1 = "S-00000001"  # Sessao do usuário fechador.
ses1 = sessao.busca_por_identificador(id_ses1)
assert ses1 != None
assert sessao.aberta(ses1)

for rotulo, ses, args in [ \
    # ('inexistente',          ses1,    {'id_sessao' : ''}) Não está implementado um tratamento para sessão inexistente

    ('existente',  ses1,    {'id_sessao' : 'S-00000002'}),
    ('proprio',    ses1,    {'id_sessao' : 'S-00000001'}),
    ('fechada',    ses1,    {'id_sessao' : 'S-00000003'})
                          ]:
    testa(rotulo, ses, args)

def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
  em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = html_pag_trecho
    funcao = modulo.gera
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = False  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


# ----------------------------------------------------------------------
# Sessao de teste de usuário comum:
ses_com = sessao.busca_por_identificador("S-00000001")
assert ses_com != None
assert not sessao.eh_administrador(ses_com)

# Usuario comum de teste:
usr_com = sessao.obtem_usuario(ses_com)
assert usr_com != None
usr_com_id = usuario.obtem_identificador(usr_com)
usr_com_atrs = usuario.obtem_atributos(usr_com)

# Sessao de teste de administrador:
ses_adm = sessao.busca_por_identificador("S-00000004")
assert ses_adm != None
assert sessao.eh_administrador(ses_adm)

# Usuario administrador de teste:
import sessao
import base_sql
import utils_testes

import sys

# Conecta ao banco de dados
sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res is None

sys.stderr.write("Criando alguns objetos...\n")
tabelas.cria_todos_os_testes(False)

# Sessao para teste
ses = sessao.busca_por_identificador("S-00000004")


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
  em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_acrescentar_trecho
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = False  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


def testa_acrescenta_trecho_com_sucesso(id_trecho_ult, id_trecho_prox):
    """Testa a criação de um novo trecho com sucesso, dados
import base_sql
import tabelas
import usuario
import sessao
import compra
import utils_testes

sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res == None

sys.stderr.write("Criando objetos...\n")
tabelas.cria_todos_os_testes(False)

# Dados de teste
ses3 = sessao.busca_por_identificador("S-00000003")
usr1_id = 'U-00000001'


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_ver_minhas_sessoes
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


testa("s3", ses3, {'id': usr1_id})
Beispiel #14
0
tabelas.cria_todos_os_testes(False)


def testa(rotulo, *args):
    """Testa {comando_solicitar_pag_alterar_usuario.processa(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_solicitar_pag_alterar_usuario
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


# Sessão de cliente comum:
ses1 = sessao.busca_por_identificador("S-00000001")
assert ses1 != None
usr_ses1 = sessao.obtem_usuario(ses1)
assert not usuario.obtem_atributo(usr_ses1, 'administrador')

# Sessão de administrador:
ses4 = sessao.busca_por_identificador("S-00000004")
assert ses4 != None
usr_ses4 = sessao.obtem_usuario(ses4)
assert usuario.obtem_atributo(usr_ses4, 'administrador')

# Usuário comum alterando seus dados:
usr1 = usr_ses1
id_usr1 = usuario.obtem_identificador(usr1)
args_usr1 = {'id_usuario': id_usr1}
import base_sql
import utils_testes

import sys

# Conecta no banco e alimenta com as informações para o teste

sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res is None

sys.stderr.write("Criando alguns objetos...\n")
tabelas.cria_todos_os_testes(False)

# Sessões de teste
ses_nao_admin = sessao.busca_por_identificador("S-00000001")

admin = usuario.busca_por_identificador("U-00000003")
ses_admin = sessao.cria(admin, "NOPQRSTUVWX", None)


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_solicitar_pag_buscar_usuarios
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)
Beispiel #16
0
tabelas.cria_todos_os_testes(False)


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
  em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_excluir_poltrona
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = False  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


# Sessao de usuário comum e poltrona desse usuário:
ses_com1 = sessao.busca_por_identificador("S-00000003")
usr_com1 = sessao.obtem_usuario(ses_com1)
assert not usuario.obtem_atributo(usr_com1, 'administrador')

id_cpr_com1 = "C-00000003"
cpr_com1 = compra.busca_por_identificador(id_cpr_com1)
assert compra.obtem_cliente(cpr_com1) == usr_com1
id_pol_com1 = "A-00000008"
pol_com1 = poltrona.busca_por_identificador(id_pol_com1)
assert poltrona.obtem_atributo(pol_com1, "id_compra") == id_cpr_com1

testa("com1-com1", ses_com1, {'id_poltrona': id_pol_com1})

# Sessao de administrador e poltrona de outro usuário:
ses_adm3 = sessao.busca_por_identificador("S-00000004")
usr_adm3 = sessao.obtem_usuario(ses_adm3)
sys.stderr.write("Criando objetos...\n")
tabelas.cria_todos_os_testes(False)


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_comprar_roteiro
    funcao = modulo.processa
    frag = False
    pretty = True
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)


ses1 = sessao.busca_por_identificador("S-00000001")
assert ses1 != None

roteiro = ["T-00000003", "T-00000004"]
roteiro_txt = ",".join(roteiro)
args = {'ids_trechos': roteiro_txt}
testa("comprar_roteiro_usr_logado", ses1, args)

ses2 = sessao.busca_por_identificador("S-00000002")
assert ses2 != None

testa("comprar_roteiro_lotado", ses2, args)

ses3 = None
testa("comprar_roteiro_deslogado", ses3, args)
Beispiel #18
0
import sessao
import base_sql
import utils_testes

import sys

sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB",None,None)
assert res == None

sys.stderr.write("Criando alguns objetos...\n")
tabelas.cria_todos_os_testes(False)

# Sessao de teste:
sessoes = [
  sessao.busca_por_identificador("S-00000001"),
  sessao.busca_por_identificador("S-00000002"),
  sessao.busca_por_identificador("S-00000003")
]
assert sessoes != None

def testa(rotulo, *args):
  """Testa {funcao(*args)}, grava resultado 
  em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""
  
  modulo = comando_solicitar_pag_cadastrar_usuario
  funcao = modulo.processa
  frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
  pretty = False # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
  utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)
Beispiel #19
0
import usuario
import sessao
import compra
import utils_testes

sys.stderr.write("Conectando com base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res == None

sys.stderr.write("Criando objetos...\n")
tabelas.cria_todos_os_testes(False)

# Sessão de usuário cliente

# Sessão de usuário administrador
ses4 = sessao.busca_por_identificador("S-00000003")

# Usuário a examinar:


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
    em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_ver_sessoes
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
    utils_testes.testa_gera_html(modulo, funcao, rotulo, frag, pretty, *args)

import base_sql
import tabelas
import usuario
import sessao
import utils_testes
import utils_testes

import sys
sys.stderr.write("Conectando com a base de dados...\n")
res = base_sql.conecta("DB", None, None)
assert res == None  # Verifica que a conexão teve sucesso

sys.stderr.write("Criando alguns objetos...\n")
tabelas.cria_todos_os_testes(False)
# Sessão usada no teste
sessao1 = sessao.busca_por_identificador("S-00000001")
assert sessao1 != None

# Usuário usado no teste
usuario1 = usuario.busca_por_identificador("U-00000001")
assert usuario1 != None


def testa(rotulo, *args):
    """Testa {funcao(*args)}, grava resultado
  em "testes/saida/{modulo}.{funcao}.{rotulo}.html"."""

    modulo = comando_solicitar_pag_buscar_trechos
    funcao = modulo.processa
    frag = False  # {True} se for apenas um fragmento HTML, {False} se for página completa.
    pretty = True  # Se {True}, formata HTML para legibilidate (mas introduz brancos nos textos).
usrA = usuario.busca_por_identificador(usrA_id)
assert usuario.obtem_atributo(usrA, 'administrador')

# Uma compra em aberto do cliente 1:
cprC_id = "C-00000001"
cprC = compra.busca_por_identificador(cprC_id)
assert compra.obtem_status(cprC) == 'comprando'
assert compra.obtem_cliente(cprC) == usrC

# Uma compra fechada:
cprF_id = "C-00000004"
cprF = compra.busca_por_identificador(cprF_id)
assert compra.obtem_status(cprF) != 'comprando'

# Sessão do cliente 1:
sesC = sessao.busca_por_identificador("S-00000001")
assert sessao.obtem_usuario(sesC) == usrC

# Sessão de outro cliente comum:
sesO = sessao.busca_por_identificador("S-00000003")
assert sessao.obtem_usuario(sesO) != None
assert sessao.obtem_usuario(sesO) != usrC

# Sessão de administrador:
sesA = sessao.busca_por_identificador("S-00000004")
assert sessao.eh_administrador(sesA)

# Poltrona reservada pelo usuario 1:
polR_id = "A-00000001"
polR = poltrona.busca_por_identificador(polR_id)
assert poltrona.obtem_atributo(polR, 'id_compra') == "C-00000001"