@ -1,41 +0,0 @@
|
||||
from core.models.manufacturer_notes import ManufacturerNotes
|
||||
|
||||
from core.serializers.model_notes import (
|
||||
ModelNoteBaseSerializer,
|
||||
ModelNoteModelSerializer,
|
||||
ModelNoteViewSerializer
|
||||
)
|
||||
|
||||
|
||||
|
||||
class ManufacturerNoteBaseSerializer(ModelNoteBaseSerializer):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class ManufacturerNoteModelSerializer(
|
||||
ModelNoteModelSerializer
|
||||
):
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
model = ManufacturerNotes
|
||||
|
||||
fields = ModelNoteModelSerializer.Meta.fields + [
|
||||
'model',
|
||||
]
|
||||
|
||||
read_only_fields = ModelNoteModelSerializer.Meta.read_only_fields + [
|
||||
'model',
|
||||
'content_type',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class ManufacturerNoteViewSerializer(
|
||||
ModelNoteViewSerializer,
|
||||
ManufacturerNoteModelSerializer,
|
||||
):
|
||||
|
||||
pass
|
@ -1,148 +0,0 @@
|
||||
from django.contrib.auth.models import ContentType
|
||||
from rest_framework import serializers
|
||||
|
||||
from access.serializers.organization import TenantBaseSerializer
|
||||
|
||||
from api.serializers import common
|
||||
|
||||
from centurion.serializers.user import UserBaseSerializer
|
||||
|
||||
from core.models.model_notes import ModelNotes
|
||||
|
||||
|
||||
|
||||
class ModelNoteBaseSerializer(serializers.ModelSerializer):
|
||||
|
||||
display_name = serializers.SerializerMethodField('get_display_name')
|
||||
|
||||
def get_display_name(self, item) -> str:
|
||||
|
||||
return str( item )
|
||||
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name="v2:_api_v2_device-detail", format="html"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
||||
model = ModelNotes
|
||||
|
||||
fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'name',
|
||||
'url',
|
||||
]
|
||||
|
||||
read_only_fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'name',
|
||||
'url',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class ModelNoteModelSerializer(
|
||||
common.CommonModelSerializer,
|
||||
ModelNoteBaseSerializer
|
||||
):
|
||||
|
||||
|
||||
_urls = serializers.SerializerMethodField('get_url')
|
||||
|
||||
def get_url(self, item) -> dict:
|
||||
|
||||
return {
|
||||
'_self': item.get_url( request = self._context['view'].request ),
|
||||
}
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
model = ModelNotes
|
||||
|
||||
fields = [
|
||||
'id',
|
||||
'organization',
|
||||
'display_name',
|
||||
'content',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
'content_type',
|
||||
'created',
|
||||
'modified',
|
||||
'_urls',
|
||||
]
|
||||
|
||||
read_only_fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'organization',
|
||||
'created_by',
|
||||
'modified_by',
|
||||
'content_type',
|
||||
'created',
|
||||
'modified',
|
||||
'_urls',
|
||||
]
|
||||
|
||||
|
||||
def validate(self, attrs):
|
||||
|
||||
is_valid = False
|
||||
|
||||
if (
|
||||
self._context['view'].action == 'partial_update'
|
||||
or self._context['view'].action == 'update'
|
||||
):
|
||||
|
||||
attrs['modified_by'] = self._context['request'].user
|
||||
|
||||
else:
|
||||
|
||||
related_model = self.fields.fields['model'].context['view'].model.model.field.related_model
|
||||
|
||||
attrs['model_id'] = int(self.fields.fields['model'].context['view'].kwargs['model_id'])
|
||||
|
||||
if str(related_model._meta.model_name).lower() == 'tenant':
|
||||
|
||||
attrs['organization'] = related_model.objects.get(
|
||||
pk = int(self.fields.fields['model'].context['view'].kwargs['model_id'])
|
||||
)
|
||||
elif self.fields.fields.get('organization', None):
|
||||
|
||||
attrs['organization'] = related_model.objects.get(
|
||||
pk = int(self.fields.fields['model'].context['view'].kwargs['model_id'])
|
||||
).organization
|
||||
|
||||
|
||||
|
||||
attrs['content_type'] = ContentType.objects.filter(
|
||||
app_label = related_model._meta.app_label,
|
||||
model = related_model._meta.model_name
|
||||
)[0]
|
||||
|
||||
attrs['created_by'] = self._context['request'].user
|
||||
|
||||
|
||||
is_valid = super().validate(attrs)
|
||||
|
||||
return is_valid
|
||||
|
||||
|
||||
def is_valid(self, *, raise_exception=False) -> bool:
|
||||
|
||||
is_valid = super().is_valid(raise_exception=raise_exception)
|
||||
|
||||
return is_valid
|
||||
|
||||
|
||||
|
||||
class ModelNoteViewSerializer(ModelNoteModelSerializer):
|
||||
|
||||
organization = TenantBaseSerializer( many = False, read_only = True )
|
||||
|
||||
created_by = UserBaseSerializer( many = False, read_only = True )
|
||||
|
||||
modified_by = UserBaseSerializer( many = False, read_only = True )
|
@ -1,41 +0,0 @@
|
||||
from core.models.ticket.ticket_category_notes import TicketCategoryNotes
|
||||
|
||||
from core.serializers.model_notes import (
|
||||
ModelNoteBaseSerializer,
|
||||
ModelNoteModelSerializer,
|
||||
ModelNoteViewSerializer
|
||||
)
|
||||
|
||||
|
||||
|
||||
class TicketCategoryNoteBaseSerializer(ModelNoteBaseSerializer):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class TicketCategoryNoteModelSerializer(
|
||||
ModelNoteModelSerializer
|
||||
):
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
model = TicketCategoryNotes
|
||||
|
||||
fields = ModelNoteModelSerializer.Meta.fields + [
|
||||
'model',
|
||||
]
|
||||
|
||||
read_only_fields = ModelNoteModelSerializer.Meta.read_only_fields + [
|
||||
'model',
|
||||
'content_type',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class TicketCategoryNoteViewSerializer(
|
||||
ModelNoteViewSerializer,
|
||||
TicketCategoryNoteModelSerializer,
|
||||
):
|
||||
|
||||
pass
|
@ -1,41 +0,0 @@
|
||||
from core.models.ticket.ticket_comment_category_notes import TicketCommentCategoryNotes
|
||||
|
||||
from core.serializers.model_notes import (
|
||||
ModelNoteBaseSerializer,
|
||||
ModelNoteModelSerializer,
|
||||
ModelNoteViewSerializer
|
||||
)
|
||||
|
||||
|
||||
|
||||
class TicketCommentCategoryNoteBaseSerializer(ModelNoteBaseSerializer):
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class TicketCommentCategoryNoteModelSerializer(
|
||||
ModelNoteModelSerializer
|
||||
):
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
model = TicketCommentCategoryNotes
|
||||
|
||||
fields = ModelNoteModelSerializer.Meta.fields + [
|
||||
'model',
|
||||
]
|
||||
|
||||
read_only_fields = ModelNoteModelSerializer.Meta.read_only_fields + [
|
||||
'model',
|
||||
'content_type',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class TicketCommentCategoryNoteViewSerializer(
|
||||
ModelNoteViewSerializer,
|
||||
TicketCommentCategoryNoteModelSerializer,
|
||||
):
|
||||
|
||||
pass
|
@ -1,60 +0,0 @@
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
|
||||
|
||||
from core.serializers.manufacturer_notes import (
|
||||
ManufacturerNotes,
|
||||
ManufacturerNoteModelSerializer,
|
||||
ManufacturerNoteViewSerializer,
|
||||
)
|
||||
|
||||
from core.viewsets.model_notes import ModelNoteViewSet
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
create=extend_schema(
|
||||
summary = 'Add a note to a Manufacturer',
|
||||
description = '',
|
||||
responses = {
|
||||
201: OpenApiResponse(description='created', response=ManufacturerNoteViewSerializer),
|
||||
400: OpenApiResponse(description='Validation failed.'),
|
||||
403: OpenApiResponse(description='User is missing create permissions'),
|
||||
}
|
||||
),
|
||||
destroy = extend_schema(
|
||||
summary = 'Delete a Manufacturer note',
|
||||
description = ''
|
||||
),
|
||||
list = extend_schema(
|
||||
summary = 'Fetch all Manufacturer notes',
|
||||
description='',
|
||||
),
|
||||
retrieve = extend_schema(
|
||||
summary = 'Fetch a single Manufacturer note',
|
||||
description='',
|
||||
),
|
||||
update = extend_schema(exclude = True),
|
||||
partial_update = extend_schema(
|
||||
summary = 'Update a Manufacturer note',
|
||||
description = ''
|
||||
),
|
||||
)
|
||||
class ViewSet(ModelNoteViewSet):
|
||||
|
||||
model = ManufacturerNotes
|
||||
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
||||
if (
|
||||
self.action == 'list'
|
||||
or self.action == 'retrieve'
|
||||
):
|
||||
|
||||
self.serializer_class = ManufacturerNoteViewSerializer
|
||||
|
||||
|
||||
else:
|
||||
|
||||
self.serializer_class = ManufacturerNoteModelSerializer
|
||||
|
||||
return self.serializer_class
|
@ -1,61 +0,0 @@
|
||||
from django.contrib.auth.models import ContentType
|
||||
|
||||
from core.serializers.model_notes import ( # pylint: disable=W0611:unused-import
|
||||
ModelNotes,
|
||||
ModelNoteModelSerializer,
|
||||
ModelNoteViewSerializer
|
||||
)
|
||||
|
||||
from api.viewsets.common import ModelViewSet
|
||||
|
||||
|
||||
|
||||
class ModelNoteViewSet(ModelViewSet):
|
||||
"""Base class for Model Notes
|
||||
|
||||
This class is intended not to be used directly. It should be used as an
|
||||
inherited class.
|
||||
|
||||
The inherited class must include the following class objects:
|
||||
|
||||
- get_serializer_class function
|
||||
|
||||
- model attribute containing the notes model for the model to receive notes
|
||||
"""
|
||||
|
||||
filterset_fields = []
|
||||
|
||||
parent_model_pk_kwarg = 'model_id'
|
||||
|
||||
search_fields = [
|
||||
'content',
|
||||
]
|
||||
|
||||
|
||||
view_description = 'Model notes'
|
||||
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
if self.queryset is not None:
|
||||
|
||||
return self.queryset
|
||||
|
||||
self.queryset = self.model.objects.filter(
|
||||
content_type = ContentType.objects.get(
|
||||
app_label = str(self.model._meta.app_label).lower(),
|
||||
model = str(self.model.model.field.related_model.__name__).replace(' ', '').lower()
|
||||
).id,
|
||||
model = int(self.kwargs['model_id'])
|
||||
)
|
||||
|
||||
return self.queryset
|
||||
|
||||
|
||||
def get_parent_model(self):
|
||||
|
||||
if self.parent_model is None:
|
||||
|
||||
self.parent_model = self.model.model.field.related_model
|
||||
|
||||
return self.parent_model
|
@ -1,60 +0,0 @@
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
|
||||
|
||||
from core.serializers.ticket_category_notes import (
|
||||
TicketCategoryNotes,
|
||||
TicketCategoryNoteModelSerializer,
|
||||
TicketCategoryNoteViewSerializer,
|
||||
)
|
||||
|
||||
from core.viewsets.model_notes import ModelNoteViewSet
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
create=extend_schema(
|
||||
summary = 'Add a note to a Ticket Category',
|
||||
description = '',
|
||||
responses = {
|
||||
201: OpenApiResponse(description='created', response=TicketCategoryNoteViewSerializer),
|
||||
400: OpenApiResponse(description='Validation failed.'),
|
||||
403: OpenApiResponse(description='User is missing create permissions'),
|
||||
}
|
||||
),
|
||||
destroy = extend_schema(
|
||||
summary = 'Delete a Ticket Category note',
|
||||
description = ''
|
||||
),
|
||||
list = extend_schema(
|
||||
summary = 'Fetch all Ticket Category notes',
|
||||
description='',
|
||||
),
|
||||
retrieve = extend_schema(
|
||||
summary = 'Fetch a single Ticket Category note',
|
||||
description='',
|
||||
),
|
||||
update = extend_schema(exclude = True),
|
||||
partial_update = extend_schema(
|
||||
summary = 'Update a Ticket Category note',
|
||||
description = ''
|
||||
),
|
||||
)
|
||||
class ViewSet(ModelNoteViewSet):
|
||||
|
||||
model = TicketCategoryNotes
|
||||
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
||||
if (
|
||||
self.action == 'list'
|
||||
or self.action == 'retrieve'
|
||||
):
|
||||
|
||||
self.serializer_class = TicketCategoryNoteViewSerializer
|
||||
|
||||
|
||||
else:
|
||||
|
||||
self.serializer_class = TicketCategoryNoteModelSerializer
|
||||
|
||||
return self.serializer_class
|
@ -1,60 +0,0 @@
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
|
||||
|
||||
from core.serializers.ticket_comment_category_notes import (
|
||||
TicketCommentCategoryNotes,
|
||||
TicketCommentCategoryNoteModelSerializer,
|
||||
TicketCommentCategoryNoteViewSerializer,
|
||||
)
|
||||
|
||||
from core.viewsets.model_notes import ModelNoteViewSet
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
create=extend_schema(
|
||||
summary = 'Add a note to a Ticket Comment Category',
|
||||
description = '',
|
||||
responses = {
|
||||
201: OpenApiResponse(description='created', response=TicketCommentCategoryNoteViewSerializer),
|
||||
400: OpenApiResponse(description='Validation failed.'),
|
||||
403: OpenApiResponse(description='User is missing create permissions'),
|
||||
}
|
||||
),
|
||||
destroy = extend_schema(
|
||||
summary = 'Delete a Ticket Comment Category note',
|
||||
description = ''
|
||||
),
|
||||
list = extend_schema(
|
||||
summary = 'Fetch all Ticket Comment Category notes',
|
||||
description='',
|
||||
),
|
||||
retrieve = extend_schema(
|
||||
summary = 'Fetch a single Ticket Comment Category note',
|
||||
description='',
|
||||
),
|
||||
update = extend_schema(exclude = True),
|
||||
partial_update = extend_schema(
|
||||
summary = 'Update a Ticket Comment Category note',
|
||||
description = ''
|
||||
),
|
||||
)
|
||||
class ViewSet(ModelNoteViewSet):
|
||||
|
||||
model = TicketCommentCategoryNotes
|
||||
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
||||
if (
|
||||
self.action == 'list'
|
||||
or self.action == 'retrieve'
|
||||
):
|
||||
|
||||
self.serializer_class = TicketCommentCategoryNoteViewSerializer
|
||||
|
||||
|
||||
else:
|
||||
|
||||
self.serializer_class = TicketCommentCategoryNoteModelSerializer
|
||||
|
||||
return self.serializer_class
|
Reference in New Issue
Block a user