refactor(core): move get_url to common serializer

reduces duplicated code

ref: #602 #605
This commit is contained in:
2025-02-16 02:44:31 +09:30
parent 460bf40175
commit 7cd4cb965b
29 changed files with 158 additions and 575 deletions

View File

@ -53,9 +53,15 @@ class TeamUserModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request )
}
get_url = super().get_url( item = item )
del get_url['history']
del get_url['knowledge_base']
del get_url['notes']
return get_url
class Meta:

View File

@ -61,24 +61,9 @@ class TeamModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_organization_team_note-list",
request=self._context['view'].request,
kwargs={
'organization_id': item.organization.pk,
'model_id': item.pk
}
),
get_url = super().get_url( item = item )
get_url.update({
'users': reverse(
'v2:_api_v2_organization_team_user-list',
request=self.context['view'].request,
@ -87,7 +72,10 @@ class TeamModelSerializer(
'team_id': item.pk
}
)
}
})
return get_url
team_name = centurion_field.CharField( autolink = True )

View File

@ -1,11 +1,12 @@
from rest_framework import serializers
from rest_framework.reverse import reverse
from access.serializers.organization import Organization, OrganizationBaseSerializer
from access.serializers.organization import Organization
from core import fields as centurion_field
from settings.models.app_settings import AppSettings
class OrganizationField(serializers.PrimaryKeyRelatedField):
@ -50,4 +51,36 @@ class CommonModelSerializer(CommonBaseSerializer):
model_notes = centurion_field.MarkdownField( required = False )
organization = OrganizationField(required = False)
organization = OrganizationField(required = False)
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request = self._context['view'].request,
kwargs = {
'app_label': self.Meta.model._meta.app_label,
'model_name': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_operating_system_note-list",
request = self._context['view'].request,
kwargs = {
'model_id': item.pk
}
),
}

View File

@ -63,19 +63,15 @@ class KnowledgeBaseModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
get_url = super().get_url( item = item )
del get_url['knowledge_base']
get_url.update({
'category': reverse(
'v2:_api_v2_knowledge_base_category-list',
request=self.context['view'].request,
),
'notes': reverse(
"v2:_api_v2_knowledge_base_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'organization': reverse(
'v2:_api_v2_organization-list',
request=self.context['view'].request,
@ -91,7 +87,10 @@ class KnowledgeBaseModelSerializer(
'v2:_api_v2_user-list',
request=self.context['view'].request,
)
}
})
return get_url
content = centurion_field.MarkdownField( required = False, style_class = 'large' )

View File

@ -61,15 +61,9 @@ class KnowledgeBaseCategoryModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'notes': reverse(
"v2:_api_v2_knowledge_base_category_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
get_url = super().get_url( item = item )
get_url.update({
'organization': reverse(
'v2:_api_v2_organization-list',
request=self.context['view'].request,
@ -85,7 +79,10 @@ class KnowledgeBaseCategoryModelSerializer(
'v2:_api_v2_user-list',
request=self.context['view'].request,
)
}
})
return get_url
class Meta:

View File

@ -64,16 +64,9 @@ class ConfigGroupModelSerializer(
def get_url(self, item) -> dict:
request = None
get_url = super().get_url( item = item )
if 'view' in self._context:
if hasattr(self._context['view'], 'request'):
request = self._context['view'].request
return {
'_self': item.get_url( request = request ),
get_url.update({
'child_groups': reverse(
'v2:_api_v2_config_group_child-list',
request = self.context['view'].request,
@ -92,21 +85,6 @@ class ConfigGroupModelSerializer(
'config_group_id': item.pk
}
),
'notes': reverse(
"v2:_api_v2_config_group_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'organization': reverse(
'v2:_api_v2_organization-list',
request=self.context['view'].request,
@ -123,7 +101,10 @@ class ConfigGroupModelSerializer(
'item_id': item.pk
}
),
}
})
return get_url
rendered_config = serializers.JSONField( source = 'render_config', read_only=True )

View File

@ -60,14 +60,22 @@ class ConfigGroupSoftwareModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
get_url = super().get_url( item = item )
del get_url['history']
del get_url['knowledge_base']
del get_url['notes']
get_url.update({
'organization': reverse(
'v2:_api_v2_organization-list',
request=self.context['view'].request,
),
'softwareversion': 'ToDo',
}
})
return get_url
class Meta:

View File

@ -49,35 +49,6 @@ class ManufacturerModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_manufacturer_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
class Meta:

View File

@ -49,20 +49,6 @@ class TicketCategoryModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
}
class Meta:

View File

@ -49,20 +49,6 @@ class TicketCommentCategoryModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
}
class Meta:

View File

@ -51,7 +51,7 @@ class DeviceBaseSerializer(serializers.ModelSerializer):
class DeviceModelSerializer(
common.CommonModelSerializer,
DeviceBaseSerializer
DeviceBaseSerializer,
):
_urls = serializers.SerializerMethodField('get_url')
@ -60,40 +60,13 @@ class DeviceModelSerializer(
request = None
if 'view' in self._context:
get_url = super().get_url( item = item )
if hasattr(self._context['view'], 'request'):
get_url.update({
request = self._context['view'].request
return {
'_self': item.get_url( request = request ),
'device_model': reverse("v2:_api_v2_device_model-list", request=self._context['view'].request),
'device_type': reverse("v2:_api_v2_device_type-list", request=self._context['view'].request),
'external_links': reverse("v2:_api_v2_external_link-list", request=self._context['view'].request) + '?devices=true',
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_device_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'operating_system': reverse("v2:_api_v2_device_operating_system-list", request=self._context['view'].request, kwargs={'device_id': item.pk}),
'service': reverse("v2:_api_v2_service_device-list", request=self._context['view'].request, kwargs={'device_id': item.pk}),
'software': reverse("v2:_api_v2_device_software-list", request=self._context['view'].request, kwargs={'device_id': item.pk}),
@ -105,7 +78,9 @@ class DeviceModelSerializer(
'item_id': item.pk
}
)
}
})
return get_url
context = serializers.SerializerMethodField('get_cont')

View File

@ -52,26 +52,6 @@ class DeviceModelModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, obj) -> dict:
return {
'_self': obj.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': obj.pk
}
),
'notes': reverse(
"v2:_api_v2_device_model_note-list",
request=self._context['view'].request,
kwargs={
'model_id': obj.pk
}
),
}
class Meta:

View File

@ -60,22 +60,32 @@ class DeviceOperatingSystemModelSerializer(
def get_url(self, obj) -> dict:
get_url = super().get_url( item = item )
del get_url['history']
del get_url['knowledge_base']
del get_url['notes']
if self._context.get('view', None):
if self.context['view'].kwargs.get('device_id'):
return {
get_url.update({
'_self': obj.get_url( request = self._context['view'].request )
}
})
elif self.context['view'].kwargs.get('operating_system_id'):
return {
get_url.update({
'_self': reverse("v2:_api_v2_operating_system_installs-detail", request = self._context['view'].request, kwargs = {
'operating_system_id': obj.operating_system_version.operating_system.pk,
'pk': obj.pk
} )
}
})
return get_url

View File

@ -60,22 +60,32 @@ class DeviceSoftwareModelSerializer(
def get_url(self, obj) -> dict:
if 'view' in self._context:
get_url = super().get_url( item = item )
del get_url['history']
del get_url['knowledge_base']
del get_url['notes']
if 'view' in self._context:
if 'software_id' in self._context['view'].kwargs:
return {
get_url.update({
'_self': reverse("v2:_api_v2_software_installs-detail", request = self._context['view'].request, kwargs = {
'software_id': obj.software.pk,
'pk': obj.pk
} )
}
})
elif 'device_id' in self._context['view'].kwargs:
return {
get_url.update({
'_self': obj.get_url( request = self._context['view'].request )
}
})
return get_url

View File

@ -48,27 +48,6 @@ class DeviceTypeModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, obj) -> dict:
return {
'_self': obj.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': obj.pk
}
),
'notes': reverse(
"v2:_api_v2_device_type_note-list",
request=self._context['view'].request,
kwargs={
'model_id': obj.pk
}
),
}
class Meta:

View File

@ -55,33 +55,10 @@ class OperatingSystemModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
get_url = super().get_url( item = item )
get_url.update({
'installations': reverse("v2:_api_v2_operating_system_installs-list", request=self._context['view'].request, kwargs={'operating_system_id': item.pk}),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_operating_system_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'tickets': reverse(
"v2:_api_v2_item_tickets-list",
request=self._context['view'].request,
@ -91,7 +68,9 @@ class OperatingSystemModelSerializer(
}
),
'version': reverse("v2:_api_v2_operating_system_version-list", request=self._context['view'].request, kwargs={'operating_system_id': item.pk}),
}
})
return get_url

View File

@ -58,38 +58,6 @@ class OperatingSystemVersionModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_operating_system_version_note-list",
request=self._context['view'].request,
kwargs={
'operating_system_id': item.operating_system.id,
'model_id': item.pk
}
),
'tickets': 'ToDo'
}
class Meta:

View File

@ -53,33 +53,11 @@ class SoftwareModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
get_url = super().get_url( item = item )
get_url.update({
'external_links': reverse("v2:_api_v2_external_link-list", request=self._context['view'].request) + '?software=true',
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'installations': reverse("v2:_api_v2_software_installs-list", request=self._context['view'].request, kwargs={'software_id': item.pk}),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_software_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'publisher': reverse("v2:_api_v2_manufacturer-list", request=self._context['view'].request),
'services': 'ToDo',
'version': reverse(
@ -97,7 +75,10 @@ class SoftwareModelSerializer(
'item_id': item.pk
}
)
}
})
return get_url
def get_rendered_config(self, item) -> dict:

View File

@ -50,28 +50,6 @@ class SoftwareCategoryModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': 'ToDo',
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_software_category_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
def get_rendered_config(self, item) -> dict:

View File

@ -52,37 +52,6 @@ class SoftwareVersionModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_software_version_note-list",
request=self._context['view'].request,
kwargs={
'software_id': item.software.pk,
'model_id': item.pk
}
),
'tickets': 'ToDo'
}
class Meta:

View File

@ -52,32 +52,10 @@ class ClusterModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
get_url = super().get_url( item = item )
get_url.update({
'external_links': reverse("v2:_api_v2_external_link-list", request=self._context['view'].request) + '?cluster=true',
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_cluster_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'service': reverse("v2:_api_v2_service_cluster-list", request=self._context['view'].request, kwargs={'cluster_id': item.pk}),
'tickets': reverse(
"v2:_api_v2_item_tickets-list",
@ -87,7 +65,10 @@ class ClusterModelSerializer(
'item_id': item.pk
}
)
}
})
return get_url
rendered_config = serializers.JSONField( read_only = True)

View File

@ -49,35 +49,6 @@ class ClusterTypeModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_cluster_type_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
class Meta:

View File

@ -52,35 +52,6 @@ class PortModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_port_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
class Meta:

View File

@ -54,32 +54,10 @@ class ServiceModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
get_url = super().get_url( item = item )
get_url.update({
'external_links': reverse("v2:_api_v2_external_link-list", request=self._context['view'].request) + '?service=true',
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_service_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'tickets': reverse(
"v2:_api_v2_item_tickets-list",
request=self._context['view'].request,
@ -88,7 +66,10 @@ class ServiceModelSerializer(
'item_id': item.pk
}
)
}
})
return get_url
rendered_config = serializers.JSONField( source='config_variables', read_only = True )

View File

@ -56,32 +56,10 @@ class ProjectModelSerializer(ProjectBaseSerializer):
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
get_url = super().get_url( item = item )
get_url.update({
'milestone': reverse("v2:_api_v2_project_milestone-list", request=self._context['view'].request, kwargs={'project_id': item.pk}),
'notes': reverse(
"v2:_api_v2_project_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
'tickets': reverse(
"v2:_api_v2_ticket_project_task-list",
request=self._context['view'].request,
@ -89,7 +67,10 @@ class ProjectModelSerializer(ProjectBaseSerializer):
'project_id': item.pk
}
),
}
})
return get_url
description = centurion_field.MarkdownField( required = False, style_class = 'large' )
completed = serializers.CharField( source = 'percent_completed', read_only = True )

View File

@ -54,28 +54,6 @@ class ProjectMilestoneModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_project_milestone_note-list",
request=self._context['view'].request,
kwargs={
'project_id': item.project.pk,
'model_id': item.pk
}
),
}
class Meta:

View File

@ -52,27 +52,6 @@ class ProjectStateModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_project_state_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
class Meta:

View File

@ -53,24 +53,10 @@ class ProjectTypeModelSerializer(
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_project_type_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
get_url = super().get_url( item = item )
return get_url
class Meta:

View File

@ -49,35 +49,6 @@ class ExternalLinkModelSerializer(
_urls = serializers.SerializerMethodField('get_url')
def get_url(self, item) -> dict:
return {
'_self': item.get_url( request = self._context['view'].request ),
'history': reverse(
"v2:_api_v2_model_history-list",
request=self._context['view'].request,
kwargs={
'model_class': self.Meta.model._meta.model_name,
'model_id': item.pk
}
),
'knowledge_base': reverse(
"v2:_api_v2_model_kb-list",
request=self._context['view'].request,
kwargs={
'model': self.Meta.model._meta.model_name,
'model_pk': item.pk
}
),
'notes': reverse(
"v2:_api_v2_external_link_note-list",
request=self._context['view'].request,
kwargs={
'model_id': item.pk
}
),
}
class Meta: