diff options
-rw-r--r-- | admin.py | 14 | ||||
-rw-r--r-- | models.py | 6 |
2 files changed, 16 insertions, 4 deletions
@@ -16,6 +16,14 @@ from django.contrib import admin from .models import Timetable, Group, Room, Course, Year +def make_hidden(modeladmin, request, queryset): + queryset.update(hidden=True) +make_hidden.short_description = "Cacher les groupes sélectionnés" + +def make_visible(modeladmin, request, queryset): + queryset.update(hidden=False) +make_visible.short_description = "Afficher les groupes sélectionnés" + @admin.register(Year) class YearAdmin(admin.ModelAdmin): @@ -35,12 +43,14 @@ class TimetableAdmin(admin.ModelAdmin): @admin.register(Group) class GroupAdmin(admin.ModelAdmin): fieldsets = ( - (None, {"fields": ("name", "celcat_name", "timetable",)}), + (None, {"fields": ("name", "celcat_name", "timetable", "hidden",)}), ("Groupes", {"fields": ("mention", "subgroup", "td", "tp", "parent",)}),) - list_display = ("name", "timetable",) + list_display = ("name", "timetable", "hidden",) + list_editable = ("hidden",) list_filter = ("timetable",) ordering = ("timetable",) readonly_fields = ("celcat_name", "mention", "subgroup", "td", "tp",) + actions = (make_hidden, make_visible,) @admin.register(Room) @@ -71,13 +71,13 @@ class GroupManager(Manager): parent_in = self.get_queryset().filter(parent=group) return self.get_queryset().filter(Q(parent=group) | Q(parent__in=parent_in)) \ .annotate(children_count=Count("children")) \ - .filter(children_count=0) \ + .filter(children_count=0, hidden=False) \ .order_by("name") def get_relevant_groups(self, *args, **criteria): return self.get_queryset().filter(*args, **criteria) \ .annotate(children_count=Count("children")) \ - .filter(children_count=0) + .filter(children_count=0, hidden=False) class Group(models.Model): @@ -99,6 +99,8 @@ class Group(models.Model): slug = models.SlugField(max_length=64, default="") + hidden = models.BooleanField(verbose_name="caché", default=False) + def corresponds_to(self, timetable_id, mention, subgroup, td, tp): return self.timetable.id == timetable_id and \ self.mention.startswith(mention) and \ |