From b5705cc991efe22f0eed9b7495e3b5c6412e0a77 Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Thu, 27 Jul 2023 15:52:25 +0200 Subject: [PATCH] Remove Tree structure from moduleCategory and CategoryType --- server/books/categorize_modules.py | 12 ++++++------ .../management/commands/categorize_modules.py | 3 ++- server/books/models/module.py | 11 ++--------- server/books/schema/nodes/category_type.py | 15 +++++++++++++++ server/books/wagtail_hooks.py | 18 +++++------------- 5 files changed, 30 insertions(+), 29 deletions(-) diff --git a/server/books/categorize_modules.py b/server/books/categorize_modules.py index 8847b70c..d47de0a5 100644 --- a/server/books/categorize_modules.py +++ b/server/books/categorize_modules.py @@ -21,25 +21,25 @@ def create_default_categories(): for lehrjahr in range(1,4): module_category, created = ModuleCategory.objects.get_or_create(name=f"{lehrjahr}. Lehrjahr") - for type in range(1, 10): - ModuleType.objects.get_or_create(name=f"Lernfeld {type}", category=module_category) + for type in range(1, 10): + ModuleType.objects.get_or_create(name=f"Lernfeld {type}") def categorize_modules(): for category in ModuleCategory.objects.all(): - modules = Module.objects.filter(category__isnull=True, category_type__isnull=True, meta_title__icontains=category.name) + modules = Module.objects.filter(category__isnull=True, meta_title__icontains=category.name) print(f"{category.name}: {modules.count()}") modules.update(category=category) for type in ModuleType.objects.all(): - modules = Module.objects.filter(category=type.category, category_type__isnull=True, meta_title__contains=type.name) - print(f"{type.category} {type.name}: {modules.count()}") + modules = Module.objects.filter(category_type__isnull=True, meta_title__contains=type.name) + print(f"{type.name}: {modules.count()}") modules.update(category_type=type) def uncategorize_modules(): - ModuleCategory.objects.all().delete() ModuleType.objects.all().delete() + ModuleCategory.objects.all().delete() def delete_unused_categories(): for category in ModuleCategory.objects.all(): diff --git a/server/books/management/commands/categorize_modules.py b/server/books/management/commands/categorize_modules.py index fcbc5d76..96a4711e 100644 --- a/server/books/management/commands/categorize_modules.py +++ b/server/books/management/commands/categorize_modules.py @@ -1,5 +1,5 @@ from django.core.management import BaseCommand -from books.categorize_modules import categorize_modules, delete_unused_categories, delete_unused_types +from books.categorize_modules import categorize_modules, delete_unused_categories, delete_unused_types, uncategorize_modules from books.categorize_modules import create_default_categories @@ -7,6 +7,7 @@ from books.categorize_modules import create_default_categories class Command(BaseCommand): def handle(self, *args, **options): self.stdout.write("Categorizing modules") + uncategorize_modules() create_default_categories() categorize_modules() delete_unused_types() diff --git a/server/books/models/module.py b/server/books/models/module.py index 251dc39a..bef9eeed 100644 --- a/server/books/models/module.py +++ b/server/books/models/module.py @@ -28,19 +28,12 @@ class ModuleType(models.Model): class Meta: verbose_name = _("module type") verbose_name_plural = _("module types") - ordering = ("category", "name") + ordering = ("name",) name = models.CharField(max_length=255) - category = models.ForeignKey( - ModuleCategory, - on_delete=models.PROTECT, - null=False, - default=default_category, - related_name="module_types", - ) def __str__(self): - return f"{self.category} - {self.name}" + return f"{self.name}" class Module(StrictHierarchyPage): diff --git a/server/books/schema/nodes/category_type.py b/server/books/schema/nodes/category_type.py index e69de29b..add10b08 100644 --- a/server/books/schema/nodes/category_type.py +++ b/server/books/schema/nodes/category_type.py @@ -0,0 +1,15 @@ +from graphene import relay +from graphene import relay +from graphene_django import DjangoObjectType + +from books.models import ModuleCategory + + +class ModuleCategoryNode(DjangoObjectType): + class Meta: + model = ModuleCategory + interfaces = (relay.Node,) + only_fields = [ + "id", + "name", + ] diff --git a/server/books/wagtail_hooks.py b/server/books/wagtail_hooks.py index 19135580..75c3d9d3 100644 --- a/server/books/wagtail_hooks.py +++ b/server/books/wagtail_hooks.py @@ -8,11 +8,12 @@ from wagtail import hooks from .models.module import ModuleCategory, ModuleType, Module from django.utils.translation import gettext_lazy as _ + class ModuleAdmin(ModelAdmin): model = Module list_display = ("title", "meta_title", "category", "category_type") search_fields = ("title", "meta_title") - list_filter = ("category","category_type") + list_filter = ("category", "category_type") class ModuleCategoryAdmin(ModelAdmin): @@ -23,17 +24,9 @@ class ModuleCategoryAdmin(ModelAdmin): class ModuleTypeAdmin(ModelAdmin): model = ModuleType - list_display = ( - "name", - "category", - ) - list_filter = ("category",) - ordering = ("category", "name") - inspect_view_enabled = True - inspect_view_fields = ( - "name", - "category", - ) + list_display = ("name",) + ordering = ("name",) + inspect_view_fields = ("name",) class InstrumentGroup(ModelAdminGroup): @@ -46,4 +39,3 @@ class InstrumentGroup(ModelAdminGroup): modeladmin_register(InstrumentGroup) -