示例#1
0
class ExtendedDefaultRouterTestBehaviour(APITestCase):
    router = ExtendedDefaultRouter()
    # nested routes
    (router.register(r'users', UserViewSet).register(
        r'groups',
        GroupViewSet,
        'users-group',
        parents_query_lookups=['user_groups']).register(
            r'permissions',
            PermissionViewSet,
            'users-groups-permission',
            parents_query_lookups=['group__user', 'group']))
    # simple routes
    router.register(r'groups', GroupViewSet, 'group')
    router.register(r'permissions', PermissionViewSet, 'permission')

    urls = tuple(router.urls)

    def test_index_page(self):
        try:
            response = self.client.get('/')
        except NoReverseMatch:
            issue = 'https://github.com/chibisov/drf-extensions/issues/14'
            self.fail(
                'DefaultRouter tries to reverse nested routes and breaks with error. NoReverseMatch should be '
                'handled for nested routes. They must be excluded from index page. '
                + issue)
        self.assertEqual(response.status_code, 200)

        expected = {
            'users': 'http://testserver/users/',
            'groups': 'http://testserver/groups/',
            'permissions': 'http://testserver/permissions/',
        }
        self.assertEqual(response.data, expected)
示例#2
0
from django.urls import include, path
from django.contrib import admin
# from rest_framework import routers
from tutorial.quickstart import views
from tutorial.quickstart.router import SwitchDetailRouter
from rest_framework_extensions.routers import ExtendedDefaultRouter
from tutorial.quickstart.views import FollowViewSet

switch_router = SwitchDetailRouter()
router = ExtendedDefaultRouter()
user_router = router.register(r'users', views.UserViewSet)

user_router.register('tweets', views.UserTweetViewSet, 'user-tweets',
                     ['username'])
user_router.register('follows', views.UserFollowsViewSet, 'user-follows',
                     ['username'])
user_router.register('followed', views.UserFollowedViewSet, 'user-followers',
                     ['username'])

router.register(r'tweets', views.TweetViewSet)
switch_router.register(r'follow', FollowViewSet)
router.register(r'feed', views.FeedViewSet)

urlpatterns = [
    path('v1/', include(switch_router.urls)),
    path('v1/', include(router.urls)),
    path('admin/', admin.site.urls),
    path('api-auth/', include('rest_framework.urls',
                              namespace='rest_framework'))
]
示例#3
0
 def setUp(self):
     self.router = ExtendedDefaultRouter()
示例#4
0
from django.conf import settings
from django.conf.urls import url, include
from rest_framework_extensions.routers import ExtendedDefaultRouter

import userprofile.api.views
import course.api.views
import exercise.api.views
import exercise.api.csv.views
import external_services.api.views

api = ExtendedDefaultRouter()

api.register(r'users', userprofile.api.views.UserViewSet, basename='user')

with api.register(r'courses',
                  course.api.views.CourseViewSet,
                  basename='course') as courses:
    courses.register(r'exercises',
                     course.api.views.CourseExercisesViewSet,
                     basename='course-exercises')
    courses.register(r'students',
                     course.api.views.CourseStudentsViewSet,
                     basename='course-students')
    courses.register(r'usertags',
                     course.api.views.CourseUsertagsViewSet,
                     basename='course-usertags')
    courses.register(r'taggings',
                     course.api.views.CourseUsertaggingsViewSet,
                     basename='course-taggings')
    courses.register(r'points',
                     exercise.api.views.CoursePointsViewSet,
from kpi.views.v2.asset_file import AssetFileViewSet
from kpi.views.v2.asset_permission_assignment import AssetPermissionAssignmentViewSet
from kpi.views.v2.asset_snapshot import AssetSnapshotViewSet
from kpi.views.v2.asset_version import AssetVersionViewSet
from kpi.views.v2.data import DataViewSet
from kpi.views.v2.export_task import ExportTaskViewSet
from kpi.views.v2.user_asset_subscription import UserAssetSubscriptionViewSet

from kpi.views.v2.permission import PermissionViewSet
from kpi.views.v2.user import UserViewSet
from kpi.views.v2.import_task import ImportTaskViewSet


URL_NAMESPACE = 'api_v2'

router_api_v2 = ExtendedDefaultRouter()
asset_routes = router_api_v2.register(r'assets', AssetViewSet, basename='asset')

asset_routes.register(r'files',
                      AssetFileViewSet,
                      basename='asset-file',
                      parents_query_lookups=['asset'],
                      )

asset_routes.register(r'permission-assignments',
                      AssetPermissionAssignmentViewSet,
                      basename='asset-permission-assignment',
                      parents_query_lookups=['asset'],
                      )

asset_routes.register(r'versions',
示例#6
0
from rest_framework_extensions.routers import ExtendedDefaultRouter

from hikster.hike.views import (
    EventTrailSectionViewSet,
    EventViewSet,
    Trail3DViewSet,
    TrailSectionViewSet,
    TrailViewSet,
)
from hikster.location.views import LocationViewSet, PointOfInterestViewSet
from hikster.mailing.views import ReservationMailView
from hikster.organizations.views import OrganizationViewSet
from hikster.search.views import SearchView


trail_routes = ExtendedDefaultRouter()
trail_routes.register(r"trails", TrailViewSet, basename="trail")


trail3d_routes = ExtendedDefaultRouter()
trail3d_routes.register(r"3d-trails", Trail3DViewSet, basename="trail-3d")


location_routes = ExtendedDefaultRouter()

location_routes.register(
    r"locations", LocationViewSet,
    basename="location"
).register(
    r"trails",
    TrailViewSet,
示例#7
0
from django.conf.urls import url
from rest_framework_extensions.routers import ExtendedDefaultRouter

from api import views

router = ExtendedDefaultRouter(trailing_slash=False)
router.register("products", views.ProductViewSet, base_name="product")
router.register("rfes", views.RFEViewSet, base_name="rfe")
router.register("tests", views.TestViewSet, base_name="test_id")
router.register("job_results", views.JobResultViewSet, base_name="job_result")
router.register("upload", views.FileUploadView, base_name="file_upload")

urlpatterns = [
    url(r'^view/products$', views.view_products),
]

urlpatterns += router.urls
示例#8
0
from django.conf.urls import url, include
# Create a router and register our viewsets with it.
from .generator import views as generator_views
from .switch import views as switch_views
from rest_framework_extensions.routers import ExtendedDefaultRouter

nested_router = ExtendedDefaultRouter()

nested_router.register(r'generators',
                       generator_views.GeneratorViewSet,
                       base_name='generator')\
             .register(r'streams',
                       generator_views.StreamViewSet,
                       base_name='stream',
                       parents_query_lookups=['generator_pk'])\
             .register(r'protocols',
                       generator_views.ProtocolViewSet,
                       base_name='protocol',
                       parents_query_lookups=['generator_pk', 'stream_pk'])


nested_router.register(r'switches',
                       switch_views.SwitchViewSet,
                       base_name='switch')\
             .register(r'vlans',
                       switch_views.VLANViewSet,
                       base_name='vlan',
                       parents_query_lookups=['switch_pk'])

urlpatterns = [
    url(r'^', include(nested_router.urls)),
示例#9
0
# coding=utf-8
from django.conf.urls import url
from rest_framework_extensions.routers import ExtendedDefaultRouter

from ins.user.views import UserViewSet, NotifyViewSet
from ins.social.views import InsViewSet, CommentViewSet
from ins.social.views import list_ins_from_tag, get_temp_cos_token

router = ExtendedDefaultRouter(trailing_slash=True)
(router.register(r'users', UserViewSet,
                 base_name='users').register(r'ins',
                                             InsViewSet,
                                             base_name='ins',
                                             parents_query_lookups=['uuid']),
 router.register(r'users', UserViewSet,
                 base_name='users').register(r'notifies',
                                             NotifyViewSet,
                                             base_name='notifies',
                                             parents_query_lookups=['uuid']),
 router.register(r'ins', InsViewSet,
                 base_name='ins').register(r'comments',
                                           CommentViewSet,
                                           base_name='comment',
                                           parents_query_lookups=['uuid']))

custom_url = [
    url(r'^tags/(?P<pk>[0-9]+)/ins$', list_ins_from_tag),
    url(r'^temp_cos_token$', get_temp_cos_token),
]

urlpatterns = router.urls + custom_url
示例#10
0
from rest_framework_extensions.routers import ExtendedDefaultRouter

from people import viewsets as people_viewsets
from events import viewsets as events_viewsets
from groups import viewsets as groups_viewsets
from clients import viewsets as clients_viewsets

legacy_api = ExtendedDefaultRouter()

# people routes
legacy_api.register('people', people_viewsets.LegacyPersonViewSet)
legacy_api.register('people_tags', people_viewsets.PersonTagViewSet)

# events route
events_route = legacy_api.register('events',
                                   events_viewsets.LegacyEventViewSet,
                                   base_name='event')
legacy_api.register('calendars', events_viewsets.CalendarViewSet)
legacy_api.register('event_tags', events_viewsets.EventTagViewSet)
legacy_api.register('rsvps', events_viewsets.RSVPViewSet)
events_route.register('rsvps',
                      events_viewsets.NestedRSVPViewSet,
                      base_name='events-rsvps',
                      parents_query_lookups=['event'])

# groups routes
groups_route = legacy_api.register('groups',
                                   groups_viewsets.LegacySupportGroupViewSet)
legacy_api.register('group_tags', groups_viewsets.SupportGroupTagViewSet)
legacy_api.register('memberships', groups_viewsets.MembershipViewSet)
groups_route.register('memberships',
示例#11
0
class ContentView(ExtendViewSetMixin, APIView):

    permission_classes = []

    @cross_domain
    def get(self, request, uid, *args, **kwargs):
        content = Content.objects.filter(uid=uid, entity=settings.AGENT['entity']).first()
        if content:
            return sendfile(request, filename=os.path.join(settings.MEDIA_ROOT, content.uid))
        else:
            return Response(f'Not Found', status=404)


# Maintenance subsystem
# URL pattern: /maintenance
MaintenanceRouter = ExtendedDefaultRouter()
MaintenanceRouter.register(r'maintenance', MaintenanceViewSet, 'maintenance')

# Ledgers subsystem
# URL pattern: /ledgers
LedgersRouter = ExtendedDefaultRouter()
ledgers_router = LedgersRouter.register(r'ledgers', LedgerViewSet, 'ledgers')
# URL pattern: /ledgers/transactions
ledgers_router.register(r'transactions', TransactionViewSet, 'ledger-txns', parents_query_lookups=['ledger'])

# GU-11 & GU-12
GU11Router = ExtendedDefaultRouter()
GU11Router.register(r'gu-11', GU11ViewSet, 'gu-11')
GU12Router = ExtendedDefaultRouter()
GU12Router.register(r'gu-12', GU12ViewSet, 'gu-12')
示例#12
0
文件: urls.py 项目: txsl/bookr
from django.conf.urls import include, url
from rest_framework_extensions.routers import ExtendedDefaultRouter
from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token
from . import views

bookings_router = ExtendedDefaultRouter()

(bookings_router.register(r'bookables', views.BookableViewSet).register(
    r'booking-parts',
    views.BookingPartViewSet,
    'bookables-bookingpart',
    parents_query_lookups=['bookable']))
(bookings_router.register(r'bookings', views.BookingViewSet).register(
    r'booking-parts',
    views.BookingPartViewSet,
    'bookings-bookingpart',
    parents_query_lookups=['booking']))
bookings_router.register(r'booking-parts', views.BookingPartViewSet)

urlpatterns = [
    url(r'^auth/token/$', obtain_jwt_token),
    url(r'^auth/token/refresh/$', refresh_jwt_token),
    url(r'^user/', views.CurrentUserView.as_view()),
    url(r'^bookings/', include(bookings_router.urls)),
]