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
Exemplo n.º 2
0
def gera_botoes_linha_2():
    """Gera uma lista de fragmentos de HTML com os botões da linha 2 do menu
  geral.  Estes botões são mostrados apenas se o usuário está logado
  e é um administrador."""

    ht_input = html_input.gera(None, "text", "id", None, None, True, True,
                               "Id do objeto", None)
    ht_bt_submit = html_botao_submit.gera("Checar Objeto", "ver_objeto", None,
                                          '#ffdd22')
    form_content = \
      ht_input + \
      ht_bt_submit

    ht_input2 = html_input.gera(None, "text", "passageiro", None, None, True,
                                True, "Nome ou documento", None)
    ht_bt_submit2 = html_botao_submit.gera("Buscar passageiro",
                                           "buscar_compras", None, '#ffdd22')
    form_content2 = \
      ht_input2 + \
      ht_bt_submit2

    botoes = (
        html_botao_simples.gera("Acrescentar trecho",
                                "solicitar_pag_acrescentar_trecho", None,
                                '#ffdd22'),
        html_botao_simples.gera("Trafego", "comando_relatorio_de_trafego",
                                None, '#FF00FF'), html_form.gera(form_content),
        html_form.gera(form_content2)

        # html_botao_simples.gera("Alterar trecho", "solicitar_pag_alterar_trecho", None, '#ffdd22'),
        # html_form_passageiros.gera(),
        # html_form_buscar_objeto.gera(),
    )
    return botoes
Exemplo n.º 3
0
def gera_input(tipo, chave, val, vmin, dica, editavel, obrigatorio):
    """Retorna o HTML de um elemento <input> ou <textarea>...</textarea>.

  O elemento terá o dado {tipo} ("text", "password", etc.), nome {chave},
  valor inicial {val}, valor mínimo {vmin}, e a {dica} especificada 
  (se {val} for {None}).  Se {tipo} for "textarea", gera um
  <textarea> em vez de <input>.
  
  O valor inicial {val} é convertido para string de maneira adequada ao
  seu tipo python. Em particular, valor {float} é formatado com 2 casas
  depois do ponto decimal.

  Se a chave for 'senha', não mostra o {val}.  Se {tipo}
  não for "number", ignora {vmin}. """

    if chave == 'senha': val = None
    if chave == 'conf_senha': val = None

    # Converte val para HTML:
    if val == None:
        ht_valor = None
    elif type(val) is str:
        ht_valor = val
    elif type(val) is bool:
        ht_valor = ('on' if val else 'off')
    elif type(val) is float:
        ht_valor = ("%.2f" % val)
    elif type(val) is int:
        ht_valor = ("%d" % val)
    else:
        erro_prog("valor inválido = \"" + str(val) + "\"")

    # Converte o valor mínimo para HTML:
    if tipo == 'number':
        ht_vmin = str(vmin)
    else:
        ht_vmin = None

    # Dica e valor inicial são mutuamente exclusivos:
    if ht_valor == None:
        ht_dica = dica
    else:
        ht_dica = None

    # Cozinhada: tipo "textarea" é um elemento diferente.
    if tipo != "textarea":
        ht_campo = html_input.gera(None, tipo, chave, ht_valor, ht_vmin,
                                   editavel, obrigatorio, ht_dica, None)
    else:
        ht_campo = html_textarea.gera(None, chave, ht_valor, editavel,
                                      obrigatorio, ht_dica, None)

    return ht_campo
Exemplo n.º 4
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
Exemplo n.º 5
0
def gera(texto, URL, args, cor_fundo):
    args_html = ""
    if args != None:
        # Acrescenta argumentos ao {args_html}:
        for key, val in args.items():
            kv_html = html_input.gera(None, 'hidden', key, val, None, False,
                                      False, None, None)
            args_html += kv_html

    # O botão propriamente dito:
    estilo = html_estilo_de_botao.gera(cor_fundo)
    html = args_html + \
      "<input" + \
      " type=\"submit\"" + \
      " style=\"" + estilo + "\n\"" + \
      " formaction=\"" + URL + "\"" + \
      " value=\"" + texto + "\"" + \
      "/>"
    return html
Exemplo n.º 6
0
def html_cpr_campo(rotulo, nome, valores, tipo, dica, editavel):
    """Função auxiliar para formatar a tabela de campos.

  Devolve um par {(ht_lab, ht_val)} onde {ht_lab} é um elemento <label>...</label>,
  e {ht_val} é um elemento <input ... /> ou um <div>...</div> com o formato apropriado.  
  
  O string {rotulo} é o nome do campo visível para o usuário, como
  "Nome do passageiro". Será o conteúdo do {ht_lab}.
  
  O string {nome} é o nome interno do atributo da compra, como 'id_usuario',
  'preco_tot', 'saida', 'chegada', etc.
  
  O parâmetro {valores} é um dicionário Python que pode definir ou não um
  valor {val} para a chave {nome}.  Se não definir, o valor {val} será tomado como {None}.
  Se o {tipo} for "number", o dicionário pode também definir um valor {vmin}
  para a chave "{nome}_min"; caso contrário {vmin} será tomado como {None}.
  
  Se o parâmetro {tipo} for {None}, o resultado {ht_val} será o valor
  {val} formatado como um <div>...</div> de estilo adequado.
  
  Se o parâmetro {tipo} não for {None}, deve ser um string que especifica
  um tipo de elemento <input.../> que será devolvido em {ht_val},
  Por exemplo "text", "number", "readonly". Nesse caso {ht_val} será 
  
    "<input type='{tipo}' name='{nome}' value='{val}'
    min='{vmin}' placeholder='{dica}'/>"
  
  O parâmetro {dica} só é usado se {tipo} não for {None} mas {val} for {None};
  será a dica de preenchimento do camo. Por exemplo, para
  um campo de data, a dica pode ser "AAAA-MM-DD"."""
    ht_lab = html_label.gera(rotulo, ": ")
    val = (valores[nome] if nome in valores else None)
    if tipo == None:
        estilo = "font-family:Courier;font-size:18"
        ht_val = html_div.gera(estilo, val)
    else:
        nmin = nome + "_min"
        vmin = (valores[nmin] if nmin in valores else None)
        if val != None: dica = None
        ht_val = html_input.gera(None, tipo, nome, val, vmin, editavel, False,
                                 dica, None)

    return (ht_lab, ht_val)
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
Exemplo n.º 8
0
import utils_testes


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

    modulo = html_table
    funcao = modulo.gera
    frag = True  # {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)


linhas = [].copy()

label_de_teste_input = html_label.gera("Teste das funcionalidades de html_table, coloque um input aqui embaixo", ":")
input_de_teste = html_input.gera(None, "text", "input", None, None, True, False, "Me edite!", None)

label_de_teste_botao = html_label.gera("Aperte o botão para ser redirecionado à URL principal", "!")
botao_de_teste = html_botao_simples.gera("OK", 'principal', None, '#55ee55')

erro_de_teste_html = html_erro.gera("Houston, we've got a problem. Nevermind, this is just a Test!")

cabecalho=("Coluna 1", "Coluna 2")
linhas.append((label_de_teste_input, input_de_teste))
linhas.append((label_de_teste_botao, botao_de_teste))
linhas.append((erro_de_teste_html, botao_de_teste))

testa("Teste", linhas, cabecalho)