コード例 #1
0
ファイル: exploracaos.py プロジェクト: iCarto/utentes-api
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
コード例 #2
0
ファイル: exploracaos.py プロジェクト: iCarto/utentes-api
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
コード例 #3
0
ファイル: exploracaos.py プロジェクト: iCarto/utentes-api
def validate_entities(body):
    import re
    validatorExploracao = Validator(EXPLORACAO_SCHEMA)
    validatorExploracao.add_rule('EXP_ID_FORMAT', {'fails': lambda v: v and (not re.match('^\d{4}-\d{3}$', v))})
    validatorExploracao.add_rule('ACTIVITY_NOT_NULL', {'fails': activity_fail})

    msgs = validatorExploracao.validate(body)

    validatorFonte = Validator(FONTE_SCHEMA)
    for fonte in body.get('fontes'):
        msgs = msgs + validatorFonte.validate(fonte)

    validatorLicencia = Validator(LICENCIA_SCHEMA)
    validatorLicencia.add_rule('LIC_NRO_FORMAT', {'fails': lambda v: v and (not re.match('^\d{4}-\d{3}-\d{3}$', v))})
    for lic in body.get('licencias'):
        msgs = msgs + validatorLicencia.validate(lic)

    return msgs
コード例 #4
0
ファイル: reses.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Reses'])
     return validator.validate(json)
コード例 #5
0
ファイル: actividade.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Abastecimento'])
     return validator.validate(json)
コード例 #6
0
ファイル: actividade.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Producção de energia'])
     return validator.validate(json)
コード例 #7
0
ファイル: actividade.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Piscicultura'])
     return validator.validate(json)
コード例 #8
0
ファイル: actividade.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Indústria'])
     return validator.validate(json)
コード例 #9
0
ファイル: actividade.py プロジェクト: iCarto/utentes-api
 def validate(self, json):
     validator = Validator(actividades_schema.ActividadeSchema['Agricultura-Regadia'])
     return validator.validate(json)