Seed code for yarf
[ta/yarf.git] / src / yarf / baseresource.py
1 # Copyright 2019 Nokia
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 #
15
16 from flask_restful import Resource, reqparse
17 from yarf.authentication.base_auth import login_required
18
19 class BaseResource(Resource):
20     # THESE VALUES ARE FILLED BY THE FRAMEWORK
21     method_decorators = None
22 #   authentication_method = None
23     api_versions = []
24     subarea = "none"
25     parser = None
26     logger = None
27     
28     # USED INTERNALLY ONLY
29     @classmethod
30     def add_wrappers(cls):
31         cls.method_decorators = [login_required]
32         for extra_wrapper in cls.extra_wrappers:
33             if extra_wrapper not in cls.method_decorators:
34                 cls.logger.debug("Adding wrapper %s", extra_wrapper)
35                 cls.method_decorators.append(extra_wrapper)
36             else:
37                 cls.logger.debug("Not added %s", extra_wrapper)
38
39     @classmethod
40     def add_parser_arguments(cls):
41         cls.parser = reqparse.RequestParser()
42         for argument in cls.parser_arguments:
43             if isinstance(argument, cls.int_arg_class):
44                 cls.parser.add_argument(argument.argument_class)
45             else:
46                 cls.parser.add_argument(argument)