feat(devops): Switch GitRepository model to inherit from CenturionModel
ref: #807 #515 #809
This commit is contained in:
@ -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
|
||||||
|
Reference in New Issue
Block a user