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)
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')) ]
def setUp(self): self.router = ExtendedDefaultRouter()
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',
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,
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
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)),
# 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
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',
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')
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)), ]