@ -10,6 +10,7 @@ from api.exceptions import UnknownTicketType
|
||||
from core.models.ticket.ticket import Ticket
|
||||
|
||||
from core.fields.badge import Badge, BadgeField
|
||||
from core.serializers.ticket_category import TicketCategoryBaseSerializer
|
||||
|
||||
|
||||
|
||||
@ -160,6 +161,8 @@ class TicketViewSerializer(TicketModelSerializer):
|
||||
|
||||
assigned_teams = TeamBaseSerializer(many=True)
|
||||
|
||||
category = TicketCategoryBaseSerializer()
|
||||
|
||||
opened_by = UserBaseSerializer()
|
||||
|
||||
subscribed_users = UserBaseSerializer(many=True)
|
||||
|
71
app/core/serializers/ticket_category.py
Normal file
71
app/core/serializers/ticket_category.py
Normal file
@ -0,0 +1,71 @@
|
||||
from rest_framework.reverse import reverse
|
||||
from rest_framework import serializers
|
||||
|
||||
from access.serializers.organization import OrganizationBaseSerializer
|
||||
|
||||
from core.models.ticket.ticket_category import TicketCategory
|
||||
|
||||
|
||||
|
||||
class TicketCategoryBaseSerializer(serializers.ModelSerializer):
|
||||
|
||||
display_name = serializers.SerializerMethodField('get_display_name')
|
||||
|
||||
def get_display_name(self, item):
|
||||
|
||||
return str( item )
|
||||
|
||||
url = serializers.HyperlinkedIdentityField(
|
||||
view_name="v2:_api_v2_ticket_category-detail", format="html"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
|
||||
model = TicketCategory
|
||||
|
||||
fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'name',
|
||||
'url',
|
||||
]
|
||||
|
||||
read_only_fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'name',
|
||||
'url',
|
||||
]
|
||||
|
||||
|
||||
class TicketCategoryModelSerializer(TicketCategoryBaseSerializer):
|
||||
|
||||
|
||||
_urls = serializers.SerializerMethodField('get_url')
|
||||
|
||||
def get_url(self, item):
|
||||
|
||||
return {
|
||||
'_self': reverse("API:_api_v2_ticket_category-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),
|
||||
}
|
||||
|
||||
|
||||
class Meta:
|
||||
|
||||
model = TicketCategory
|
||||
|
||||
fields = '__all__'
|
||||
|
||||
read_only_fields = [
|
||||
'id',
|
||||
'display_name',
|
||||
'created',
|
||||
'modified',
|
||||
'_urls',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class TicketCategoryViewSerializer(TicketCategoryModelSerializer):
|
||||
|
||||
organization = OrganizationBaseSerializer(many=False, read_only=True)
|
@ -1,6 +1,14 @@
|
||||
from api.exceptions import UnknownTicketType
|
||||
from api.viewsets.common import ModelViewSet
|
||||
|
||||
from assistance.serializers.request import (
|
||||
RequestAddTicketModelSerializer,
|
||||
RequestChangeTicketModelSerializer,
|
||||
RequestTriageTicketModelSerializer,
|
||||
RequestImportTicketModelSerializer,
|
||||
RequestTicketModelSerializer,
|
||||
RequestTicketViewSerializer
|
||||
)
|
||||
from core.serializers.ticket import (
|
||||
Ticket,
|
||||
)
|
||||
|
79
app/core/viewsets/ticket_category.py
Normal file
79
app/core/viewsets/ticket_category.py
Normal file
@ -0,0 +1,79 @@
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse
|
||||
|
||||
from api.viewsets.common import ModelViewSet
|
||||
|
||||
from core.serializers.ticket_category import (
|
||||
TicketCategory,
|
||||
TicketCategoryModelSerializer,
|
||||
TicketCategoryViewSerializer
|
||||
)
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
create=extend_schema(
|
||||
summary = 'Create a ticket category',
|
||||
description='',
|
||||
responses = {
|
||||
201: OpenApiResponse(description='Created', response=TicketCategoryViewSerializer),
|
||||
403: OpenApiResponse(description='User is missing add permissions'),
|
||||
}
|
||||
),
|
||||
destroy = extend_schema(
|
||||
summary = 'Delete a ticket category',
|
||||
description = '',
|
||||
responses = {
|
||||
204: OpenApiResponse(description=''),
|
||||
403: OpenApiResponse(description='User is missing delete permissions'),
|
||||
}
|
||||
),
|
||||
list = extend_schema(
|
||||
summary = 'Fetch all ticket categories',
|
||||
description='',
|
||||
responses = {
|
||||
200: OpenApiResponse(description='', response=TicketCategoryViewSerializer),
|
||||
403: OpenApiResponse(description='User is missing view permissions'),
|
||||
}
|
||||
),
|
||||
retrieve = extend_schema(
|
||||
summary = 'Fetch a single ticket category',
|
||||
description='',
|
||||
responses = {
|
||||
200: OpenApiResponse(description='', response=TicketCategoryViewSerializer),
|
||||
403: OpenApiResponse(description='User is missing view permissions'),
|
||||
}
|
||||
),
|
||||
update = extend_schema(exclude = True),
|
||||
partial_update = extend_schema(
|
||||
summary = 'Update a ticket category',
|
||||
description = '',
|
||||
responses = {
|
||||
200: OpenApiResponse(description='', response=TicketCategoryViewSerializer),
|
||||
403: OpenApiResponse(description='User is missing change permissions'),
|
||||
}
|
||||
),
|
||||
)
|
||||
class ViewSet(ModelViewSet):
|
||||
|
||||
filterset_fields = [
|
||||
'organization',
|
||||
]
|
||||
|
||||
search_fields = [
|
||||
'name',
|
||||
]
|
||||
|
||||
model = TicketCategory
|
||||
|
||||
|
||||
def get_serializer_class(self):
|
||||
|
||||
if (
|
||||
self.action == 'list'
|
||||
or self.action == 'retrieve'
|
||||
):
|
||||
|
||||
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
|
||||
|
||||
|
||||
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
|
@ -50,6 +50,10 @@ class Index(CommonViewSet):
|
||||
{
|
||||
"name": "External Links",
|
||||
"model": "external_link"
|
||||
},
|
||||
{
|
||||
"name": "Ticket Category",
|
||||
"model": "ticket_category"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -119,6 +123,7 @@ class Index(CommonViewSet):
|
||||
"project_state": reverse('v2:_api_v2_project_state-list', request=request),
|
||||
"project_type": reverse('v2:_api_v2_project_type-list', request=request),
|
||||
"software_category": reverse('v2:_api_v2_software_category-list', request=request),
|
||||
"ticket_category": reverse('v2:_api_v2_ticket_category-list', request=request),
|
||||
"user_settings": reverse(
|
||||
'v2:_api_v2_user_settings-detail',
|
||||
request=request,
|
||||
|
Reference in New Issue
Block a user