Esempio n. 1
0
def exploracaos_update(request):
    gid = request.matchdict['id']
    if not gid:
        raise badrequest_exception({
            'error': error_msgs['gid_obligatory']
        })

    try:
        body = request.json_body
        msgs = validate_entities(body)
        if len(msgs) > 0:
            raise badrequest_exception({'error': msgs})

        e = request.db.query(Exploracao).filter(Exploracao.gid == gid).one()

        u_id = body.get('utente').get('id')
        if not u_id:
            u = Utente.create_from_json(body['utente'])
            # TODO:660 validate utente
            request.db.add(u)
        elif e.utente_rel.gid != u_id:
            u_filter = Utente.gid == u_id
            u = request.db.query(Utente).filter(u_filter).one()
        else:
            u = e.utente_rel

        validatorUtente = Validator(UTENTE_SCHEMA)
        msgs = validatorUtente.validate(request.json_body['utente'])
        if len(msgs) > 0:
            raise badrequest_exception({'error': msgs})
        e.utente_rel = u
        u.update_from_json(request.json_body['utente'])
        request.db.add(u)

        if _tipo_actividade_changes(e, request.json_body):
            request.db.delete(e.actividade)
            del e.actividade

        lic_nro_sequence = Exploracao.LIC_NRO_SEQUENCE_FIRST
        for lic in e.licencias:
            lic_nro_sequence = calculate_lic_nro(lic.lic_nro, lic_nro_sequence)
        e.update_from_json(request.json_body, lic_nro_sequence)

        request.db.add(e)
        request.db.commit()
    except(MultipleResultsFound, NoResultFound):
        raise badrequest_exception({'error': error_msgs['no_gid'], 'gid': gid})
    except ValueError as ve:
        log.error(ve)
        raise badrequest_exception({'error': error_msgs['body_not_valid']})
    except ValidationException as val_exp:
        if u:
            request.db.refresh(u)
        if e:
            request.db.refresh(e)
        raise badrequest_exception(val_exp.msgs)

    return e
Esempio n. 2
0
def exploracaos_create(request):
    try:
        body = request.json_body
        exp_id = body.get('exp_id')
    except ValueError as ve:
        log.error(ve)
        raise badrequest_exception({'error': error_msgs['body_not_valid']})

    msgs = validate_entities(body)
    if len(msgs) > 0:
        raise badrequest_exception({'error': msgs})

    e = request.db.query(Exploracao).filter(Exploracao.exp_id == exp_id).first()
    if e:
        raise badrequest_exception({'error': error_msgs['exploracao_already_exists']})

    u_filter = Utente.nome == body.get('utente').get('nome')
    u = request.db.query(Utente).filter(u_filter).first()
    if not u:
        validatorUtente = Validator(UTENTE_SCHEMA)
        msgs = validatorUtente.validate(body['utente'])
        if len(msgs) > 0:
            raise badrequest_exception({'error': msgs})
        u = Utente.create_from_json(body['utente'])
        request.db.add(u)
    try:
        e = Exploracao.create_from_json(body)
    except ValidationException as val_exp:
        if u:
            request.db.refresh(u)
        if e:
            request.db.refresh(e)
        raise badrequest_exception(val_exp.msgs)
    e.utente_rel = u
    request.db.add(e)
    request.db.commit()
    return e
Esempio n. 3
0
def utentes_create(request):
    try:
        body = request.json_body
        nome = body.get('nome')
    except ValueError as ve:
        log.error(ve)
        raise badrequest_exception({'error': error_msgs['body_not_valid']})

    msgs = validate_entities(body)
    if len(msgs) > 0:
        raise badrequest_exception({'error': msgs})

    # TODO:320 is this not covered by schema validations?
    if not nome:
        raise badrequest_exception({'error': 'nome es um campo obligatorio'})

    e = request.db.query(Utente).filter(Utente.nome == nome).first()
    if e:
        raise badrequest_exception({'error': error_msgs['utente_already_exists']})

    u = Utente.create_from_json(body)
    request.db.add(u)
    request.db.commit()
    return u