diff options
| author | Alban Gruin | 2017-10-01 16:54:42 +0200 | 
|---|---|---|
| committer | Alban Gruin | 2017-10-01 16:54:42 +0200 | 
| commit | 5d59112a9c7badc2cc0a48d1a8e33d48e1e6e719 (patch) | |
| tree | 86fe355ad1a3d0f086867dc585d202235f990db8 | |
| parent | f0c61f1a3a26f8c76f43b21f7860d83041b7fe89 (diff) | |
Ajout d’une colonne pour cacher un groupe dans la liste des groupes.
Ajout d’actions personnalisées dans l’interface d’administration pour
cacher et afficher plusieurs groupes à la fois.
Filtrage des groupes cachés dans get_relevant_children() et
get_relevant_groups().
| -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 \  | 
