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
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
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)
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
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
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