From 734c29f41b20825c62b3a1886070b1d31d983bd5 Mon Sep 17 00:00:00 2001 From: Jon Date: Wed, 4 Jun 2025 07:15:26 +0930 Subject: [PATCH] refactor(assistance): MV kb category model to its own file ref: #783 --- app/assistance/models/knowledge_base.py | 118 +---------------- .../models/knowledge_base_category.py | 124 ++++++++++++++++++ .../serializers/knowledge_base_category.py | 2 +- .../test_knowledge_base_category_viewset.py | 2 +- .../test_knowledge_base_api_v2.py | 3 +- .../test_knowledge_base_category_api_v2.py | 2 +- ...test_knowledge_base_category_permission.py | 2 +- ...test_unit_knowledge_base_category_model.py | 2 +- 8 files changed, 133 insertions(+), 122 deletions(-) create mode 100644 app/assistance/models/knowledge_base_category.py diff --git a/app/assistance/models/knowledge_base.py b/app/assistance/models/knowledge_base.py index 19704c12..9efe3188 100644 --- a/app/assistance/models/knowledge_base.py +++ b/app/assistance/models/knowledge_base.py @@ -5,126 +5,12 @@ from access.fields import * from access.models.team import Team from access.models.tenancy import TenancyObject +from assistance.models.knowledge_base_category import KnowledgeBaseCategory + User = django.contrib.auth.get_user_model() -class KnowledgeBaseCategory(TenancyObject): - - - class Meta: - - ordering = [ - 'name', - ] - - verbose_name = "Knowledge Base Category" - - verbose_name_plural = "Knowledge Base Categories" - - - parent_category = models.ForeignKey( - 'self', - blank = True, - default = None, - help_text = 'Category this category belongs to', - null = True, - on_delete = models.SET_NULL, - verbose_name = 'Parent Category', - ) - - - name = models.CharField( - blank = False, - help_text = 'Name/Title of the Category', - max_length = 50, - unique = False, - verbose_name = 'Title', - ) - - target_team = models.ManyToManyField( - Team, - blank = True, - default = None, - help_text = 'Team(s) to grant access to the article', - verbose_name = 'Target Team(s)', - ) - - - target_user = models.ForeignKey( - User, - blank = True, - default = None, - help_text = 'User(s) to grant access to the article', - null = True, - on_delete = models.SET_NULL, - verbose_name = 'Target Users(s)', - ) - - - created = AutoCreatedField() - - - modified = AutoLastModifiedField() - - - page_layout: dict = [ - { - "name": "Details", - "slug": "details", - "sections": [ - { - "layout": "double", - "left": [ - 'organization', - 'parent_category', - 'name', - 'target_user', - 'target_team', - ], - "right": [ - 'model_notes', - 'created', - 'modified', - ] - } - ] - }, - { - "name": "Notes", - "slug": "notes", - "sections": [] - }, - ] - - table_fields: list = [ - 'name', - 'parent_category', - 'is_global', - 'organization', - ] - - - def __str__(self): - - return self.name - - - def save_history(self, before: dict, after: dict) -> bool: - - from assistance.models.knowledge_base_category_history import KnowledgeBaseCategoryHistory - - history = super().save_history( - before = before, - after = after, - history_model = KnowledgeBaseCategoryHistory, - ) - - - return history - - - class KnowledgeBase(TenancyObject): diff --git a/app/assistance/models/knowledge_base_category.py b/app/assistance/models/knowledge_base_category.py new file mode 100644 index 00000000..ae5147ab --- /dev/null +++ b/app/assistance/models/knowledge_base_category.py @@ -0,0 +1,124 @@ +import django +from django.db import models + +from access.fields import * +from access.models.team import Team +from access.models.tenancy import TenancyObject + +User = django.contrib.auth.get_user_model() + + + +class KnowledgeBaseCategory(TenancyObject): + + + class Meta: + + ordering = [ + 'name', + ] + + verbose_name = "Knowledge Base Category" + + verbose_name_plural = "Knowledge Base Categories" + + + parent_category = models.ForeignKey( + 'self', + blank = True, + default = None, + help_text = 'Category this category belongs to', + null = True, + on_delete = models.SET_NULL, + verbose_name = 'Parent Category', + ) + + + name = models.CharField( + blank = False, + help_text = 'Name/Title of the Category', + max_length = 50, + unique = False, + verbose_name = 'Title', + ) + + target_team = models.ManyToManyField( + Team, + blank = True, + default = None, + help_text = 'Team(s) to grant access to the article', + verbose_name = 'Target Team(s)', + ) + + + target_user = models.ForeignKey( + User, + blank = True, + default = None, + help_text = 'User(s) to grant access to the article', + null = True, + on_delete = models.SET_NULL, + verbose_name = 'Target Users(s)', + ) + + + created = AutoCreatedField() + + + modified = AutoLastModifiedField() + + + page_layout: dict = [ + { + "name": "Details", + "slug": "details", + "sections": [ + { + "layout": "double", + "left": [ + 'organization', + 'parent_category', + 'name', + 'target_user', + 'target_team', + ], + "right": [ + 'model_notes', + 'created', + 'modified', + ] + } + ] + }, + { + "name": "Notes", + "slug": "notes", + "sections": [] + }, + ] + + table_fields: list = [ + 'name', + 'parent_category', + 'is_global', + 'organization', + ] + + + def __str__(self): + + return self.name + + + def save_history(self, before: dict, after: dict) -> bool: + + from assistance.models.knowledge_base_category_history import KnowledgeBaseCategoryHistory + + history = super().save_history( + before = before, + after = after, + history_model = KnowledgeBaseCategoryHistory, + ) + + + return history diff --git a/app/assistance/serializers/knowledge_base_category.py b/app/assistance/serializers/knowledge_base_category.py index 5f3c9366..3d302882 100644 --- a/app/assistance/serializers/knowledge_base_category.py +++ b/app/assistance/serializers/knowledge_base_category.py @@ -11,7 +11,7 @@ from centurion.serializers.user import UserBaseSerializer from api.serializers import common -from assistance.models.knowledge_base import KnowledgeBaseCategory +from assistance.models.knowledge_base_category import KnowledgeBaseCategory diff --git a/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_viewset.py b/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_viewset.py index 0443563e..bbda85aa 100644 --- a/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_viewset.py +++ b/app/assistance/tests/functional/knowledge_base_category/test_knowledge_base_category_viewset.py @@ -13,7 +13,7 @@ from api.tests.abstract.api_permissions_viewset import APIPermissions from api.tests.abstract.api_serializer_viewset import SerializersTestCases from api.tests.abstract.test_metadata_functional import MetadataAttributesFunctional -from assistance.models.knowledge_base import KnowledgeBaseCategory +from assistance.models.knowledge_base_category import KnowledgeBaseCategory from settings.models.app_settings import AppSettings diff --git a/app/assistance/tests/unit/knowledge_base/test_knowledge_base_api_v2.py b/app/assistance/tests/unit/knowledge_base/test_knowledge_base_api_v2.py index f4b8abc3..96bd9bd5 100644 --- a/app/assistance/tests/unit/knowledge_base/test_knowledge_base_api_v2.py +++ b/app/assistance/tests/unit/knowledge_base/test_knowledge_base_api_v2.py @@ -14,7 +14,8 @@ from access.models.team_user import TeamUsers from api.tests.abstract.api_fields import APITenancyObject -from assistance.models.knowledge_base import KnowledgeBase, KnowledgeBaseCategory +from assistance.models.knowledge_base import KnowledgeBase +from assistance.models.knowledge_base_category import KnowledgeBaseCategory User = django.contrib.auth.get_user_model() diff --git a/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_api_v2.py b/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_api_v2.py index b22e7f4c..779db269 100644 --- a/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_api_v2.py +++ b/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_api_v2.py @@ -14,7 +14,7 @@ from access.models.team_user import TeamUsers from api.tests.abstract.api_fields import APITenancyObject -from assistance.models.knowledge_base import KnowledgeBase, KnowledgeBaseCategory +from assistance.models.knowledge_base_category import KnowledgeBaseCategory User = django.contrib.auth.get_user_model() diff --git a/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_permission.py b/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_permission.py index edaf150b..5e3926bc 100644 --- a/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_permission.py +++ b/app/assistance/tests/unit/knowledge_base_category/test_knowledge_base_category_permission.py @@ -16,7 +16,7 @@ from access.models.team_user import TeamUsers from centurion.tests.abstract.model_permissions import ModelPermissions -from assistance.models.knowledge_base import KnowledgeBaseCategory +from assistance.models.knowledge_base_category import KnowledgeBaseCategory User = django.contrib.auth.get_user_model() diff --git a/app/assistance/tests/unit/knowledge_base_category/test_unit_knowledge_base_category_model.py b/app/assistance/tests/unit/knowledge_base_category/test_unit_knowledge_base_category_model.py index 1efcc3bb..7483de94 100644 --- a/app/assistance/tests/unit/knowledge_base_category/test_unit_knowledge_base_category_model.py +++ b/app/assistance/tests/unit/knowledge_base_category/test_unit_knowledge_base_category_model.py @@ -4,7 +4,7 @@ from centurion.tests.unit.test_unit_models import ( from django.test import TestCase -from assistance.models.knowledge_base import KnowledgeBaseCategory +from assistance.models.knowledge_base_category import KnowledgeBaseCategory