feat(devops): Add fields to ALL git_repository serializers

ref: #693 #515
This commit is contained in:
2025-03-22 18:55:03 +09:30
parent b837338140
commit 48a7a206d2
3 changed files with 87 additions and 64 deletions

View File

@ -6,7 +6,7 @@ from access.serializers.organization import OrganizationBaseSerializer
from api.serializers import common
from devops.models.git_repository.base import GitRepository
from devops.models.git_repository.base import GitRepository, GitGroup
from devops.serializers.git_group import BaseSerializer as GitGroupBaseSerializer
@ -53,9 +53,23 @@ class ModelSerializer(
model = GitRepository
fields = '__all__'
fields = [
'id',
'display_name',
'organization',
'provider',
'provider_id',
'git_group',
'path',
'name',
'description',
'model_notes',
'created',
'modified',
'_urls',
]
read_only_fields = [
default_read_only_fields = [
'id',
'display_name',
'created',
@ -63,6 +77,29 @@ class ModelSerializer(
'_urls',
]
read_only_fields = [
'id',
'organization',
'display_name',
'organization',
'provider',
'provider_id',
'git_group',
'path',
'name',
'description',
'model_notes',
'created',
'modified',
'_urls',
]
def is_valid(self, raise_exception = False):
is_valid = super().is_valid( raise_exception = raise_exception )
return is_valid

View File

@ -8,6 +8,7 @@ from devops.models.git_group import GitGroup
from devops.models.git_repository.github import GitHubRepository
from devops.serializers.git_repository.base import (
BaseSerializer,
ModelSerializer as GitModelSerializer,
ViewSerializer as GitViewSerializer
)
@ -36,13 +37,10 @@ class GroupField(serializers.PrimaryKeyRelatedField):
@extend_schema_serializer(component_name = 'GitHubModelSerializer')
class ModelSerializer(
common.CommonModelSerializer,
BaseSerializer
GitModelSerializer
):
"""GitHub Repository"""
_urls = serializers.SerializerMethodField('get_url')
git_group = GroupField( required = True, write_only = True )
class Meta:
@ -51,16 +49,34 @@ class ModelSerializer(
# note_basename = 'devops:_api_v2_feature_flag_note'
fields = '__all__'
read_only_fields = [
'id',
'display_name',
fields = GitModelSerializer.Meta.fields + [
'wiki',
'issues',
'sponsorships',
'preserve_this_repository',
'discussions',
'projects',
'created',
'modified',
'_urls',
]
read_only_fields = GitModelSerializer.Meta.default_read_only_fields + [
'provider',
]
def is_valid(self, raise_exception = False):
is_valid = super().is_valid( raise_exception = raise_exception )
self.validated_data['provider'] = getattr(
GitGroup.GitProvider,
str(self.context['view'].kwargs['git_provider']).upper()
)
return is_valid
@extend_schema_serializer(component_name = 'GitHubViewSerializer')

View File

@ -12,6 +12,7 @@ from devops.models.git_group import GitGroup
from devops.models.git_repository.gitlab import GitLabRepository
from devops.serializers.git_repository.base import (
BaseSerializer,
ModelSerializer as GitModelSerializer,
ViewSerializer as GitViewSerializer
)
@ -36,43 +37,13 @@ class GroupField(serializers.PrimaryKeyRelatedField):
return qs
# @extend_schema_serializer(component_name = 'GitLabModelSerializer')
# class BaseSerializer(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:devops:_api_v2_feature_flag-detail", format="html"
# )
# class Meta:
# model = GitLabRepository
# fields = [
# 'id',
# 'display_name',
# 'url',
# ]
# read_only_fields = [
# 'id',
# 'display_name',
# 'url',
# ]
@extend_schema_serializer(component_name = 'GitLabModelSerializer')
class ModelSerializer(
common.CommonModelSerializer,
BaseSerializer
GitModelSerializer,
):
"""GitLab Repository"""
# _urls = serializers.SerializerMethodField('get_url')
git_group = GroupField( required = True, write_only = True )
@ -83,28 +54,28 @@ class ModelSerializer(
# note_basename = 'devops:_api_v2_feature_flag_note'
fields = '__all__'
fields = GitModelSerializer.Meta.fields + [
'visibility',
'created',
'modified',
'_urls',
]
# fields = [
# 'id',
# 'organization',
# # 'display_name',
# 'name',
# # 'description',
# # 'enabled',
# # 'model_notes',
# 'created',
# 'modified',
# '_urls',
# ]
read_only_fields = GitModelSerializer.Meta.default_read_only_fields + [
'provider',
]
# read_only_fields = [
# 'id',
# 'display_name',
# 'created',
# 'modified',
# '_urls',
# ]
def is_valid(self, raise_exception = False):
is_valid = super().is_valid( raise_exception = raise_exception )
self.validated_data['provider'] = getattr(
GitGroup.GitProvider,
str(self.context['_view'].kwargs['git_provider']).upper()
)
return is_valid
@ -115,5 +86,4 @@ class ViewSerializer(
):
"""GitLab View Repository"""
# git_group = GroupField( read_only = True )
pass