feat(access): Filter entity_model routes to thos defined in Meta.sub_model_type
ref: #732 #704
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
from django.apps import apps
|
||||
from django.urls import include, path
|
||||
|
||||
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
|
||||
@ -136,8 +137,30 @@ router = DefaultRouter(trailing_slash=False)
|
||||
|
||||
router.register('', v2.Index, basename='_api_v2_home')
|
||||
|
||||
entity_type_names = ''
|
||||
|
||||
for model in apps.get_models():
|
||||
|
||||
if issubclass(model, ticket.TicketBase):
|
||||
|
||||
ticket_type_names += model._meta.sub_model_type + '|'
|
||||
|
||||
if issubclass(model, ticket_comment.TicketCommentBase):
|
||||
|
||||
ticket_comment_names += model._meta.sub_model_type + '|'
|
||||
|
||||
|
||||
if issubclass(model, entity.Entity):
|
||||
|
||||
entity_type_names += model._meta.sub_model_type + '|'
|
||||
|
||||
|
||||
|
||||
entity_type_names = str(entity_type_names)[:-1]
|
||||
|
||||
|
||||
router.register('access', access_v2.Index, basename='_api_v2_access_home')
|
||||
router.register('access/entity/(?P<entity_model>[a-z]+)?', entity.ViewSet, feature_flag = '2025-00002', basename='_api_v2_entity_sub')
|
||||
router.register(f'access/entity/(?P<entity_model>[{entity_type_names}]+)?', entity.ViewSet, feature_flag = '2025-00002', basename='_api_v2_entity_sub')
|
||||
router.register('access/entity', entity.NoDocsViewSet, feature_flag = '2025-00002', basename='_api_v2_entity')
|
||||
router.register('access/entity/(?P<model_id>[0-9]+)/notes', entity_notes.ViewSet, feature_flag = '2025-00002', basename='_api_v2_entity_note')
|
||||
|
||||
@ -175,8 +198,8 @@ router.register('(?P<app_label>[a-z_]+)/(?P<model_name>.+)/(?P<model_id>[0-9]+)/
|
||||
router.register('core/ticket/(?P<ticket_model>[a-z_]+)?', ticket.ViewSet, feature_flag = '2025-00002', basename='_api_v2_ticket_sub')
|
||||
router.register('core/ticket', ticket.NoDocsViewSet, basename='_api_v2_ticket')
|
||||
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/comments', ticket_comment.ViewSet, basename='_api_v2_ticket_comment')
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/comments/(?P<parent_id>[0-9]+)/threads', ticket_comment.ViewSet, basename='_api_v2_ticket_comment_threads')
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/comments', ticket_comment_depreciated.ViewSet, basename='_api_v2_ticket_comment')
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/comments/(?P<parent_id>[0-9]+)/threads', ticket_comment_depreciated.ViewSet, basename='_api_v2_ticket_comment_threads')
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/linked_item', ticket_linked_item.ViewSet, basename='_api_v2_ticket_linked_item')
|
||||
router.register('core/ticket/(?P<ticket_id>[0-9]+)/related_ticket', related_ticket.ViewSet, basename='_api_v2_ticket_related')
|
||||
router.register('core/(?P<item_class>[a-z_]+)/(?P<item_id>[0-9]+)/item_ticket', ticket_linked_item.ViewSet, basename='_api_v2_item_tickets')
|
||||
|
Reference in New Issue
Block a user