refactor(core): move get_url to common serializer
reduces duplicated code ref: #602 #605
This commit is contained in:
@ -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')
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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:
|
||||
|
||||
|
Reference in New Issue
Block a user