Как обернуть пользовательские конечные точки в Django Tastypie?

Я хочу добавить метод dispatch к некоторому ресурсу, чтобы я мог использовать декоратор-обертку на нем. Проблема в том, что он работает только на CRUD-операциях и не переходит в метод отправки на "оригинальных" конечных точках:

class SomeResource(SomeBaseResource):
    class Meta(...): ...
    
    def get_something_extra(self, request, **kwargs):
        ...

    def patch_detail(self, request, **kwargs):
        ...

и базовый ресурс:

class SomeBaseResource(ModelResource):
    class Meta(...): ...
    
    # the wrapper
    @sheker_to_wrap_all_methods_with(...)
    def dispatch(self, request_type, request, **kwargs):
         logger.info('Enter')
         response = super(SomeBaseResource, self).dispatch(request_type, request, **kwargs)
         logger.info('Exit')
         return response

Когда я использую запрос патча, он работает как ожидалось, но не работает при вызове get_something_extra api.

Как обернуть ВСЕ методы в ресурс?

Обходным решением является добавление Middleware:

MIDDLEWARE = (
'my.basic.BaseMiddleware',
...
)

class BaseMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    @decorator_to_wrap_all_methods_with(...)
    def __call__(self, request):
        response = self.get_response(request)
        return response
Вернуться на верх