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