Skip to content

Commit

Permalink
Resolves merge
Browse files Browse the repository at this point in the history
  • Loading branch information
rsinger86 committed Jun 7, 2020
2 parents 910607e + f0e0245 commit 2d7fb0f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 3 deletions.
31 changes: 29 additions & 2 deletions rest_typed_views/decorators.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import inspect
from functools import wraps
from typing import Any, Dict, List

from rest_framework.views import APIView
from rest_framework.decorators import action, api_view
from rest_framework.exceptions import ValidationError
from rest_framework.fields import empty
Expand All @@ -20,6 +20,32 @@
from .params import BodyParam, CurrentUserParam, PassThruParam, PathParam, QueryParam, HeaderParam



def wraps_drf(view):
def _wraps_drf(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)

wrapper.__name__ = view.__name__
wrapper.__module__ = view.__module__
wrapper.renderer_classes = getattr(
view, "renderer_classes", APIView.renderer_classes
)
wrapper.parser_classes = getattr(view, "parser_classes", APIView.parser_classes)
wrapper.authentication_classes = getattr(
view, "authentication_classes", APIView.authentication_classes
)
wrapper.throttle_classes = getattr(
view, "throttle_classes", APIView.throttle_classes
)
wrapper.permission_classes = getattr(
view, "permission_classes", APIView.permission_classes
)
return wrapper

return _wraps_drf


def build_explicit_param(
param: inspect.Parameter, request: Request, settings: ParamSettings, path_args: dict
):
Expand Down Expand Up @@ -111,6 +137,7 @@ def wrap_validate_and_render(view):
prevalidate(view)

@api_view(methods)
@wraps_drf(view)
def wrapper(*original_args, **original_kwargs):
original_args = list(original_args)
request = find_request(original_args)
Expand All @@ -129,7 +156,7 @@ def wrap_validate_and_render(view):
prevalidate(view, for_method=True)

@action(**action_kwargs)
@wraps(view)
@wraps_drf(view)
def wrapper(*original_args, **original_kwargs):
original_args = list(original_args)
request = find_request(original_args)
Expand Down
2 changes: 1 addition & 1 deletion test_project/testapp/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import date, datetime, time, timedelta
from decimal import Decimal
from enum import Enum
from typing import List
from typing import List, Optional

import marshmallow
import typesystem
Expand Down
1 change: 1 addition & 0 deletions test_project/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
urlpatterns = [
url(r"^logs/(?P<id>[0-9])/", get_logs, name="get-log-entry"),
url(r"^users/", create_user, name="create-user"),
url(r"^test/", test_view, name="test-view"),
url(r"^bookings/", create_booking, name="create-booking"),
url(r"^test/", test_view, name="test-view"),
url(r"^band-members/", create_band_member, name="create-band-member"),
Expand Down

0 comments on commit 2d7fb0f

Please sign in to comment.