From f2c4d866489a4aef845d7c422b98febf402472dc Mon Sep 17 00:00:00 2001
From: Ernesto Rico-Schmidt <e.rico.schmidt@gmail.com>
Date: Thu, 1 May 2014 23:42:21 +0200
Subject: added save_as to NoteAdmin and limited time slot to the last four
 weeks. made renew action inside a method


diff --git a/program/admin.py b/program/admin.py
index 7b52fa4..0fa7461 100644
--- a/program/admin.py
+++ b/program/admin.py
@@ -5,7 +5,7 @@ from models import (BroadcastFormat, MusicFocus, ShowInformation, ShowTopic,
                     Host, Note, ProgramSlot, Show, TimeSlot)
 from forms import MusicFocusForm
 
-from datetime import date
+from datetime import date, datetime, timedelta
 
 
 class BroadcastFormatAdmin(admin.ModelAdmin):
@@ -34,15 +34,18 @@ class NoteAdmin(admin.ModelAdmin):
     list_display = ('title', 'show', 'start', 'status')
     list_filter = ('status',)
     ordering = ('timeslot',)
+    save_as = True
 
     def queryset(self, request):
         shows = request.user.shows.all()
         return super(NoteAdmin, self).queryset(request).filter(show__in=shows)
 
     def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
+        four_weeks = datetime.now() - timedelta(weeks=4)
         if db_field.name == 'timeslot':
             shows = request.user.shows.all()
-            kwargs['queryset'] = TimeSlot.objects.filter(show__in=shows)
+            kwargs['queryset'] = TimeSlot.objects.filter(show__in=shows,
+                                                         start__gt=four_weeks)
 
         return super(NoteAdmin, self).formfield_for_foreignkey(db_field,
                                                                request,
@@ -56,16 +59,8 @@ class TimeSlotInline(admin.TabularInline):
     model = TimeSlot
 
 
-def renew(modeladmin, request, queryset):
-    next_year = date.today().year + 1
-    queryset.update(until=date(next_year, 12, 31))
-
-
-renew.short_description = _("Renew selected time slots")
-
-
 class ProgramSlotAdmin(admin.ModelAdmin):
-    actions = (renew,)
+    actions = ('renew',)
     inlines = (TimeSlotInline,)
     list_display = ('show', 'byweekday', 'rrule', 'tstart', 'tend', 'until',
                     'timeslot_count')
@@ -74,6 +69,17 @@ class ProgramSlotAdmin(admin.ModelAdmin):
     save_on_top = True
     search_fields = ('show__name',)
 
+    def renew(self, request, queryset):
+        next_year = date.today().year + 1
+        until = date(next_year, 12, 31)
+        renewed = queryset.update(until=until)
+        if renewed == 1:
+            message = _("1 program slot was renewed until %s") % until
+        else:
+            message = _("%s program slots were renewed until %s") % until
+        self.message_user(request, message)
+    renew.short_description = _("Renew selected program slots")
+
 
 class ProgramSlotInline(admin.TabularInline):
     model = ProgramSlot
-- 
cgit v0.10.2