From 8cc0a1dae3ded38934e2f33e169e01d101d1b577 Mon Sep 17 00:00:00 2001 From: Ernesto Rico-Schmidt Date: Wed, 17 Aug 2016 19:00:51 +0200 Subject: removed is_active from Host, Show and ProgramSlot. diff --git a/program/admin.py b/program/admin.py index b840d03..7f09028 100644 --- a/program/admin.py +++ b/program/admin.py @@ -29,8 +29,8 @@ class ShowTopicAdmin(admin.ModelAdmin): class HostAdmin(admin.ModelAdmin): - list_display = ('name', 'is_active') - list_filter = ('is_active', 'is_always_visible') + list_display = ('name',) + list_filter = ('is_always_visible',) class NoteAdmin(admin.ModelAdmin): @@ -73,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 = ('is_active', 'byweekday', 'rrule', 'is_repetition') + list_filter = ('byweekday', 'rrule', 'is_repetition') ordering = ('byweekday', 'dstart') save_on_top = True search_fields = ('show__name',) @@ -103,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', 'is_active') - list_filter = ('is_active', 'broadcastformat', 'showinformation', 'showtopic', 'musicfocus') + list_display = ('name', 'short_description') + list_filter = ('broadcastformat', 'showinformation', 'showtopic', 'musicfocus') ordering = ('slug',) prepopulated_fields = {'slug': ('name',)} search_fields = ('name', 'short_description', 'description') diff --git a/program/migrations/0009_host_remove_is_active.py b/program/migrations/0009_host_remove_is_active.py new file mode 100644 index 0000000..f6647f0 --- /dev/null +++ b/program/migrations/0009_host_remove_is_active.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('program', '0008_show_remove_automation_id'), + ] + + operations = [ + migrations.RemoveField( + model_name='host', + name='is_active', + ), + ] diff --git a/program/migrations/0010_show_remove_is_active.py b/program/migrations/0010_show_remove_is_active.py new file mode 100644 index 0000000..543bdc1 --- /dev/null +++ b/program/migrations/0010_show_remove_is_active.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('program', '0009_host_remove_is_active'), + ] + + operations = [ + migrations.RemoveField( + model_name='show', + name='is_active', + ), + ] diff --git a/program/migrations/0011_programslot_remove_is_active.py b/program/migrations/0011_programslot_remove_is_active.py new file mode 100644 index 0000000..ab8295a --- /dev/null +++ b/program/migrations/0011_programslot_remove_is_active.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('program', '0010_show_remove_is_active.py'), + ] + + operations = [ + migrations.RemoveField( + model_name='programslot', + name='is_active', + ), + ] diff --git a/program/models.py b/program/models.py index b11d180..8f6a65b 100644 --- a/program/models.py +++ b/program/models.py @@ -211,7 +211,6 @@ class MusicFocus(models.Model): class Host(models.Model): name = models.CharField(_("Name"), max_length=128) is_always_visible = models.BooleanField(_("Is always visible"), default=False) - is_active = models.BooleanField(_("Is active"), default=True, editable=False) email = models.EmailField(_("E-Mail"), blank=True) website = models.URLField(_("Website"), blank=True) @@ -243,7 +242,6 @@ class Show(models.Model): description = tinymce_models.HTMLField(_("Description"), blank=True, null=True) email = models.EmailField(_("E-Mail"), blank=True, null=True) website = models.URLField(_("Website"), blank=True, null=True) - is_active = models.BooleanField(_("Is active"), default=True, editable=False) created = models.DateTimeField(auto_now_add=True, editable=False) last_updated = models.DateTimeField(auto_now=True, editable=False) @@ -306,7 +304,6 @@ class ProgramSlot(models.Model): tstart = models.TimeField(_("Start time")) tend = models.TimeField(_("End time")) until = models.DateField(_("Last date")) - is_active = models.BooleanField(_("Is active"), default=True, editable=False) is_repetition = models.BooleanField(_("Is repetition"), default=False) automation_id = models.IntegerField(_("Automation ID"), blank=True, null=True, choices=get_automation_id_choices()) created = models.DateTimeField(auto_now_add=True, editable=False) @@ -351,9 +348,6 @@ class ProgramSlot(models.Model): else: old = False - self.is_active = self.until > date.today() - self.show.is_active = self.until > date.today() - super(ProgramSlot, self).save(*args, **kwargs) if self.rrule.freq == 0: diff --git a/program/templates/host_detail.html b/program/templates/host_detail.html index 73182d6..87a4c12 100644 --- a/program/templates/host_detail.html +++ b/program/templates/host_detail.html @@ -10,12 +10,7 @@
Sendungen
{% for show in host.shows.all %} - {% if show.is_active %} - - {% else %} -
{{ show }}
- {% endif %} +
{{ show }}
{% endfor %}
diff --git a/program/templates/show_detail.html b/program/templates/show_detail.html index 47d20a1..9fb9fb0 100644 --- a/program/templates/show_detail.html +++ b/program/templates/show_detail.html @@ -14,9 +14,7 @@ {% if show.id != 1 %}

{% for slot in show.programslots.all %} - {% if slot.is_active %} - {{ slot }}
- {% endif %} + {{ slot }}
{% endfor %}

{% endif %} diff --git a/program/templates/show_list.html b/program/templates/show_list.html index 62594e9..96ea497 100644 --- a/program/templates/show_list.html +++ b/program/templates/show_list.html @@ -41,9 +41,7 @@

{{ show.name }}

{{ show.short_description }}

diff --git a/program/views.py b/program/views.py index cfebbd1..94164b6 100644 --- a/program/views.py +++ b/program/views.py @@ -15,19 +15,19 @@ from program.utils import tofirstdayinisoweek class HostListView(ListView): context_object_name = 'host_list' - queryset = Host.objects.filter(Q(is_active=True) | Q(is_always_visible=True)).distinct() + queryset = Host.objects.filter(is_always_visible=True).distinct() template_name = 'host_list.html' class HostDetailView(DetailView): context_object_name = 'host' - queryset = Host.objects.filter(Q(is_active=True) | Q(is_always_visible=True)).distinct() + queryset = Host.objects.filter(is_always_visible=True).distinct() template_name = 'host_detail.html' class ShowListView(ListView): context_object_name = 'show_list' - queryset = Show.objects.filter(is_active=True).exclude(id=1).distinct() + queryset = Show.objects.exclude(id=1).distinct() template_name = 'show_list.html' def get_queryset(self): -- cgit v0.10.2 From 5983b58a07790f5f8f5fbe93be59a788189e4225 Mon Sep 17 00:00:00 2001 From: Ernesto Rico-Schmidt Date: Wed, 17 Aug 2016 19:11:35 +0200 Subject: fixed copy&paste error diff --git a/program/migrations/0011_programslot_remove_is_active.py b/program/migrations/0011_programslot_remove_is_active.py index ab8295a..f73a01e 100644 --- a/program/migrations/0011_programslot_remove_is_active.py +++ b/program/migrations/0011_programslot_remove_is_active.py @@ -7,7 +7,7 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('program', '0010_show_remove_is_active.py'), + ('program', '0010_show_remove_is_active'), ] operations = [ -- cgit v0.10.2 From 36f76b359c1e2c3dc98f1e02cf9bcab748f8b489 Mon Sep 17 00:00:00 2001 From: Ernesto Rico-Schmidt Date: Wed, 17 Aug 2016 21:29:01 +0200 Subject: removed update_{hosts,programslots,shows} management commands. diff --git a/program/management/commands/update_hosts.py b/program/management/commands/update_hosts.py deleted file mode 100644 index 3cb143b..0000000 --- a/program/management/commands/update_hosts.py +++ /dev/null @@ -1,29 +0,0 @@ -from django.core.management.base import NoArgsCommand - -from program.models import Host - - -class Command(NoArgsCommand): - help = 'update host by setting is_active' - - def handle_noargs(self, **options): - activated = 0 - deactivated = 0 - - for host in Host.objects.all(): - active_shows = 0 - for show in host.shows.all(): - if show.is_active: - active_shows += 1 - else: - active_shows -= 1 - - host.is_active = active_shows > 0 - host.save() - - if host.is_active: - activated += 1 - else: - deactivated += 1 - - print "%s hosts activated, %s hosts de-activated " % (activated, deactivated) diff --git a/program/management/commands/update_programslots.py b/program/management/commands/update_programslots.py deleted file mode 100644 index 6f7ec90..0000000 --- a/program/management/commands/update_programslots.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.core.management.base import NoArgsCommand - -from program.models import ProgramSlot - -from datetime import datetime - - -class Command(NoArgsCommand): - help = 'update programslots by setting is_active' - - def handle_noargs(self, **options): - deactivated = ProgramSlot.objects.filter(until__lt=datetime.now()).update(is_active=False) - activated = ProgramSlot.objects.filter(until__gt=datetime.now()).update(is_active=True) - - print "%s program slots activated, %s program slots de-activated" % (activated, deactivated) diff --git a/program/management/commands/update_shows.py b/program/management/commands/update_shows.py deleted file mode 100644 index 0dafb88..0000000 --- a/program/management/commands/update_shows.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.core.management.base import NoArgsCommand - -from program.models import Show - -from datetime import datetime - - -class Command(NoArgsCommand): - help = 'update shows by setting is_active' - - def handle_noargs(self, **options): - deactivated = Show.objects.exclude(id=1).filter(programslots__until__lt=datetime.now()).update(is_active=False) - activated = Show.objects.exclude(id=1).filter(programslots__until__gt=datetime.now()).distinct().update(is_active=True) - - print "%s shows activated, %s shows de-activated" % (activated, deactivated) -- cgit v0.10.2 From 8531fd1756b37cf4c5d7c14d22dc9fb5057e0e74 Mon Sep 17 00:00:00 2001 From: Ernesto Rico-Schmidt Date: Wed, 17 Aug 2016 21:30:17 +0200 Subject: added ActivityFilter for Hosts, Shows and ProgramSlots. diff --git a/program/admin.py b/program/admin.py index 7f09028..444f90b 100644 --- a/program/admin.py +++ b/program/admin.py @@ -7,6 +7,47 @@ from forms import MusicFocusForm from datetime import date, datetime, timedelta +class ActivityFilter(admin.SimpleListFilter): + title = _("Activity") + + def lookups(self, request, model_admin): + return ( + ('yes', _("active")), + ('no', _("inactive")) + ) + + def queryset(self, request, queryset): + if self.parameter_name == 'has_timeslots': # active/inactive ProgramSlots + if self.value() == 'yes': + return queryset.filter(until__gt=datetime.now()).distinct() + if self.value() == 'no': + return queryset.filter(until__lt=datetime.now()).distinct() + + if self.parameter_name == 'has_programslots_timeslots': # active/inactive Shows + if self.value() == 'yes': + return queryset.filter(programslots__until__gt=datetime.now()).distinct() + if self.value() == 'no': + return queryset.filter(programslots__until__lt=datetime.now()).distinct() + + if self.parameter_name == 'has_shows_programslots_timeslots': # active/inactive Hosts + if self.value() == 'yes': + return queryset.filter(shows__programslots__until__gt=datetime.now()).distinct() + if self.value() == 'no': + return queryset.filter(shows__programslots__until__lt=datetime.now()).distinct() + + +class ActiveProgramSlotsFilter(ActivityFilter): + parameter_name = 'has_timeslots' + + +class ActiveShowsFilter(ActivityFilter): + parameter_name = 'has_programslots_timeslots' + + +class ActiveHostsFilter(ActivityFilter): + parameter_name = 'has_shows_programslots_timeslots' + + class BroadcastFormatAdmin(admin.ModelAdmin): list_display = ('format', 'admin_color', 'enabled') prepopulated_fields = {'slug': ('format',)} @@ -30,7 +71,7 @@ class ShowTopicAdmin(admin.ModelAdmin): class HostAdmin(admin.ModelAdmin): list_display = ('name',) - list_filter = ('is_always_visible',) + list_filter = (ActiveHostsFilter, 'is_always_visible',) class NoteAdmin(admin.ModelAdmin): @@ -73,7 +114,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') + list_filter = (ActiveProgramSlotsFilter, 'byweekday', 'rrule', 'is_repetition') ordering = ('byweekday', 'dstart') save_on_top = True search_fields = ('show__name',) @@ -85,7 +126,7 @@ class ProgramSlotAdmin(admin.ModelAdmin): if renewed == 1: message = _("1 program slot was renewed until %s") % until else: - message = _("%s program slots were renewed until %s") % until + message = _("%s program slots were renewed until %s") % (renewed, until) self.message_user(request, message) renew.short_description = _("Renew selected program slots") @@ -104,7 +145,7 @@ class ShowAdmin(admin.ModelAdmin): filter_horizontal = ('hosts', 'owners', 'musicfocus', 'showinformation', 'showtopic') inlines = (ProgramSlotInline,) list_display = ('name', 'short_description') - list_filter = ('broadcastformat', 'showinformation', 'showtopic', 'musicfocus') + list_filter = (ActiveShowsFilter, 'broadcastformat', 'showinformation', 'showtopic', 'musicfocus') ordering = ('slug',) prepopulated_fields = {'slug': ('name',)} search_fields = ('name', 'short_description', 'description') -- cgit v0.10.2