feat(devops): Switch GitRepository model to inherit from CenturionModel

ref: #807 #515 #809
This commit is contained in:
2025-06-09 16:40:31 +09:30
parent bff14dc21a
commit 87c5768945

View File

@ -1,19 +1,16 @@
from django.db import models from django.db import models
from rest_framework.reverse import reverse from access.fields import AutoLastModifiedField
from access.fields import AutoCreatedField, AutoLastModifiedField
from access.models.tenancy import TenancyObject
from core import exceptions as centurion_exceptions from core import exceptions as centurion_exceptions
from core.lib.feature_not_used import FeatureNotUsed from core.models.centurion import CenturionModel
from devops.models.git_group import GitGroup from devops.models.git_group import GitGroup
class GitRepository( class GitRepository(
TenancyObject CenturionModel
): ):
"""Base Model for Git Repositories """Base Model for Git Repositories
@ -21,6 +18,14 @@ class GitRepository(
model. model.
""" """
app_namespace = 'devops'
documentation = ''
model_tag = 'git_repository'
url_model_name = 'gitrepository'
class Meta: class Meta:
@ -51,16 +56,6 @@ class GitRepository(
code = 'path_contains_separator' code = 'path_contains_separator'
) )
is_global = None
id = models.AutoField(
blank = False,
help_text = 'Primary key of the entry',
primary_key = True,
unique = True,
verbose_name = 'ID'
)
provider = models.IntegerField( provider = models.IntegerField(
blank = False, blank = False,
choices = GitGroup.GitProvider, choices = GitGroup.GitProvider,
@ -77,6 +72,21 @@ class GitRepository(
verbose_name = 'Provider ID' verbose_name = 'Provider ID'
) )
@property
def provider_badge(self):
from core.classes.badge import Badge
text: str = self.get_provider_display()
return Badge(
icon_name = f'{text.lower()}',
icon_style = f'badge-icon-action-{text.lower()}',
text = text,
)
git_group = models.ForeignKey( git_group = models.ForeignKey(
GitGroup, GitGroup,
blank = False, blank = False,
@ -113,45 +123,9 @@ class GitRepository(
verbose_name = 'Description' verbose_name = 'Description'
) )
created = AutoCreatedField()
modified = AutoLastModifiedField() modified = AutoLastModifiedField()
page_layout = []
def __str__(self) -> str:
return str(self.git_group) + '/' + self.path
@property
def provider_badge(self):
from core.classes.badge import Badge
text: str = self.get_provider_display()
return Badge(
icon_name = f'{text.lower()}',
icon_style = f'badge-icon-action-{text.lower()}',
text = text,
)
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.organization = self.git_group.organization
super().save(force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
app_namespace = 'devops'
documentation = ''
def get_page_layout(self):
return self.page_layout
table_fields: list = [ table_fields: list = [
'name', 'name',
@ -162,49 +136,40 @@ class GitRepository(
] ]
def get_url(self, request): def __str__(self) -> str:
if request: return str(self.git_group) + '/' + self.path
return reverse(
f"v2:" + self.get_app_namespace() + f"_api_v2_git_repository-detail",
request=request,
kwargs = self.get_url_kwargs()
)
return reverse(
f"v2:" + self.get_app_namespace() + f"_api_v2_git_repository-detail",
kwargs = self.get_url_kwargs()
)
def get_url_kwargs(self) -> dict:
url_kwargs = super().get_url_kwargs() def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
provider = '' self.organization = self.git_group.organization
if self.provider == GitGroup.GitProvider.GITHUB: super().save(force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
provider = 'github'
elif self.provider == GitGroup.GitProvider.GITLAB:
provider = 'gitlab'
url_kwargs.update({
'git_provider': provider
})
return url_kwargs
def get_url_kwargs_notes(self) -> dict: # def get_page_layout(self):
"""Fetch the URL kwargs for model notes
This feature is disabled in the base, however should be enabled in the # return self.page_layout
child model.
"""
return FeatureNotUsed
# def get_url_kwargs(self, many = False) -> dict:
# url_kwargs = super().get_url_kwargs()
# provider = ''
# if self.provider == GitGroup.GitProvider.GITHUB:
# provider = 'github'
# elif self.provider == GitGroup.GitProvider.GITLAB:
# provider = 'gitlab'
# url_kwargs.update({
# 'git_provider': provider
# })
# return url_kwargs