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
Exemple #4
0
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
Exemple #5
0
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