Rename ModuleCategoryType to ModuleCategory
This commit is contained in:
parent
0b1954c570
commit
807c038a34
|
|
@ -9,9 +9,9 @@
|
|||
|
||||
<Dropdown
|
||||
class="module-filter__dropdown"
|
||||
:selected-item="selectedLernfeld"
|
||||
:items="lernfeldOptions"
|
||||
@update:selectedItem="newItem => selectedLernfeld = newItem"
|
||||
:selected-item="selectedCategory"
|
||||
:items="categoryOptions"
|
||||
@update:selectedItem="newItem => selectedCategory = newItem"
|
||||
></Dropdown>
|
||||
<pill-radio-buttons :selectableItems="languageOptions"
|
||||
:defaultSelectedItem="initialLanguage"
|
||||
|
|
@ -67,7 +67,7 @@
|
|||
}
|
||||
`);
|
||||
|
||||
const nullCategory = {
|
||||
const nullLevel = {
|
||||
name: '---',
|
||||
id: null,
|
||||
};
|
||||
|
|
@ -76,27 +76,27 @@
|
|||
let selectedLevel = ref(defaultLevel);
|
||||
|
||||
const levelOptions = computed(() => {
|
||||
return [nullCategory, ...moduleLevelsResult.value?.moduleLevels || []];
|
||||
return [nullLevel, ...moduleLevelsResult.value?.moduleLevels || []];
|
||||
});
|
||||
|
||||
const nullLernfeld = {
|
||||
const nullCategory = {
|
||||
name: '---',
|
||||
id: null,
|
||||
};
|
||||
|
||||
const selectedLernfeld = ref(nullLernfeld);
|
||||
const selectedCategory = ref(nullCategory);
|
||||
|
||||
const {result: moduleCategoryTypesResult} = useQuery(gql`
|
||||
query ModuleCategoryTypesQuery {
|
||||
moduleCategoryTypes {
|
||||
const {result: moduleCategoryResult} = useQuery(gql`
|
||||
query ModuleCategoriesQuery {
|
||||
moduleCategories {
|
||||
name
|
||||
id
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
||||
const lernfeldOptions = computed(() => {
|
||||
return [nullLernfeld, ...moduleCategoryTypesResult.value?.moduleCategoryTypes || []];
|
||||
const categoryOptions = computed(() => {
|
||||
return [nullCategory, ...moduleCategoryResult.value?.moduleCategoryTypes || []];
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -117,17 +117,17 @@
|
|||
return props.modules;
|
||||
}
|
||||
|
||||
// filter by Lehrjahr
|
||||
// filter by Lehrjahr (moduleLevel)
|
||||
if (selectedLevel.value.name !== '---') {
|
||||
filteredModules = filteredModules.filter((module) => {
|
||||
return module.level?.id == selectedLevel.value.id;
|
||||
});
|
||||
}
|
||||
|
||||
//filter by Lernfeld
|
||||
if (selectedLernfeld.value.name !== '---') {
|
||||
//filter by Lernfeld (Category)
|
||||
if (selectedCategory.value.name !== '---') {
|
||||
filteredModules = filteredModules.filter((module) => {
|
||||
return module.categoryType?.id == selectedLernfeld.value.id;
|
||||
return module.category?.id == selectedCategory.value.id;
|
||||
});
|
||||
}
|
||||
updateLastModuleLevel(selectedLevel.value);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
</p>
|
||||
<div class="module-teaser__pills">
|
||||
<pill :text="level?.name"></pill>
|
||||
<pill :text="categoryType?.name"></pill>
|
||||
<pill :text="category?.name"></pill>
|
||||
</div>
|
||||
</div>
|
||||
</router-link>
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
export default {
|
||||
components: {Pill},
|
||||
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'level', 'categoryType'],
|
||||
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'level', 'category'],
|
||||
|
||||
|
||||
computed: {
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ fragment ModuleParts on ModuleNode {
|
|||
id
|
||||
name
|
||||
}
|
||||
categoryType {
|
||||
category {
|
||||
id
|
||||
name
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from .models.module import Module, ModuleLevel, ModuleType
|
||||
from .models.module import Module, ModuleLevel, ModuleCategory
|
||||
|
||||
def analyze_module_meta_titles():
|
||||
all_nodes = []
|
||||
|
|
@ -17,36 +17,36 @@ def analyze_module_meta_titles():
|
|||
print(f"{i}.: {set(leafs)}")
|
||||
|
||||
|
||||
def create_default_categories():
|
||||
def create_default_levcels_and_categories():
|
||||
for lehrjahr in range(1,4):
|
||||
module_category, created = ModuleLevel.objects.get_or_create(name=f"{lehrjahr}. Lehrjahr")
|
||||
|
||||
for type in range(1, 10):
|
||||
ModuleType.objects.get_or_create(name=f"Lernfeld {type}")
|
||||
for category in range(1, 10):
|
||||
ModuleCategory.objects.get_or_create(name=f"Lernfeld {category}")
|
||||
|
||||
|
||||
def categorize_modules():
|
||||
for category in ModuleLevel.objects.all():
|
||||
modules = Module.objects.filter(category__isnull=True, meta_title__icontains=category.name)
|
||||
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=type.name)
|
||||
print(f"{category.name}: {modules.count()}")
|
||||
modules.update(category=category)
|
||||
|
||||
for type in ModuleType.objects.all():
|
||||
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():
|
||||
ModuleType.objects.all().delete()
|
||||
ModuleCategory.objects.all().delete()
|
||||
ModuleLevel.objects.all().delete()
|
||||
|
||||
def delete_unused_levels():
|
||||
for level in ModuleLevel.objects.all():
|
||||
if not level.module_set.exists():
|
||||
level.delete()
|
||||
|
||||
def delete_unused_categories():
|
||||
for category in ModuleLevel.objects.all():
|
||||
for category in ModuleCategory.objects.all():
|
||||
if not category.module_set.exists():
|
||||
category.delete()
|
||||
|
||||
def delete_unused_types():
|
||||
for type in ModuleType.objects.all():
|
||||
if not type.module_set.exists():
|
||||
type.delete()
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ from books.blocks import (
|
|||
SurveyBlock,
|
||||
VideoBlock,
|
||||
)
|
||||
from books.models import Book, Chapter, ContentBlock, Module, TextBlock, Topic, ModuleLevel, ModuleType
|
||||
from books.models import Book, Chapter, ContentBlock, Module, TextBlock, Topic, ModuleLevel, ModuleCategory
|
||||
from core.factories import (
|
||||
BasePageFactory,
|
||||
DummyImageFactory,
|
||||
|
|
@ -209,7 +209,7 @@ class ModuleLevelFactory(factory.DjangoModelFactory):
|
|||
|
||||
class ModuleTypeFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = ModuleType
|
||||
model = ModuleCategory
|
||||
name = 'Lernfeld 1'
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
from django.core.management import BaseCommand
|
||||
from books.categorize_modules import categorize_modules, delete_unused_categories, delete_unused_types, uncategorize_modules
|
||||
|
||||
from books.categorize_modules import create_default_categories
|
||||
from books.categorize_modules import categorize_modules, delete_unused_levels, uncategorize_modules, \
|
||||
delete_unused_categories
|
||||
from books.categorize_modules import create_default_levcels_and_categories
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write("Categorizing modules")
|
||||
uncategorize_modules()
|
||||
create_default_categories()
|
||||
create_default_levcels_and_categories()
|
||||
categorize_modules()
|
||||
delete_unused_types()
|
||||
delete_unused_levels()
|
||||
delete_unused_categories()
|
||||
|
||||
self.stdout.write("Finish categorizing modules")
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
from django.core.management import BaseCommand
|
||||
from books.categorize_modules import categorize_modules, create_default_categories
|
||||
from books.categorize_modules import categorize_modules, create_default_levcels_and_categories
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write("Create defaut categories")
|
||||
create_default_categories()
|
||||
create_default_levcels_and_categories()
|
||||
self.stdout.write("Finish")
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ def default_category():
|
|||
return ModuleLevel.objects.first().pk
|
||||
|
||||
|
||||
class ModuleType(models.Model):
|
||||
class ModuleCategory(models.Model):
|
||||
class Meta:
|
||||
verbose_name = _("module type")
|
||||
verbose_name_plural = _("module types")
|
||||
|
|
@ -43,7 +43,7 @@ class Module(StrictHierarchyPage):
|
|||
|
||||
meta_title = models.CharField(max_length=255, help_text="e.g. 'Intro' or 'Modul 1'")
|
||||
level = models.ForeignKey(ModuleLevel, on_delete=models.SET_NULL, blank=True, null=True)
|
||||
category_type = models.ForeignKey(ModuleType, on_delete=models.SET_NULL, blank=True, null=True)
|
||||
category = models.ForeignKey(ModuleCategory, on_delete=models.SET_NULL, blank=True, null=True)
|
||||
|
||||
|
||||
hero_image = models.ForeignKey(
|
||||
|
|
@ -66,7 +66,7 @@ class Module(StrictHierarchyPage):
|
|||
FieldPanel("title", classname="full title"),
|
||||
FieldPanel("meta_title", classname="full title"),
|
||||
FieldPanel("level"),
|
||||
FieldPanel("category_type"),
|
||||
FieldPanel("category"),
|
||||
FieldPanel("hero_image"),
|
||||
FieldPanel("hero_source"),
|
||||
FieldPanel("teaser"),
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ from graphene_django.filter import DjangoFilterConnectionField
|
|||
|
||||
from assignments.models import StudentSubmission
|
||||
from assignments.schema.types import AssignmentNode, StudentSubmissionNode
|
||||
from books.models import Module, Chapter, ContentBlock, RecentModule, ModuleLevel, ModuleType
|
||||
from books.models import Module, Chapter, ContentBlock, RecentModule, ModuleLevel, ModuleCategory
|
||||
from books.schema.interfaces.module import ModuleInterface
|
||||
from books.schema.nodes.chapter import ChapterNode
|
||||
from books.schema.nodes.module_category import ModuleLevelNode
|
||||
from books.schema.nodes.module_category_type import ModuleCategoryTypeNode
|
||||
from books.schema.nodes.module_level import ModuleLevelNode
|
||||
from books.schema.nodes.module_category import ModuleCategoryNode
|
||||
from notes.models import ModuleBookmark, ContentBlockBookmark, ChapterBookmark
|
||||
from notes.schema import (
|
||||
ModuleBookmarkNode,
|
||||
|
|
@ -37,7 +37,7 @@ class ModuleNode(DjangoObjectType):
|
|||
"hero_source",
|
||||
"topic",
|
||||
"level",
|
||||
"category_type",
|
||||
"category",
|
||||
]
|
||||
filter_fields = {
|
||||
"slug": ["exact", "icontains", "in"],
|
||||
|
|
@ -56,8 +56,8 @@ class ModuleNode(DjangoObjectType):
|
|||
snapshots = graphene.List("books.schema.nodes.SnapshotNode")
|
||||
objective_groups = graphene.List(ObjectiveGroupNode)
|
||||
assignments = graphene.List(AssignmentNode)
|
||||
category = graphene.Field(ModuleLevelNode)
|
||||
category_type = graphene.Field(ModuleCategoryTypeNode)
|
||||
level = graphene.Field(ModuleLevelNode)
|
||||
category = graphene.Field(ModuleCategoryNode)
|
||||
|
||||
def resolve_chapters(self, info, **kwargs):
|
||||
return Chapter.get_by_parent(self)
|
||||
|
|
@ -110,11 +110,11 @@ class ModuleNode(DjangoObjectType):
|
|||
def resolve_objective_groups(parent, info, **kwargs):
|
||||
return parent.objective_groups.all().prefetch_related("hidden_for")
|
||||
|
||||
def resolve_category(self, info, **kwargs):
|
||||
return ModuleLevel.objects.get(pk=self.category_id) if self.category_id else None
|
||||
def resolve_level(self, info, **kwargs):
|
||||
return ModuleLevel.objects.get(pk=self.level_id) if self.level_id else None
|
||||
|
||||
def resolve_category_type(self, info, **kwargs):
|
||||
return ModuleType.objects.get(pk=self.category_type_id) if self.category_type_id else None
|
||||
def resolve_category(self, info, **kwargs):
|
||||
return ModuleCategory.objects.get(pk=self.category_id) if self.category_id else None
|
||||
|
||||
@staticmethod
|
||||
def resolve_snapshots(parent, info, **kwargs):
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ from graphene import relay
|
|||
from graphene import relay
|
||||
from graphene_django import DjangoObjectType
|
||||
|
||||
from books.models import ModuleLevel
|
||||
from books.models import ModuleCategory
|
||||
|
||||
|
||||
class ModuleLevelNode(DjangoObjectType):
|
||||
class ModuleCategoryNode(DjangoObjectType):
|
||||
class Meta:
|
||||
model = ModuleLevel
|
||||
model = ModuleCategory
|
||||
interfaces = (relay.Node,)
|
||||
only_fields = [
|
||||
"id",
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ from graphene import relay
|
|||
from graphene import relay
|
||||
from graphene_django import DjangoObjectType
|
||||
|
||||
from books.models import ModuleType
|
||||
from books.models import ModuleLevel
|
||||
|
||||
|
||||
class ModuleCategoryTypeNode(DjangoObjectType):
|
||||
class ModuleLevelNode(DjangoObjectType):
|
||||
class Meta:
|
||||
model = ModuleType
|
||||
model = ModuleLevel
|
||||
interfaces = (relay.Node,)
|
||||
only_fields = [
|
||||
"id",
|
||||
|
|
@ -7,9 +7,9 @@ from core.logger import get_logger
|
|||
from .connections import TopicConnection, ModuleConnection
|
||||
from .nodes import ContentBlockNode, ChapterNode, ModuleNode, NotFoundFailure, SnapshotNode, \
|
||||
TopicOr404Node
|
||||
from .nodes.module_category import ModuleLevelNode
|
||||
from .nodes.module_category_type import ModuleCategoryTypeNode
|
||||
from ..models import Book, Topic, Module, Chapter, Snapshot, ModuleLevel, ModuleType
|
||||
from .nodes.module_level import ModuleLevelNode
|
||||
from .nodes.module_category import ModuleCategoryNode
|
||||
from ..models import Book, Topic, Module, Chapter, Snapshot, ModuleLevel, ModuleCategory
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
|
@ -30,8 +30,8 @@ class BookQuery(object):
|
|||
module_level = graphene.Field(ModuleLevelNode, id=graphene.ID(required=True))
|
||||
module_levels = graphene.List(ModuleLevelNode)
|
||||
|
||||
module_category_type= graphene.Field(ModuleCategoryTypeNode, id=graphene.ID(required=True))
|
||||
module_category_types = graphene.List(ModuleCategoryTypeNode)
|
||||
module_category = graphene.Field(ModuleCategoryNode, id=graphene.ID(required=True))
|
||||
module_categories = graphene.List(ModuleCategoryNode)
|
||||
|
||||
def resolve_books(self, *args, **kwargs):
|
||||
return Book.objects.filter(**kwargs).live()
|
||||
|
|
@ -92,18 +92,17 @@ class BookQuery(object):
|
|||
def resolve_module_levels(self, *args, **kwargs):
|
||||
return ModuleLevel.objects.filter(**kwargs)
|
||||
|
||||
def resolve_module_category_type(self, info, **kwargs):
|
||||
def resolve_module_category(self, info, **kwargs):
|
||||
id = kwargs.get('id')
|
||||
try:
|
||||
if id is not None:
|
||||
module_category_type = get_object(Module, id)
|
||||
return module_category_type
|
||||
return get_object(Module, id)
|
||||
|
||||
except Module.DoesNotExist:
|
||||
return None
|
||||
|
||||
def resolve_module_category_types(self, *args, **kwargs):
|
||||
return ModuleType.objects.filter(**kwargs)
|
||||
def resolve_module_categories(self, *args, **kwargs):
|
||||
return ModuleCategory.objects.filter(**kwargs)
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,15 +5,15 @@ from wagtail.contrib.modeladmin.options import (
|
|||
)
|
||||
from wagtail import hooks
|
||||
|
||||
from .models.module import ModuleLevel, ModuleType, Module
|
||||
from .models.module import ModuleLevel, ModuleCategory, Module
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class ModuleAdmin(ModelAdmin):
|
||||
model = Module
|
||||
list_display = ("title", "meta_title", "level", "category_type")
|
||||
list_display = ("title", "meta_title", "level", "category")
|
||||
search_fields = ("title", "meta_title")
|
||||
list_filter = ("level", "category_type")
|
||||
list_filter = ("level", "category")
|
||||
|
||||
|
||||
class ModuleLevelAdmin(ModelAdmin):
|
||||
|
|
@ -22,8 +22,8 @@ class ModuleLevelAdmin(ModelAdmin):
|
|||
ordering = ("name",)
|
||||
|
||||
|
||||
class ModuleTypeAdmin(ModelAdmin):
|
||||
model = ModuleType
|
||||
class ModuleCategoryAdmin(ModelAdmin):
|
||||
model = ModuleCategory
|
||||
list_display = ("name",)
|
||||
ordering = ("name",)
|
||||
inspect_view_fields = ("name",)
|
||||
|
|
@ -34,7 +34,7 @@ class InstrumentGroup(ModelAdminGroup):
|
|||
items = (
|
||||
ModuleAdmin,
|
||||
ModuleLevelAdmin,
|
||||
ModuleTypeAdmin,
|
||||
ModuleCategoryAdmin,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue