def processa(ses, args): # Determina se usuario é administrador assert sessao.eh_administrador(ses) # Obtem a poltrona: id_poltrona = args['id_poltrona'] assert id_poltrona != None # Paranóia (o formulário deve incluir). del args['id_poltrona'] pol = poltrona.busca_por_identificador(id_poltrona) assert pol != None # Paranóia. pol_atrs = poltrona.obtem_atributos(pol) id_trecho = args['id_trecho'] assert id_trecho == pol_atrs['id_trecho'] # Deve ser readonly no form. id_compra = args['id_compra'] assert id_compra == pol_atrs['id_compra'] # Deve ser readonly no form. numero = args['numero'] assert numero == pol_atrs['numero'] # Deve ser readonly no form. # Monta dicionário com alterações: atrs_a_mudar = {}.copy() oferta = args['oferta'] if 'oferta' in args else None # Alterável. if oferta != None and type(oferta) is str: oferta = (oferta == "on") if oferta != None: atrs_a_mudar['oferta'] = oferta preco = args['preco'] if 'preco' in args else None # Alterável. if preco != None and type(preco) is str: preco = float(preco) if preco != None: atrs_a_mudar['preco'] = preco # Editar poltrona try: poltrona.muda_atributos(pol, atrs_a_mudar) # Mostra poltrona com dados alterados: pag = html_pag_poltrona.gera(ses, pol, None, None) except ErroAtrib as ex: # Mostra novamente a poltrona com mesmos args e mens de erro: erros = ex[0] pag = html_pag_poltrona.gera(ses, pol, args, erros) return pag
def processa(ses, args): # Obtém id da poltrona a ver id_pol = args['id_poltrona'] if 'id_poltrona' in args else None assert id_pol != None # Paranóia (formulário deve incluir sempre). pol = poltrona.busca_por_identificador(id_pol) assert pol != None # Paranóia. pag = html_pag_poltrona.gera(ses, pol, None, None) return pag
def processa(ses, args): assert ses != None and sessao.eh_administrador(ses) # Paranóia. # Obtem a poltrona a fazer cehckin: id_pol = args['id_poltrona'] if 'id_poltrona' in args else None assert id_pol != None # Paranoia (formulário deve incluir este dado) pol = poltrona.busca_por_identificador(id_pol) # A poltrona deve estar reservada para alguma compra: assert poltrona.obtem_atributo(pol, 'id_compra') != None try: poltrona.muda_atributos(pol, {'fez_checkin': True}) pag = html_pag_poltrona.gera(ses, pol, None, None) except ErroAtrib as ex: erros = ex[0] # Mostra os dados da poltrona: pag = html_pag_poltrona.gera(ses, pol, None, erros) return pag
def processa(ses, args): admin = False if ses == None else sessao.eh_administrador(ses) assert admin # Paranóia (cliente comum e deslogado não deveria ter acesso a este cmd). # Obtem a poltrona a alterar: id_pol = args['id_poltrona'] if 'id_poltrona' in args else None assert id_pol != None # Paranóia (formulário deveria especificar). pol = poltrona.busca_por_identificador(id_pol) assert pol != None # Paranóia. pag = html_pag_poltrona.gera(ses, pol, None, None) return pag
def processa(ses, args): usr_ses = None if ses == None else sessao.obtem_usuario(ses) assert sessao.eh_administrador( ses) # O dono da sessão deve ser administrador. try: if not 'id' in args: pag = html_pag_mensagem_de_erro.gera( ses, 'É necessário adicionar um ID para pesquisar.') return pag id = args['id'] if len(id) != 10: raise ErroAtrib("O identificador \"" + id + "\" é inválido") letra = id[0] if letra == "U": usr = usuario.busca_por_identificador(id) if usr == None: raise ErroAtrib("Não existe usuário com identificador " + id) usr_atrs = usuario.obtem_atributos(usr) usr_atrs['id_usuario'] = usuario.obtem_identificador(usr) pag = html_pag_usuario.gera(ses, usr, usr_atrs, None) elif letra == "C": cpr = compra.busca_por_identificador(id) if cpr == None: raise ErroAtrib( "Não existe pedido de compra com identificador" + id) pag = html_pag_compra.gera(ses, cpr, None, None) elif letra == "T": trc = trecho.busca_por_identificador(id) if trc == None: raise ErroAtrib( "Não existe trecho de viagem com identificador" + id) pag = html_pag_trecho.gera(ses, trc, None, None) elif letra == "S": ses_a_ver = sessao.busca_por_identificador(id) if ses_a_ver == None: raise ErroAtrib("Não existe sessão com identificador" + id) pag = html_pag_sessao.gera(ses, ses_a_ver, None) elif letra == "A": pol = poltrona.busca_por_identificador(id) if pol == None: raise ErroAtrib("Não existe poltrona com identificador" + id) pag = html_pag_poltrona.gera(ses, pol, None, None) else: raise ErroAtrib("Classe de objeto \"" + letra + "\" inválida") except ErroAtrib as ex: erros = ex.args[0] return html_pag_mensagem_de_erro.gera(ses, erros) return pag