Example #1
0
def register_api(view: MethodView,
                 endpoint: str,
                 url: str,
                 pk: str = 'id',
                 pk_type: str = 'int'):
    """Add url rules for rest-api endpoint

    Args:
        view: view with get/post/put/delete methods
        endpoint: name of view
        url: endpoint url
        pk: primary key name
        pk_type: primary key type
    """
    view_func = view.as_view(endpoint)
    bp.add_url_rule(url,
                    defaults={pk: None},
                    view_func=view_func,
                    methods=[
                        'GET',
                    ])
    bp.add_url_rule(url, view_func=view_func, methods=[
        'POST',
    ])
    bp.add_url_rule(f'{url}<{pk_type}:{pk}>',
                    view_func=view_func,
                    methods=['GET', 'PUT', 'DELETE'])
Example #2
0
 def test_get_view_return(self):
     """
     Test return value of _get_view method.
     """
     view = self.flask_engine._get_view(MethodView)
     self.assertTrue(callable(view))
     self.assertEqual(view.view_class, MethodView.as_view(MethodView.__name__).view_class)
Example #3
0
def base_rule(bp: object, api: MethodView):
    """Configure default routing for all endpoints."""
    name = api.model.__tablename__
    view = api.as_view(f"{name}_api")

    bp.add_url_rule(f'/{name}/',
                    defaults={'id': None},
                    methods=['GET'],
                    view_func=view)
    bp.add_url_rule(f'/{name}', methods=['POST'], view_func=view)
    bp.add_url_rule(f'/{name}/<int:id>',
                    methods=['GET', 'PUT', 'DELETE'],
                    view_func=view)
Example #4
0
 def add_url_rule(self, rule: str, view: MethodView):
     self.__app.add_url_rule(rule,
                             view_func=view.as_view(view.__qualname__))