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