Esempio n. 1
0
def gera():
  linhas = [].copy()

  ht_rotulo = html_label.gera("Origem", ": ")
  ht_campo = html_input.gera(None, "text", "origem", None, None, True, True, "VCP", None)
  linhas.append((ht_rotulo, ht_campo,))

  ht_rotulo = html_label.gera("Data mínima de partida", ": ")
  ht_campo = html_input.gera(None, "text", "dia_min", None, None, True, True, "aaaa-mm-dd", None)
  ht_campo2 = html_input.gera(None, "text", "hora_min", None, None, True, True, "HH:MM", None)
  ht_rotulo2 = html_label.gera("UTC", "")
  linhas.append((ht_rotulo, ht_campo, ht_campo2, ht_rotulo2))

  ht_rotulo = html_label.gera("Destino", ": ")
  ht_campo = html_input.gera(None, "text", "destino", None, None, True, True, "SDU", None)
  linhas.append((ht_rotulo, ht_campo,))

  ht_rotulo = html_label.gera("Data máxima de chegada", ": ")
  ht_campo = html_input.gera(None, "text", "dia_max", None, None, True, True, "aaaa-mm-dd", None) 
  ht_campo2 = html_input.gera(None, "text", "hora_max", None, None, True, True, "HH:MM", None)
  ht_rotulo2 = html_label.gera("UTC", "")
  linhas.append((ht_rotulo, ht_campo, ht_campo2, ht_rotulo2))

  # Monta a tabela com os fragmentos HTML:
  ht_table = html_table.gera(linhas, None)

  ht_bt_buscar = html_botao_submit.gera("Buscar", 'sugerir_roteiros', None, '#55ee55')

  ht_campos = \
    ht_table + \
    ht_bt_buscar

  ht = html_form.gera(ht_campos)
  return ht
def gera():
    linhas = [].copy()

    ht_rotulo = html_label.gera("E-mail", ": ")
    ht_campo = html_input.gera(None, "text", "email", None, None, True, True,
                               "nome@provedor", None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    ht_rotulo = html_label.gera("Senha", ": ")
    ht_campo = html_input.gera(None, "password", "senha", None, None, True,
                               True, None, None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # Monta a tabela com os fragmentos HTML:
    ht_table = html_table.gera(linhas, None)

    ht_bt_login = html_botao_submit.gera("Entrar", 'fazer_login', None,
                                         '#55ee55')

    ht_campos = \
      ht_table + \
      ht_bt_login

    ht = html_form.gera(ht_campos)
    return ht
Esempio n. 3
0
def gera(dados_linhas, atrs):
    # sys.stderr.write("{html_form_table_IMP.gera}: atrs = %s\n" %str(atrs))

    # Converte os dados brutos das linhas para fragmentos HTML:
    ht_linhas_vis = [].copy(
    )  # Lista de pares {(ht_rotulo,ht_input)} dos campos visíveis.
    ht_campos_hid = [].copy()  # Lista de {ht_input}s dos campos invisívels.
    for rotulo, tipo, chave, dica, visivel, editavel, obrigatorio in dados_linhas:
        val = (atrs[chave] if chave in atrs else None)
        if visivel:
            # Pega o valor mínimo, se houver:
            chmin = chave + "_min"
            vmin = atrs[chmin] if (tipo == "number") and (chmin
                                                          in atrs) else None
            # Gera o <input>:
            ht_rotulo = html_label.gera(rotulo, None)
            ht_input = gera_input(tipo, chave, val, vmin, dica, editavel,
                                  obrigatorio)
            ht_linhas_vis.append((
                ht_rotulo,
                ht_input,
            ))
        else:
            ht_input = gera_input("hidden", chave, val, None, None, False,
                                  False)
            ht_campos_hid.append(ht_input)

    # Monta a tabela com os fragmentos HTML:
    ht_table = html_table.gera(ht_linhas_vis, None)
    ht_res = ht_table + ("\n".join(ht_campos_hid))
    return ht_res
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 gera(ids_poltronas, usr, carr):

    id_trc = None  # Identificador do trecho comum, ou None.

    admin = False if usr == None else usuario.obtem_atributo(
        usr, 'administrador')
    fazer_checkin = admin  # Por enquanto.
    embarcar = admin  #Por enquanto

    if admin or usr == None:
        assert carr == None  # Administrador e não-logado não tem carrinho.
    id_carr = None if carr == None else compra.obtem_identificador(carr)

    # Gera a linha de os cabeçalhos das colunas
    linha_cab = html_resumo_de_poltrona_de_trecho.gera_cabecalho(fazer_checkin)
    assert type(linha_cab) is list or type(linha_cab) is tuple  # Paranóia.

    # Gera as linhas da tabela.
    linhas = [].copy()
    for id_poltrona in ids_poltronas:
        pol = poltrona.busca_por_identificador(id_poltrona)

        # Obtem dados da poltrona:
        assert pol != None
        id_trc_pol = poltrona.obtem_atributo(pol, 'id_trecho')
        id_cpr_pol = poltrona.obtem_atributo(pol, 'id_compra')
        cpr_pol = None if id_cpr_pol == None else compra.busca_por_identificador(
            id_cpr_pol)
        usr_pol = None if cpr_pol == None else compra.obtem_cliente(cpr_pol)

        # Verifica se o trecho é o mesmo para todas as poltronas:
        if id_trc != None: assert id_trc_pol == id_trc
        id_trc = id_trc_pol

        # Decide que botões vai ter:
        alterar = admin
        comprar = (carr != None) and poltrona.pode_comprar(usr, pol, carr)
        excluir = (cpr_pol != None) and (usr_pol
                                         == usr) and poltrona.pode_excluir(
                                             usr, pol)

        # Gera os campos da linha:
        linha = html_resumo_de_poltrona_de_trecho.gera(pol, alterar, comprar,
                                                       excluir, fazer_checkin,
                                                       embarcar)
        assert type(linha) is list or type(linha) is tuple  # Paranóia.
        linhas.append(linha)

    ht_tabela = html_table.gera(linhas, linha_cab)
    ht_legenda = html_resumo_de_poltrona_de_trecho.gera_legenda(fazer_checkin)
    ht_res = ht_tabela + ht_legenda
    return ht_res
def gera(ids_compras, ver, id_carrinho):
    linhas = [].copy()

    # Linha de cabeçalho:
    estilo_cab = "font-size:20px;font-weight:bold; background-color: #60a3bc; color: white; padding:0px 10px 0px 0px"

    # Linha de cabeçalho:
    cabs_raw = [
        'CR', 'Compra', 'Usuário', 'NP', 'Passageiro', 'Documento', 'Preço'
    ]
    cabs_div = [].copy()
    for cb in cabs_raw:
        cabs_div.append(
            html_div.gera(html_estilo_cabecalho_de_tabela.gera(), cb))

    # Linhas das compras:
    for id_cpr in ids_compras:
        # Obtem o objeto correspondente
        compra_obj = compra.busca_por_identificador(id_cpr)

        # Gera uma lista de fragmentos HTML com as informacoes dessa compra
        res_campos = html_resumo_de_compra.gera(compra_obj, ver, id_carrinho)
        # sys.stderr.write("res_campos = %s\n" % str(res_campos))
        assert type(res_campos) is list or type(res_campos) is tuple

        # Adiciona essa lista à lista de linhas para a tabela HTML:
        linhas.append(res_campos)
        # sys.stderr.write("linhas = %s\n" % str(linhas))

    ht_cabe = html_cabecalho.gera("Minhas compras", False)
    # Gera a tabela HTML a partir da lista de linhas
    ht_itens = html_table.gera(linhas, cabs_div)

    ht_legenda = "CR: Seu Carrinho, NP: Número da Poltrona"

    ht_conteudo = \
          ht_cabe + "<br/>\n" + \
          ht_itens + "<br/>\n" + \
          ht_legenda

    # Devolve a tabela HTML
    return ht_conteudo
Esempio n. 7
0
def gera(ses, dados):

    # Converte dados no formato gerado por {trecho.resumo_de_trafego} para
    # formato aceito por {html_table}
    estilo_item = "font-family:Courier;font-size:20;"
    ht_linhas_dados = [].copy()
    for dado in dados:
        linha_porto = [].copy()
        # Codigo do aeroporto
        linha_porto.append(html_span.gera(estilo_item, str(dado[0])))

        # Infos de chegada
        for ch_item in dado[1]:
            linha_porto.append(html_span.gera(estilo_item, str(ch_item)))

        # Infos de saida
        for sa_item in dado[2]:
            linha_porto.append(html_span.gera(estilo_item, str(sa_item)))

        ht_linha_porto = [html_span.gera(estilo_item, x) for x in linha_porto]

        ht_linhas_dados.append(ht_linha_porto)

    linha_cab = [].copy()
    linha_cab.append("Aeroporto")
    for lado in ("chegada", "saida"):
        for tt in ( \
            "# de trechos",  \
            "# total de poltronas", \
            "# de poltronas reservadas",  \
            "Total dos preços das poltronas reservadas",  \
            "# de passageiros que fizeram checkin" \
          ):
            linha_cab.append(tt + " (" + lado + ")")

    estilo_cab = html_estilo_cabecalho_de_tabela.gera()
    ht_linha_cab = map(lambda x: html_span.gera(estilo_cab, x), linha_cab)

    ht_table = html_table.gera(ht_linhas_dados, ht_linha_cab)
    return html_pag_generica.gera(ses, ht_table, None)
Esempio n. 8
0
def gera(rots):

    ht_cabe = html_cabecalho.gera("Lista de Roteiros", False)

    estilo_cab = "font-size:20px;font-weight:bold; background-color: #60a3bc; color: white; padding:0px 10px 0px 0px"

    cabecalho = [
        "Origem", "Data Partida", "Destino", "Data Chegada", "NE",
        "Preço Mínimo"
    ]
    cabs_div = [].copy()
    for cb in cabecalho:
        cabs_div.append(html_div.gera(estilo_cab, cb))

    linhas = [].copy()
    for rot in rots:
        ver_rot = True
        res_campos = html_resumo_de_roteiro.gera(rot, ver_rot)
        linhas.append(res_campos)

    observacao = "</br><b>LEGENDA:</b></br><span>NE = Número de Escalas</span></br>"

    res = ht_cabe + html_table.gera(linhas, cabs_div) + observacao
    return res
Esempio n. 9
0
def gera(ids_poltronas):

    linhas = [].copy()

    # Cabeçalho:
    cabs_raw = [
        'Trecho', 'Origem', 'Partida', 'Destino', 'Chegada', 'Poltrona',
        'Preço', 'Ver Poltrona'
    ]
    cabs_div = [].copy()
    for cb in cabs_raw:
        cabs_div.append(
            html_div.gera(html_estilo_cabecalho_de_tabela.gera(), cb))

    for id_poltrona in ids_poltronas:
        pol = poltrona.busca_por_identificador(id_poltrona)

        linha = html_resumo_de_poltrona_de_usuario.gera(pol)
        assert type(linha) is list or type(linha) is tuple

        linhas.append(linha)

    ht_res = html_table.gera(linhas, cabs_div)
    return ht_res
def cria_form_completo():
    linhas = [].copy()

    # cria campo de texto com valor inicial
    ht_rotulo = html_label.gera("campo de texto", ": ")
    ht_campo = html_input.gera(None, "text", "texto1", "blabla", None, True,
                               True, None, None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # cria campo de texto sem valor inicial, com dica
    ht_rotulo = html_label.gera("campo de texto", ": ")
    ht_campo = html_input.gera(None, "text", "texto2", None, None, True, False,
                               "Lorem ipusm", None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # cria campo de senha
    ht_rotulo = html_label.gera("campo de senha", ": ")
    ht_campo = html_input.gera(None, "password", "senha", None, None, True,
                               True, None, None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # cria campo numerico
    ht_rotulo = html_label.gera("campo numerico", ": ")
    ht_campo = html_input.gera(None, "number", "pernas", "17", "5", True,
                               False, None, None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # cria campo escondido
    ht_rotulo = html_label.gera("campo escondido", ": ")
    ht_campo = html_input.gera(None, "hidden", "segredo", "boo", None, True,
                               False, None, None)
    linhas.append((
        ht_rotulo,
        ht_campo,
    ))

    # Monta a tabela com os fragmentos HTML:
    ht_table = html_table.gera(linhas, ["TIPO", "ELEMENTO"])

    # cria botao de interacao com o formulario
    ht_botao = html_botao_submit.gera("Botao", 'url test', None, '#55ee55')

    # counteudo do formulario
    ht_campos = \
      ht_table + \
      ht_botao

    # cria formulario de teste
    formulario = html_form.gera(ht_campos)
    return formulario
Esempio n. 11
0
def gera(cpr, editavel, texto_bt, comando_bt):

    # Obtem atributos a mostrar:

    valores = {}.copy()
    id_cpr = compra.obtem_identificador(cpr)
    atrs_cpr = compra.obtem_atributos(cpr)

    # Atributos da compra em si
    valores['id_cpr'] = id_cpr
    valores['status'] = atrs_cpr['status']
    valores['nome_pass'] = atrs_cpr['nome_pass']
    valores['doc_pass'] = atrs_cpr['doc_pass']
    valores['preco_tot'] = ("%.2f" % compra.calcula_preco(cpr))
    # valores['pagamento'] = atrs_cpr['pagamento']

    # Cliente que está montando ou montou a compra:
    usr = compra.obtem_cliente(cpr)
    valores['id_usr'] = usuario.obtem_identificador(usr)
    atrs_usr = usuario.obtem_atributos(usr)
    valores['nome_usr'] = atrs_usr['nome']

    # Bilhetes da compra:
    ids_pols = compra.obtem_poltronas(cpr)
    num_trechos = len(ids_pols)
    valores['n_trechos'] = str(num_trechos)

    if (num_trechos >= 1):
        # Obtém origem, data, e hora de partida do primeiro trecho:
        pol_ini = poltrona.busca_por_identificador(ids_pols[0])
        id_trc_ini = poltrona.obtem_atributo(pol_ini, 'id_trecho')
        trc_ini = trecho.busca_por_identificador(id_trc_ini)
        origem = trecho.obtem_atributo(trc_ini, 'origem')
        dh_partida = trecho.obtem_dia_e_hora_de_partida(trc_ini)
        valores['partida'] = origem + " " + dh_partida

        # Obtém destino, data, e hora de chegada do último trecho:
        pol_fin = poltrona.busca_por_identificador(ids_pols[-1])
        id_trc_fin = poltrona.obtem_atributo(pol_fin, 'id_trecho')
        trc_fin = trecho.busca_por_identificador(id_trc_fin)
        destino = trecho.obtem_atributo(trc_fin, 'destino')
        dh_chegada = trecho.obtem_dia_e_hora_de_chegada(trc_fin)
        valores['chegada'] = destino + " " + dh_chegada

    # Linhas para {html_table.gera}:
    linhas = (
        html_cpr_campo("Compra", 'id_cpr', valores, 'text', None, False),
        html_cpr_campo("Cliente", 'id_usr', valores, 'text', None, False),
        html_cpr_campo("Nome do cliente", 'nome_usr', valores, 'text', None,
                       False),
        html_cpr_campo("Nome do passageiro", 'nome_pass', valores, 'text',
                       "Fulano da Silva", editavel),
        html_cpr_campo("Documento do passageiro", 'doc_pass', valores, 'text',
                       "123.456.789-10", editavel),
        html_cpr_campo("Número de trechos", 'n_trechos', valores, 'text', None,
                       False),
        html_cpr_campo("Preço total", 'preco_tot', valores, 'text', None,
                       False),
        html_cpr_campo("Estado", 'status', valores, 'text', None, False),
        html_cpr_campo("Partida", 'partida', valores, 'text', None, False),
        html_cpr_campo("Chegada", 'chegada', valores, 'text', None, False),
    )
    ht_campos = html_table.gera(linhas, ["", ""])

    # Botões:
    if editavel:
        args_submit = {
            'id_compra': id_cpr
        }  # Argumentos adicionais para submissão.
        ht_submit = html_botao_submit.gera(texto_bt, comando_bt, args_submit,
                                           "#44ff44")
        ht_campos += "<br/>" + ht_submit

    return html_form.gera(ht_campos)
def gera(ses, usr, atrs, erros):

    # Obtem usuário da sessão, determina privilégios:
    usr_ses = None if ses == None else sessao.obtem_usuario(ses)
    if usr_ses == None:
        # Usuário que pediu não está logado:
        admin = False
        mesmo = False
    else:
        assert type(usr_ses) is usuario.Objeto_Usuario
        admin = usuario.obtem_atributo(usr_ses, "administrador")
        mesmo = (usr_ses == usr)

    if atrs == None: atrs = {}.copy()  # Por via das dúvidas.

    ht_submit = ""
    ht_bt_cancel = ""
    if usr == None:
        # Cadastramento de novo usuário:
        id_usr = None
        ht_submit += html_botao_submit.gera("Cadastrar", "cadastrar_usuario",
                                            None, "#ff0000")
        titulo = "Novo usuário"
    else:
        # Visualização/alteração de usuário existente:
        assert usr_ses != None, "operação não autorizada sem login"
        assert admin or mesmo, "usuário não está autorizado a efetuar esta operação"
        assert type(usr) is usuario.Objeto_Usuario
        id_usr = usuario.obtem_identificador(usr)
        assert id_usr != None  # Paranóia.

        if mesmo:
            titulo = f"Sua conta"
        else:
            titulo = f"Usuário {id_usr}"

        # Completa {atrs} com atributos de {usr}:
        atrs_usr = usuario.obtem_atributos(usr)
        assert atrs_usr != None  # Paranóia
        for ch, val in atrs_usr.items():
            if not ch in atrs: atrs[ch] = val

        # Botoes de ação:
        ht_submit += html_botao_submit.gera("Alterar", "alterar_usuario", None,
                                            "#ff0000")

    ht_bt_cancel = html_botao_simples.gera("Voltar", 'principal', None,
                                           "#ff2200")

    ht_titulo = "<h2>" + titulo + "</h2>"

    # Cria formulário:
    ht_form = html_form_dados_de_usuario.gera(id_usr, atrs, admin, ht_submit)

    # Botoes adicionais:
    ht_bt_linhas = [].copy()
    if usr != None and not mesmo:
        # Botões para administrador ver objetos associados a usuário:
        args_bt = {'id': id_usr}
        estilo_n = "font-family:\"Courier\";font-size:20;"

        n_compras = len(usuario.compras_abertas(usr))
        ht_n_compras = html_span.gera(estilo_n, str(n_compras))
        ht_bt_compras = html_botao_simples.gera("Ver compras",
                                                "ver_compras_de_usuario",
                                                args_bt, '#eeee55')
        ht_bt_linhas.append((
            html_label.gera("Compras abertas", ":"),
            ht_n_compras,
            ht_bt_compras,
        ))

        n_sessoes = len(usuario.sessoes_abertas(usr))
        ht_n_sessoes = html_span.gera(estilo_n, str(n_sessoes))
        ht_bt_sessoes = html_botao_simples.gera("Ver sessões",
                                                "ver_sessoes_de_usuario",
                                                args_bt, '#eeee55')
        ht_bt_linhas.append((
            html_label.gera("Sessoes abertas", ":"),
            ht_n_sessoes,
            ht_bt_sessoes,
        ))

        n_poltronas = len(usuario.poltronas_abertas(usr))
        ht_n_poltronas = html_span.gera(estilo_n, str(n_poltronas))
        ht_bt_poltronas = html_botao_simples.gera("Ver poltronas",
                                                  "ver_poltronas_de_usuario",
                                                  args_bt, '#eeee55')
        ht_bt_linhas.append((
            html_label.gera("Poltronas abertas", ":"),
            ht_n_poltronas,
            ht_bt_poltronas,
        ))

    ht_bts_ver_coisas = html_table.gera(ht_bt_linhas, (
        "",
        "",
    ))

    ht_conteudo = \
      ht_titulo + \
      ht_form + "<br/>\n" + \
      ht_bts_ver_coisas + "<br/>" + \
      ht_bt_cancel

    pag = html_pag_generica.gera(ses, ht_conteudo, erros)
    return pag