def busca_por_dias(dia_min, dia_max):
    global cache, nome_tb, letra_tb, colunas, diags
    # !!! MUDAR PARA INTERVALO !!!
    unico = False
    ids = objeto.busca_por_campo("dia_partida", dia_min, unico, cache, nome_tb,
                                 letra_tb, colunas)
    if dia_min != dia_max:
        ids += objeto.busca_por_campo("dia_chegada", dia_max, unico, cache,
                                      nome_tb, letra_tb, colunas)
    return ids
def busca_por_cliente(id_cliente):
    global cache, nome_tb, letra_tb, colunas, diags
    assert type(id_cliente) is str and (id_cliente[0] == "U")
    unico = False
    ids_compras = objeto.busca_por_campo('cliente', id_cliente, unico, cache,
                                         nome_tb, letra_tb, colunas)
    return ids_compras
def cria_obj_mem(id, atrs_SQL):
    """Cria um novo objeto da classe {Objeto_Usuario} com
  identificador {id} e atributos {atrs_SQL}, tais como extraidos
  da tabela de sessoes. O objeto *NÃO* é inserido na base de dados.
  
  Os valores em {atr_SQL} são convertidos para valores
  equivalentes na memória."""

    global cache, nome_tb, letra_tb, colunas, diags

    # Converte atributos para formato na memória.  Todos devem estar presentes:
    atrs_mem = conversao_sql.dict_SQL_para_dict_mem(atrs_SQL, colunas, False,
                                                    tabelas.id_para_objeto)
    if diags: mostra(2, "criando objeto, atrs_mem = " + str(atrs_mem))
    assert type(atrs_mem) is dict
    if len(atrs_mem) != len(colunas):
        erro_prog("numero de atributos = " + str(len(atrs_mem)) +
                  " devia ser " + str(len(colunas)))

    # Paranóia: verifica de novo a unicidade de CPF e email:
    for chave in ('CPF', 'email'):
        if chave not in atrs_mem:
            erro_prog("falta atributo '" + chave + "'")
        else:
            val = atrs_mem[chave]
            unico = True
            id_bus = objeto.busca_por_campo(chave, val, unico, cache, nome_tb,
                                            letra_tb, colunas)
            if id_bus != None:
                erro_prog("usuário com '" + chave + "' = '" + val +
                          "' já existe: " + id + " " + id_bus)

    obj = usuario.Objeto_Usuario(id, atrs_mem)
    return obj
def busca_por_CPF(CPF):
    global cache, nome_tb, letra_tb, colunas, diags
    unico = True
    id = objeto.busca_por_campo('CPF', CPF, unico, cache, nome_tb, letra_tb,
                                colunas)

    return id
Exemple #5
0
def busca_por_compra(cpr):
  global cache, nome_tb, letra_tb, colunas, diags
  assert cpr != None and type(cpr) is compra.Objeto_Compra
  id_cpr = compra.obtem_identificador(cpr)
  unico = False
  ids_poltronas = objeto.busca_por_campo('id_compra', id_cpr, unico, cache, nome_tb, letra_tb, colunas)
  return ids_poltronas
Exemple #6
0
def busca_por_trecho(trc):
  global cache, nome_tb, letra_tb, colunas, diags
  assert trc != None and type(trc) is trecho.Objeto_Trecho
  id_trc = trecho.obtem_identificador(trc)
  unico = False
  ids_poltronas = objeto.busca_por_campo('id_trecho', id_trc, unico, cache, nome_tb, letra_tb, colunas)
  return ids_poltronas
def modifica_obj_mem(obj, atrs_SQL):
    """O parâmetro {obj} deve ser um objeto da classe {Objeto_Usuario}; nesse
  caso a função altera os atributos de {obj} conforme especificado em
  {atrs_SQL}.  A entrada correspondente da base de dados *NÃO* é alterada.

  Os valores em {atr_SQL} são convertidos para valores
  equivalentes na memória."""
    global cache, nome_tb, letra_tb, colunas, diags

    # Converte atributos para formato na memória. Pode ser subconjunto:
    mods_mem = conversao_sql.dict_SQL_para_dict_mem(atrs_SQL, colunas, True,
                                                    tabelas.id_para_objeto)
    if diags: mostra(2, "modificando objeto, mods_mem = " + str(mods_mem))
    assert type(mods_mem) is dict
    if len(mods_mem) > len(colunas):
        erro_prog("numero de atributos a alterar = " + str(len(mods_mem)) +
                  " excessivo")

    # Paranóia: verifica de novo a unicidade de CPF e email:
    for chave in ('CPF', 'email'):
        if chave in mods_mem:
            val = mods_mem[chave]
            unico = True
            id_bus = objeto.busca_por_campo(chave, val, unico, cache, nome_tb,
                                            letra_tb, colunas)
            if id_bus != None and id_bus != obj.id:
                erro_prog("usuário com '" + chave + "' = '" + val +
                          "' já existe: " + id + " " + id_bus)

    # Modifica os atributos:
    for chave, val in mods_mem.items():
        if not chave in obj.atrs:
            erro_prog("chave '" + chave + "' inválida")
        val_velho = obj.atrs[chave]
        if val != None and val_velho != None and (
                not type(val_velho) is type(val)):
            erro_prog("tipo do campo '" + chave + "' incorreto")
        obj.atrs[chave] = val
    return obj
def busca_por_email(em):
    global cache, nome_tb, letra_tb, colunas, diags
    unico = True
    id = objeto.busca_por_campo('email', em, unico, cache, nome_tb, letra_tb,
                                colunas)
    return id
def busca_por_campo(chave, val):
    global cache, nome_tb, letra_tb, colunas, diags
    ids = objeto.busca_por_campo(chave, val, False, cache, nome_tb, letra_tb,
                                 colunas)
    return ids
def busca_por_usuario(id):
    global cache, nome_tb, letra_tb, colunas, diags
    if id == None: return [].copy()
    ses = objeto.busca_por_campo("usr", id, False, cache, nome_tb, letra_tb,
                                 colunas)
    return ses
def busca_por_destino(cod):
    global cache, nome_tb, letra_tb, colunas, diags
    unico = False
    ids = objeto.busca_por_campo('destino', cod, unico, cache, nome_tb,
                                 letra_tb, colunas)
    return ids