From abadb84db12788af3ecf525d6c2fb9c72efc2595 Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <ernesto.rico-schmidt@evolaris.net>
Date: Wed, 3 Aug 2016 19:45:57 +0200
Subject: [PATCH] limit timeslot, better naming

---
 program/admin.py  | 25 ++++++++++++++++---------
 program/models.py |  4 ++--
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/program/admin.py b/program/admin.py
index d871e160..591c363f 100644
--- a/program/admin.py
+++ b/program/admin.py
@@ -8,7 +8,7 @@ from datetime import date, datetime, timedelta
 
 
 class BroadcastFormatAdmin(admin.ModelAdmin):
-    list_display = ('format', 'enabled', 'admin_color')
+    list_display = ('format', 'admin_color', 'enabled')
     prepopulated_fields = {'slug': ('format',)}
 
 
@@ -29,8 +29,8 @@ class ShowTopicAdmin(admin.ModelAdmin):
 
 
 class HostAdmin(admin.ModelAdmin):
-    list_display = ('name',)
-    list_filter = ('is_always_visible', 'is_active')
+    list_display = ('name', 'is_active')
+    list_filter = ('is_active', 'is_always_visible')
 
 
 class NoteAdmin(admin.ModelAdmin):
@@ -45,10 +45,17 @@ class NoteAdmin(admin.ModelAdmin):
         return super(NoteAdmin, self).get_queryset(request).filter(show__in=shows)
 
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
-        four_weeks = datetime.now() - timedelta(weeks=4)
+        four_weeks_ago = datetime.now() - timedelta(weeks=4)
+        in_eight_weeks = datetime.now() + timedelta(weeks=8)
         if db_field.name == 'timeslot':
-            shows = request.user.shows.all()
-            kwargs['queryset'] = TimeSlot.objects.filter(show__in=shows, start__gt=four_weeks)
+            try:
+                timeslot_id = int(request.get_full_path().split('/')[-2])
+            except ValueError:
+                shows = request.user.shows.all()
+                kwargs['queryset'] = TimeSlot.objects.filter(show__in=shows, note__isnull=True, start__gt=four_weeks_ago,
+                                                             start__lt=in_eight_weeks)
+            else:
+                kwargs['queryset'] = TimeSlot.objects.filter(note=timeslot_id)
 
         return super(NoteAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
@@ -66,7 +73,7 @@ class ProgramSlotAdmin(admin.ModelAdmin):
     inlines = (TimeSlotInline,)
     fields = (('rrule', 'byweekday'), ('dstart', 'tstart', 'tend'), 'until', 'is_repetition', 'automation_id')
     list_display = ('get_show_name', 'byweekday', 'rrule', 'tstart', 'tend', 'until')
-    list_filter = ('byweekday', 'rrule', 'is_repetition', 'is_active')
+    list_filter = ('is_active', 'byweekday', 'rrule', 'is_repetition')
     ordering = ('byweekday', 'dstart')
     save_on_top = True
     search_fields = ('show__name',)
@@ -96,8 +103,8 @@ class ProgramSlotInline(admin.TabularInline):
 class ShowAdmin(admin.ModelAdmin):
     filter_horizontal = ('hosts', 'owners', 'musicfocus', 'showinformation', 'showtopic')
     inlines = (ProgramSlotInline,)
-    list_display = ('name', 'short_description', 'broadcastformat')
-    list_filter = ('broadcastformat', 'showinformation', 'showtopic', 'musicfocus', 'is_active')
+    list_display = ('name', 'short_description', 'is_active')
+    list_filter = ('is_active', 'broadcastformat', 'showinformation', 'showtopic', 'musicfocus')
     ordering = ('slug',)
     prepopulated_fields = {'slug': ('name',)}
     search_fields = ('name', 'short_description', 'description')
diff --git a/program/models.py b/program/models.py
index 97324b11..eef8f932 100644
--- a/program/models.py
+++ b/program/models.py
@@ -465,10 +465,10 @@ class TimeSlot(models.Model):
         verbose_name_plural = _("Time slots")
 
     def __unicode__(self):
-        start = self.start.strftime('%d. %b %Y %H:%M')
+        start = self.start.strftime('%d.%m.%Y %H:%M')
         end = self.end.strftime('%H:%M')
 
-        return u'%s: %s - %s' % (self.show, start, end)
+        return u'%s - %s  |  %s' % (start, end, self.show.name)
 
     def save(self, *args, **kwargs):
         self.show = self.programslot.show
-- 
GitLab