skillbox/server/books/categorize_modules.py

61 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from users.models import User
from .models.module import Module, ModuleLevel, ModuleCategory
def analyze_module_meta_titles():
all_nodes = []
for module in Module.objects.all():
print(f"{module.get_parent() } {module.meta_title} : {module.title}")
nodes = [i.strip() for i in [module.get_parent().title] + module.meta_title.split(' ')]
all_nodes.append(nodes)
print("")
for i in range(3):
leafs = [node[i] for node in all_nodes if len(node) > i+1]
leafs.sort()
print(f"{i}.: {set(leafs)}")
def create_default_levels_and_categories():
ModuleLevel.objects.get_or_create(name=f"Alle Lehrjahre", filter_attribute_type="all", order=0)
for lehrjahr in range(1,4):
module_category, created = ModuleLevel.objects.get_or_create(name=f"{lehrjahr}. Lehrjahr", order=lehrjahr)
ModuleCategory.objects.get_or_create(name=f"Alle Lernfelder", filter_attribute_type="all", order=0)
for category in range(1, 5):
ModuleCategory.objects.get_or_create(name=f"Lernfeld {category}", order=category)
def categorize_modules():
for level in ModuleLevel.objects.all():
modules = Module.objects.filter(level__isnull=True, meta_title__icontains=level.name)
print(f"{level.name}: {modules.count()}")
modules.update(level=level)
for category in ModuleCategory.objects.all():
modules = Module.objects.filter(category__isnull=True, meta_title__contains=category.name)
print(f"{category.name}: {modules.count()}")
modules.update(category=category)
def uncategorize_modules():
User.objects.all().update(last_module_level=None)
#
ModuleCategory.objects.all().delete()
ModuleLevel.objects.all().delete()
def delete_unused_levels():
for level in ModuleLevel.objects.filter(filter_attribute_type="exact"):
if not level.module_set.exists():
level.delete()
def delete_unused_categories():
for category in ModuleCategory.objects.filter(filter_attribute_type="exact"):
if not category.module_set.exists():
category.delete()