chore(api): Correct DRF Swagger Docs errors

ref: #248 #361 #383
This commit is contained in:
2024-11-08 21:03:38 +09:30
parent e196033821
commit cd0bcf6731
54 changed files with 622 additions and 105 deletions

View File

@ -12,7 +12,7 @@ class OrganizationBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class OrganizationModelSerializer(OrganizationBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_organization-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_organization-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -12,13 +12,13 @@ class TeamUserBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_organization_team_user-detail", "v2:_api_v2_organization_team_user-detail",
@ -53,7 +53,7 @@ class TeamUserModelSerializer(TeamUserBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -14,13 +14,13 @@ class TeamBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_organization_team-detail", "v2:_api_v2_organization_team-detail",
@ -57,7 +57,7 @@ class TeamModelSerializer(TeamBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from access.serializers.teams import ( from access.serializers.teams import (
Team, Team,
@ -15,6 +15,13 @@ from api.viewsets.common import ModelViewSet
create=extend_schema( create=extend_schema(
summary = 'Create a team within this organization', summary = 'Create a team within this organization',
description='', description='',
parameters = [
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='Allready exists', response=TeamViewSerializer), 200: OpenApiResponse(description='Allready exists', response=TeamViewSerializer),
201: OpenApiResponse(description='Created', response=TeamViewSerializer), 201: OpenApiResponse(description='Created', response=TeamViewSerializer),
@ -25,6 +32,18 @@ from api.viewsets.common import ModelViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a team from this organization', summary = 'Delete a team from this organization',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -33,6 +52,13 @@ from api.viewsets.common import ModelViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all teams from this organization', summary = 'Fetch all teams from this organization',
description='', description='',
parameters = [
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamViewSerializer), 200: OpenApiResponse(description='', response=TeamViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -41,6 +67,18 @@ from api.viewsets.common import ModelViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single team from this organization', summary = 'Fetch a single team from this organization',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamViewSerializer), 200: OpenApiResponse(description='', response=TeamViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -50,6 +88,18 @@ from api.viewsets.common import ModelViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a team within this organization', summary = 'Update a team within this organization',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamViewSerializer), 200: OpenApiResponse(description='', response=TeamViewSerializer),
# 201: OpenApiResponse(description='Created', response=OrganizationViewSerializer), # 201: OpenApiResponse(description='Created', response=OrganizationViewSerializer),

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from access.serializers.team_user import ( from access.serializers.team_user import (
TeamUsers, TeamUsers,
@ -14,6 +14,18 @@ from api.viewsets.common import ModelViewSet
create=extend_schema( create=extend_schema(
summary = 'Create a user within this team', summary = 'Create a user within this team',
description='', description='',
parameters = [
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'team_id',
location = 'path',
type = int
),
],
responses = { responses = {
# 200: OpenApiResponse(description='Allready exists', response=TeamUserViewSerializer), # 200: OpenApiResponse(description='Allready exists', response=TeamUserViewSerializer),
201: OpenApiResponse(description='Created', response=TeamUserViewSerializer), 201: OpenApiResponse(description='Created', response=TeamUserViewSerializer),
@ -24,6 +36,23 @@ from api.viewsets.common import ModelViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a user from this team', summary = 'Delete a user from this team',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'team_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -32,6 +61,18 @@ from api.viewsets.common import ModelViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all users from this team', summary = 'Fetch all users from this team',
description='', description='',
parameters = [
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'team_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamUserViewSerializer), 200: OpenApiResponse(description='', response=TeamUserViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -40,6 +81,23 @@ from api.viewsets.common import ModelViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single user from this team', summary = 'Fetch a single user from this team',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'team_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamUserViewSerializer), 200: OpenApiResponse(description='', response=TeamUserViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -49,6 +107,23 @@ from api.viewsets.common import ModelViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a user within this team', summary = 'Update a user within this team',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'organization_id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'team_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TeamUserViewSerializer), 200: OpenApiResponse(description='', response=TeamUserViewSerializer),
# 201: OpenApiResponse(description='Created', response=OrganizationViewSerializer), # 201: OpenApiResponse(description='Created', response=OrganizationViewSerializer),

View File

@ -5,6 +5,20 @@ from rest_framework.authentication import BaseAuthentication, get_authorization_
from api.models.tokens import AuthToken from api.models.tokens import AuthToken
# scheme.py
from drf_spectacular.extensions import OpenApiAuthenticationExtension
class TokenScheme(OpenApiAuthenticationExtension):
target_class = "api.auth.TokenAuthentication"
name = "TokenAuthentication"
def get_security_definition(self, auto_schema):
return {
"type": "apiKey",
"in": "header",
"name": "Token Authorization",
"description": "Token-based authentication with required prefix 'Token'",
}
class TokenAuthentication(BaseAuthentication): class TokenAuthentication(BaseAuthentication):

View File

@ -5,6 +5,7 @@ from rest_framework.permissions import IsAuthenticated
from access.mixin import OrganizationMixin from access.mixin import OrganizationMixin
from api.auth import TokenScheme
from api.react_ui_metadata import ReactUIMetadata from api.react_ui_metadata import ReactUIMetadata
from api.views.mixin import OrganizationPermissionAPI from api.views.mixin import OrganizationPermissionAPI

View File

@ -10,7 +10,7 @@ class ContentTypeBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -43,7 +43,7 @@ class ContentTypeViewSerializer(ContentTypeBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_content_type-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_content_type-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -11,7 +11,7 @@ class PermissionBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -46,7 +46,7 @@ class PermissionViewSerializer(PermissionBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_permission-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_permission-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -9,7 +9,7 @@ class UserBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )

View File

@ -17,13 +17,13 @@ class KnowledgeBaseBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_knowledge_base-detail", "v2:_api_v2_knowledge_base-detail",
@ -59,7 +59,7 @@ class KnowledgeBaseModelSerializer(KnowledgeBaseBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -18,13 +18,13 @@ class KnowledgeBaseCategoryBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_knowledge_base_category-detail", "v2:_api_v2_knowledge_base_category-detail",
@ -60,7 +60,7 @@ class KnowledgeBaseCategoryModelSerializer(KnowledgeBaseCategoryBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -13,13 +13,13 @@ class ConfigGroupBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
request = None request = None
@ -57,7 +57,7 @@ class ConfigGroupModelSerializer(ConfigGroupBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None

View File

@ -17,13 +17,13 @@ class ConfigGroupSoftwareBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_config_group-detail", "v2:_api_v2_config_group-detail",
@ -60,7 +60,7 @@ class ConfigGroupSoftwareModelSerializer(ConfigGroupSoftwareBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -7,7 +7,7 @@ from core.fields.icon import Icon, IconField
class BadgeField(serializers.Field): class BadgeField(serializers.DictField):
source = '' source = ''

View File

@ -5,7 +5,7 @@ from core.classes.icon import Icon
class IconField(serializers.Field): class IconField(serializers.DictField):
source = '' source = ''

View File

@ -15,7 +15,7 @@ class TaskResultBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -46,7 +46,7 @@ class TaskResultModelSerializer(TaskResultBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_celery_log-detail", '_self': reverse("v2:_api_v2_celery_log-detail",

View File

@ -11,13 +11,13 @@ class HistoryBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_my_url') url = serializers.SerializerMethodField('get_my_url')
def get_my_url(self, item): def get_my_url(self, item) -> str:
return reverse("v2:_api_v2_model_history-detail", return reverse("v2:_api_v2_model_history-detail",
request=self._context['view'].request, request=self._context['view'].request,
@ -55,7 +55,7 @@ class HistoryModelSerializer(HistoryBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_model_history-detail", '_self': reverse("v2:_api_v2_model_history-detail",

View File

@ -13,7 +13,7 @@ class ManufacturerBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class ManufacturerModelSerializer(ManufacturerBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_manufacturer-detail", '_self': reverse("v2:_api_v2_manufacturer-detail",

View File

@ -21,7 +21,7 @@ class NoteBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -54,7 +54,7 @@ class NoteModelSerializer(NoteBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
if 'group_id' in self._kwargs['context']['view'].kwargs: if 'group_id' in self._kwargs['context']['view'].kwargs:

View File

@ -23,14 +23,14 @@ class TicketBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('my_url') url = serializers.SerializerMethodField('my_url')
def my_url(self, item): def my_url(self, item) -> str:
context = self.context.copy() context = self.context.copy()
@ -82,7 +82,7 @@ class TicketModelSerializer(TicketBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
context = self.context.copy() context = self.context.copy()

View File

@ -11,7 +11,7 @@ class TicketCategoryBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class TicketCategoryModelSerializer(TicketCategoryBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("API:_api_v2_ticket_category-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("API:_api_v2_ticket_category-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -19,7 +19,7 @@ class TicketCommentBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -61,7 +61,7 @@ class TicketCommentModelSerializer(
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = self.context.get('request') request = self.context.get('request')

View File

@ -13,7 +13,7 @@ class TicketCommentCategoryBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class TicketCommentCategoryModelSerializer(TicketCommentCategoryBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_ticket_comment_category-detail", '_self': reverse("v2:_api_v2_ticket_comment_category-detail",

View File

@ -16,14 +16,14 @@ class TicketLinkedItemBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('my_url') url = serializers.SerializerMethodField('my_url')
def my_url(self, item): def my_url(self, item) -> str:
return item.get_url( request = self._context['view'].request ) return item.get_url( request = self._context['view'].request )
@ -54,7 +54,7 @@ class TicketLinkedItemModelSerializer(TicketLinkedItemBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': item.get_url( request = self._context['view'].request ) '_self': item.get_url( request = self._context['view'].request )

View File

@ -15,7 +15,7 @@ class RelatedTicketBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -64,7 +64,7 @@ class RelatedTicketModelSerializer(RelatedTicketBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None

View File

@ -1,6 +1,6 @@
from django.db.models import Q from django.db.models import Q
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from access.mixin import OrganizationMixin from access.mixin import OrganizationMixin
@ -18,6 +18,13 @@ from core.serializers.ticket_related import (
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a related ticket', summary = 'Delete a related ticket',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -26,6 +33,13 @@ from core.serializers.ticket_related import (
list = extend_schema( list = extend_schema(
summary = 'Fetch all related tickets', summary = 'Fetch all related tickets',
description='', description='',
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=RelatedTicketViewSerializer), 200: OpenApiResponse(description='', response=RelatedTicketViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -34,6 +48,18 @@ from core.serializers.ticket_related import (
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a related ticket', summary = 'Fetch a related ticket',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=RelatedTicketViewSerializer), 200: OpenApiResponse(description='', response=RelatedTicketViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),

View File

@ -1,7 +1,7 @@
from django.db.models import Q from django.db.models import Q
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse, PolymorphicProxySerializer from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse, PolymorphicProxySerializer
from rest_framework import generics, viewsets from rest_framework import generics, viewsets
from rest_framework.response import Response from rest_framework.response import Response
@ -46,6 +46,13 @@ from settings.models.user_settings import UserSettings
Responses from the API are the same for all users when the request returns Responses from the API are the same for all users when the request returns
status `HTTP/20x`. status `HTTP/20x`.
""", """,
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
request = PolymorphicProxySerializer( request = PolymorphicProxySerializer(
component_name = 'TicketComment', component_name = 'TicketComment',
serializers=[ serializers=[
@ -74,6 +81,18 @@ Responses from the API are the same for all users when the request returns
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a ticket comment', summary = 'Delete a ticket comment',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -82,6 +101,13 @@ Responses from the API are the same for all users when the request returns
list = extend_schema( list = extend_schema(
summary = 'Fetch all ticket comments', summary = 'Fetch all ticket comments',
description='', description='',
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketCommentViewSerializer), 200: OpenApiResponse(description='', response=TicketCommentViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -90,6 +116,18 @@ Responses from the API are the same for all users when the request returns
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single ticket comment', summary = 'Fetch a single ticket comment',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketCommentViewSerializer), 200: OpenApiResponse(description='', response=TicketCommentViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -99,6 +137,18 @@ Responses from the API are the same for all users when the request returns
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a ticket comment', summary = 'Update a ticket comment',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketCommentViewSerializer), 200: OpenApiResponse(description='', response=TicketCommentViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from core.serializers.ticket_linked_item import ( from core.serializers.ticket_linked_item import (
TicketLinkedItem, TicketLinkedItem,
@ -15,6 +15,13 @@ from api.viewsets.common import ModelViewSet
create=extend_schema( create=extend_schema(
summary = 'Create a Ticket Linked Item', summary = 'Create a Ticket Linked Item',
description='', description='',
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
201: OpenApiResponse(description='Created', response=TicketLinkedItemViewSerializer), 201: OpenApiResponse(description='Created', response=TicketLinkedItemViewSerializer),
403: OpenApiResponse(description='User is missing add permissions'), 403: OpenApiResponse(description='User is missing add permissions'),
@ -23,6 +30,18 @@ from api.viewsets.common import ModelViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a Ticket Linked Item', summary = 'Delete a Ticket Linked Item',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -31,6 +50,13 @@ from api.viewsets.common import ModelViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all Ticket Linked Items', summary = 'Fetch all Ticket Linked Items',
description='', description='',
parameters = [
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer), 200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -39,6 +65,18 @@ from api.viewsets.common import ModelViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single Ticket Linked Item', summary = 'Fetch a single Ticket Linked Item',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer), 200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -48,6 +86,18 @@ from api.viewsets.common import ModelViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a Ticket Linked Item', summary = 'Update a Ticket Linked Item',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'ticket_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer), 200: OpenApiResponse(description='', response=TicketLinkedItemViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -22,7 +22,7 @@ class DeviceBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -52,7 +52,7 @@ class DeviceModelSerializer(DeviceBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None
@ -108,7 +108,7 @@ class DeviceModelSerializer(DeviceBaseSerializer):
rendered_config = serializers.JSONField(source='get_configuration', read_only=True) rendered_config = serializers.JSONField(source='get_configuration', read_only=True)
def get_rendered_config(self, item): def get_rendered_config(self, item) -> dict:
return item.get_configuration(0) return item.get_configuration(0)

View File

@ -14,7 +14,7 @@ class DeviceModelBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -47,7 +47,7 @@ class DeviceModelModelSerializer(DeviceModelBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, obj): def get_url(self, obj) -> dict:
return { return {
'_self': reverse("v2:_api_v2_device_model-detail", request=self._context['view'].request, kwargs={'pk': obj.pk}) '_self': reverse("v2:_api_v2_device_model-detail", request=self._context['view'].request, kwargs={'pk': obj.pk})

View File

@ -20,7 +20,7 @@ class DeviceSoftwareBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -54,7 +54,7 @@ class DeviceSoftwareModelSerializer(DeviceSoftwareBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, obj): def get_url(self, obj) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -11,7 +11,7 @@ class DeviceTypeBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -43,7 +43,7 @@ class DeviceTypeModelSerializer(DeviceTypeBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, obj): def get_url(self, obj) -> dict:
return { return {
'_self': reverse("v2:_api_v2_device_type-detail", request=self._context['view'].request, kwargs={'pk': obj.pk}) '_self': reverse("v2:_api_v2_device_type-detail", request=self._context['view'].request, kwargs={'pk': obj.pk})

View File

@ -14,7 +14,7 @@ class OperatingSystemBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -48,7 +48,7 @@ class OperatingSystemModelSerializer(OperatingSystemBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None

View File

@ -15,14 +15,14 @@ class OperatingSystemVersionBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('my_url') url = serializers.SerializerMethodField('my_url')
def my_url(self, item): def my_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_operating_system_version-detail", "v2:_api_v2_operating_system_version-detail",
@ -60,7 +60,7 @@ class OperatingSystemVersionModelSerializer(OperatingSystemVersionBaseSerializer
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -14,7 +14,7 @@ class SoftwareBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -46,7 +46,7 @@ class SoftwareModelSerializer(SoftwareBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None
@ -88,7 +88,7 @@ class SoftwareModelSerializer(SoftwareBaseSerializer):
} }
def get_rendered_config(self, item): def get_rendered_config(self, item) -> dict:
return item.get_configuration(0) return item.get_configuration(0)

View File

@ -13,7 +13,7 @@ class SoftwareCategoryBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -45,7 +45,7 @@ class SoftwareCategoryModelSerializer(SoftwareCategoryBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_software_category-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_software_category-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),
@ -54,7 +54,7 @@ class SoftwareCategoryModelSerializer(SoftwareCategoryBaseSerializer):
} }
def get_rendered_config(self, item): def get_rendered_config(self, item) -> dict:
return item.get_configuration(0) return item.get_configuration(0)

View File

@ -12,14 +12,14 @@ class SoftwareVersionBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('my_url') url = serializers.SerializerMethodField('my_url')
def my_url(self, item): def my_url(self, item) -> str:
return reverse( return reverse(
"v2:_api_v2_software_version-detail", "v2:_api_v2_software_version-detail",
@ -54,7 +54,7 @@ class SoftwareVersionModelSerializer(SoftwareVersionBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -4,7 +4,7 @@ from rest_framework import filters
from django.db.models import Q from django.db.models import Q
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from rest_framework.fields import empty from rest_framework.fields import empty
from rest_framework import generics, viewsets from rest_framework import generics, viewsets
@ -29,6 +29,13 @@ from itam.serializers.device_software import (
create=extend_schema( create=extend_schema(
summary = 'Add device software', summary = 'Add device software',
description='', description='',
parameters = [
OpenApiParameter(
name = 'device_id',
location = 'path',
type = int
),
],
responses = { responses = {
201: OpenApiResponse(description='Device created', response=DeviceSoftwareModelSerializer), 201: OpenApiResponse(description='Device created', response=DeviceSoftwareModelSerializer),
400: OpenApiResponse(description='Validation failed.'), 400: OpenApiResponse(description='Validation failed.'),
@ -38,6 +45,18 @@ from itam.serializers.device_software import (
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a device software', summary = 'Delete a device software',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'device_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -46,6 +65,13 @@ from itam.serializers.device_software import (
list = extend_schema( list = extend_schema(
summary = 'Fetch all device software', summary = 'Fetch all device software',
description='', description='',
parameters = [
OpenApiParameter(
name = 'device_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer), 200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -54,6 +80,18 @@ from itam.serializers.device_software import (
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single device software', summary = 'Fetch a single device software',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'device_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer), 200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -63,6 +101,18 @@ from itam.serializers.device_software import (
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a device software', summary = 'Update a device software',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'device_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer), 200: OpenApiResponse(description='', response=DeviceSoftwareModelSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from itam.serializers.operating_system_version import ( from itam.serializers.operating_system_version import (
OperatingSystemVersion, OperatingSystemVersion,
@ -13,6 +13,13 @@ from api.viewsets.common import ModelViewSet
create=extend_schema( create=extend_schema(
summary = 'Create an operating system version', summary = 'Create an operating system version',
description='', description='',
parameters = [
OpenApiParameter(
name = 'operating_system_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='Software allready exists', response=OperatingSystemVersionViewSerializer), 200: OpenApiResponse(description='Software allready exists', response=OperatingSystemVersionViewSerializer),
201: OpenApiResponse(description='Software created', response=OperatingSystemVersionViewSerializer), 201: OpenApiResponse(description='Software created', response=OperatingSystemVersionViewSerializer),
@ -23,6 +30,18 @@ from api.viewsets.common import ModelViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete an operating system version', summary = 'Delete an operating system version',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'operating_system_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -31,6 +50,13 @@ from api.viewsets.common import ModelViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all operating system versions', summary = 'Fetch all operating system versions',
description='', description='',
parameters = [
OpenApiParameter(
name = 'operating_system_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer), 200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -39,6 +65,18 @@ from api.viewsets.common import ModelViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single operating system version', summary = 'Fetch a single operating system version',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'operating_system_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer), 200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -48,6 +86,18 @@ from api.viewsets.common import ModelViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update an operating system version', summary = 'Update an operating system version',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'operating_system_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer), 200: OpenApiResponse(description='', response=OperatingSystemVersionViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from itam.serializers.software_version import ( from itam.serializers.software_version import (
SoftwareVersion, SoftwareVersion,
@ -13,6 +13,13 @@ from api.viewsets.common import ModelViewSet
create=extend_schema( create=extend_schema(
summary = 'Create a software version', summary = 'Create a software version',
description='', description='',
parameters = [
OpenApiParameter(
name = 'software_id',
location = 'path',
type = int
),
],
responses = { responses = {
201: OpenApiResponse(description='Software created', response=SoftwareVersionViewSerializer), 201: OpenApiResponse(description='Software created', response=SoftwareVersionViewSerializer),
400: OpenApiResponse(description='Validation failed.'), 400: OpenApiResponse(description='Validation failed.'),
@ -22,6 +29,18 @@ from api.viewsets.common import ModelViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a software version', summary = 'Delete a software version',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'software_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -30,6 +49,13 @@ from api.viewsets.common import ModelViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all software versions', summary = 'Fetch all software versions',
description='', description='',
parameters = [
OpenApiParameter(
name = 'software_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer), 200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -38,6 +64,18 @@ from api.viewsets.common import ModelViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single software version', summary = 'Fetch a single software version',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'software_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer), 200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -47,6 +85,18 @@ from api.viewsets.common import ModelViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a software version', summary = 'Update a software version',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'software_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer), 200: OpenApiResponse(description='', response=SoftwareVersionViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -14,7 +14,7 @@ class ClusterBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -45,7 +45,7 @@ class ClusterModelSerializer(ClusterBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None

View File

@ -13,7 +13,7 @@ class ClusterTypeBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class ClusterTypeModelSerializer(ClusterTypeBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_cluster_type-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_cluster_type-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -13,7 +13,7 @@ class PortBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -47,7 +47,7 @@ class PortModelSerializer(PortBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_port-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_port-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -16,7 +16,7 @@ class ServiceBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -47,7 +47,7 @@ class ServiceModelSerializer(ServiceBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
request = None request = None

View File

@ -20,7 +20,7 @@ class ProjectBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -52,7 +52,7 @@ class ProjectModelSerializer(ProjectBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_project-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_project-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -13,13 +13,13 @@ class ProjectMilestoneBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
url = serializers.SerializerMethodField('get_url') url = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> str:
context = self.context.copy() context = self.context.copy()
@ -56,7 +56,7 @@ class ProjectMilestoneModelSerializer(ProjectMilestoneBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -14,7 +14,7 @@ class ProjectStateBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -47,7 +47,7 @@ class ProjectStateModelSerializer(ProjectStateBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -14,7 +14,7 @@ class ProjectTypeBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -46,7 +46,7 @@ class ProjectTypeModelSerializer(ProjectTypeBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse( '_self': reverse(

View File

@ -1,4 +1,4 @@
from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiResponse from drf_spectacular.utils import extend_schema, extend_schema_view, OpenApiParameter, OpenApiResponse
from api.viewsets.common import ModelViewSet from api.viewsets.common import ModelViewSet
@ -14,6 +14,13 @@ from project_management.serializers.project_milestone import (
create=extend_schema( create=extend_schema(
summary = 'Create a cluster', summary = 'Create a cluster',
description='', description='',
parameters = [
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
201: OpenApiResponse(description='Device created', response=ProjectMilestoneViewSerializer), 201: OpenApiResponse(description='Device created', response=ProjectMilestoneViewSerializer),
400: OpenApiResponse(description='Validation failed.'), 400: OpenApiResponse(description='Validation failed.'),
@ -23,6 +30,18 @@ from project_management.serializers.project_milestone import (
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a cluster', summary = 'Delete a cluster',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -31,6 +50,13 @@ from project_management.serializers.project_milestone import (
list = extend_schema( list = extend_schema(
summary = 'Fetch all clusters', summary = 'Fetch all clusters',
description='', description='',
parameters = [
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer), 200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -39,6 +65,18 @@ from project_management.serializers.project_milestone import (
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a single cluster', summary = 'Fetch a single cluster',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer), 200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -48,6 +86,18 @@ from project_management.serializers.project_milestone import (
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a cluster', summary = 'Update a cluster',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer), 200: OpenApiResponse(description='', response=ProjectMilestoneViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -1,6 +1,7 @@
from drf_spectacular.utils import ( from drf_spectacular.utils import (
extend_schema, extend_schema,
extend_schema_view, extend_schema_view,
OpenApiParameter,
OpenApiResponse, OpenApiResponse,
PolymorphicProxySerializer, PolymorphicProxySerializer,
) )
@ -21,6 +22,13 @@ from core.viewsets.ticket import TicketViewSet
create=extend_schema( create=extend_schema(
summary = 'Create a Project Task', summary = 'Create a Project Task',
description='', description='',
parameters = [
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
request = PolymorphicProxySerializer( request = PolymorphicProxySerializer(
component_name = 'ProjectTask', component_name = 'ProjectTask',
serializers=[ serializers=[
@ -40,6 +48,18 @@ from core.viewsets.ticket import TicketViewSet
destroy = extend_schema( destroy = extend_schema(
summary = 'Delete a Project Task', summary = 'Delete a Project Task',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
204: OpenApiResponse(description=''), 204: OpenApiResponse(description=''),
403: OpenApiResponse(description='User is missing delete permissions'), 403: OpenApiResponse(description='User is missing delete permissions'),
@ -48,6 +68,13 @@ from core.viewsets.ticket import TicketViewSet
list = extend_schema( list = extend_schema(
summary = 'Fetch all Project Task', summary = 'Fetch all Project Task',
description='', description='',
parameters = [
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer), 200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -56,6 +83,18 @@ from core.viewsets.ticket import TicketViewSet
retrieve = extend_schema( retrieve = extend_schema(
summary = 'Fetch a Project Task', summary = 'Fetch a Project Task',
description='', description='',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer), 200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer),
403: OpenApiResponse(description='User is missing view permissions'), 403: OpenApiResponse(description='User is missing view permissions'),
@ -65,6 +104,18 @@ from core.viewsets.ticket import TicketViewSet
partial_update = extend_schema( partial_update = extend_schema(
summary = 'Update a Project Task', summary = 'Update a Project Task',
description = '', description = '',
parameters = [
OpenApiParameter(
name = 'id',
location = 'path',
type = int
),
OpenApiParameter(
name = 'project_id',
location = 'path',
type = int
),
],
responses = { responses = {
200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer), 200: OpenApiResponse(description='', response=ProjectTaskTicketViewSerializer),
403: OpenApiResponse(description='User is missing change permissions'), 403: OpenApiResponse(description='User is missing change permissions'),

View File

@ -12,7 +12,7 @@ class AppSettingsBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class AppSettingsModelSerializer(AppSettingsBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_app_settings-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_app_settings-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -12,7 +12,7 @@ class ExternalLinkBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class ExternalLinkModelSerializer(ExternalLinkBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_external_link-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_external_link-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),

View File

@ -12,7 +12,7 @@ class UserSettingsBaseSerializer(serializers.ModelSerializer):
display_name = serializers.SerializerMethodField('get_display_name') display_name = serializers.SerializerMethodField('get_display_name')
def get_display_name(self, item): def get_display_name(self, item) -> str:
return str( item ) return str( item )
@ -44,7 +44,7 @@ class UserSettingsModelSerializer(UserSettingsBaseSerializer):
_urls = serializers.SerializerMethodField('get_url') _urls = serializers.SerializerMethodField('get_url')
def get_url(self, item): def get_url(self, item) -> dict:
return { return {
'_self': reverse("v2:_api_v2_user_settings-detail", request=self._context['view'].request, kwargs={'pk': item.pk}), '_self': reverse("v2:_api_v2_user_settings-detail", request=self._context['view'].request, kwargs={'pk': item.pk}),