RouteConfigArgs   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 6
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A __init__() 0 5 1
1
# -*- coding: utf-8 -*-
2
from pyramid.httpexceptions import (
3
    HTTPBadRequest,
4
    HTTPNotFound
5
)
6
7
import colander
8
9
from oe_utils.validation import ValidationFailure
10
11
12
def get_resource(data_manager, resource_id, detail="No details provided."):
13
    resource = data_manager.get(resource_id)
14
    if not resource:
15
        raise HTTPNotFound(detail=detail)
16
    return resource
17
18
19
def get_json_from_request(request):
20
    try:
21
        return request.json_body
22
    except AttributeError as e:
23
        raise HTTPBadRequest(detail="Request bevat geen json body. \n%s" % e)
24
    except ValueError as e:
25
        raise HTTPBadRequest(detail="Request bevat incorrecte json body. \n%s" % e)
26
27
28
def validate(request, json_data, mapping_schema):
29
    validaton_schema = mapping_schema.bind(request=request)
30
    try:
31
        return validaton_schema.deserialize(json_data)
32
    except colander.Invalid as e:
33
        raise ValidationFailure('Fouten bij het valideren van request.', e.asdict())
34
35
36
class RouteConfigArgs:
37
    def __init__(self, response_schemas, schema=None, permission=None, tags=None):
38
        self.tags = tags
39
        self.response_schemas = response_schemas
40
        self.schema = schema
41
        self.permission = permission
42
43
44
class RouteConfig:
45
    def __init__(self, service, get_args=None, post_args=None, put_args=None, delete_args=None):
46
        self.service = service
47
        self.get_args = get_args
48
        self.post_args = post_args
49
        self.put_args = put_args
50
        self.delete_args = delete_args
51
52
    @property
53
    def post(self):
54
        return self.service.post(**self.post_args.__dict__)
55
56
    @property
57
    def get(self):
58
        return self.service.get(**self.get_args.__dict__)
59
60
    @property
61
    def put(self):
62
        return self.service.put(**self.put_args.__dict__)
63
64
    @property
65
    def delete(self):
66
        return self.service.delete(**self.delete_args.__dict__)
67
68
    @property
69
    def get_validation_scheme(self):
70
        return self.get_args.schema.__class_schema_nodes__[-1]
71
72
    @property
73
    def put_validation_scheme(self):
74
        return self.put_args.schema.__class_schema_nodes__[-1]
75
76
    @property
77
    def post_validation_scheme(self):
78
        return self.post_args.schema.__class_schema_nodes__[-1]
79