summaryrefslogtreecommitdiff
path: root/program/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'program/admin.py')
-rw-r--r--program/admin.py58
1 files changed, 40 insertions, 18 deletions
diff --git a/program/admin.py b/program/admin.py
index 6a542bc..e6c331a 100644
--- a/program/admin.py
+++ b/program/admin.py
@@ -4,84 +4,106 @@ from django.utils.translation import ugettext_lazy as _
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):
list_display = ('format', 'enabled', 'admin_color')
prepopulated_fields = {'slug': ('format',)}
+
class MusicFocusAdmin(admin.ModelAdmin):
form = MusicFocusForm
list_display = ('focus', 'abbrev', 'admin_buttons')
prepopulated_fields = {'slug': ('focus',)}
+
class ShowInformationAdmin(admin.ModelAdmin):
list_display = ('information', 'abbrev', 'admin_buttons')
prepopulated_fields = {'slug': ('information',)}
+
class ShowTopicAdmin(admin.ModelAdmin):
list_display = ('topic', 'abbrev', 'admin_buttons')
prepopulated_fields = {'slug': ('topic',)}
+
+class HostAdmin(admin.ModelAdmin):
+ list_display = ('name',)
+ list_filter = ('is_always_visible', 'is_active')
+
+
class NoteAdmin(admin.ModelAdmin):
date_hierarchy = 'start'
list_display = ('title', 'show', 'start', 'status')
list_filter = ('status',)
ordering = ('timeslot',)
+ save_as = True
- def queryset(self, request):
+ def get_queryset(self, request):
shows = request.user.shows.all()
- return super(NoteAdmin, self).queryset(request).filter(show__in=shows)
+ return super(NoteAdmin, self).get_queryset(request).filter(show__in=shows)
- def formfield_for_foreignkey(self, db_field, request, **kwargs):
+ 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, **kwargs)
def save_model(self, request, obj, form, change):
obj.save()
+
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')
- list_filter = ('byweekday', 'rrule', 'is_repetition')
+ list_display = ('show', 'byweekday', 'rrule', 'tstart', 'tend', 'until')
+ list_filter = ('byweekday', 'rrule', 'is_repetition', 'is_active')
ordering = ('byweekday', 'dstart')
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
+
class ShowAdmin(admin.ModelAdmin):
filter_horizontal = ('hosts', 'owners', 'musicfocus', 'showinformation', 'showtopic')
inlines = (ProgramSlotInline,)
- list_display = ('name', 'short_description', 'broadcastformat', 'has_active_programslots')
- list_filter = ('broadcastformat', 'showinformation', 'showtopic', 'musicfocus',)
+ list_display = ('name', 'short_description', 'broadcastformat')
+ list_filter = ('broadcastformat', 'showinformation', 'showtopic', 'musicfocus', 'is_active')
ordering = ('slug',)
prepopulated_fields = {'slug': ('name',)}
search_fields = ('name', 'short_description', 'description')
fields = (
- 'predecessor', 'broadcastformat', 'name', 'slug', 'image', 'image_enabled', 'short_description', 'description', 'email',
- 'website', 'cba_series_id', 'automation_id', 'hosts', 'owners', 'showinformation', 'showtopic', 'musicfocus',
+ 'predecessor', 'broadcastformat', 'name', 'slug', 'image', 'image_enabled', 'short_description', 'description',
+ 'email', 'website', 'cba_series_id', 'automation_id', 'hosts', 'owners', 'showinformation', 'showtopic',
+ 'musicfocus',
)
admin.site.register(BroadcastFormat, BroadcastFormatAdmin)
admin.site.register(MusicFocus, MusicFocusAdmin)
admin.site.register(ShowInformation, ShowInformationAdmin)
admin.site.register(ShowTopic, ShowTopicAdmin)
+admin.site.register(Host, HostAdmin)
admin.site.register(Note, NoteAdmin)
admin.site.register(ProgramSlot, ProgramSlotAdmin)
admin.site.register(Show, ShowAdmin)
-
-admin.site.register(Host)