From aafc069b9d6945138c2c2de1228f1a52c22d3c40 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 17 Feb 2021 18:50:37 +0100 Subject: fix model for new language field and add language filter to show list template diff --git a/program/migrations/0012_add_language.py b/program/migrations/0012_add_language.py index 59be77d..21d3c4f 100644 --- a/program/migrations/0012_add_language.py +++ b/program/migrations/0012_add_language.py @@ -15,7 +15,8 @@ class Migration(migrations.Migration): name='Language', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(max_length=32, verbose_name='Language')), + ('slug', models.SlugField(unique=True, max_length=32, verbose_name='Slug')), + ('name', models.CharField(max_length=32, verbose_name='Name')), ('native_name', models.CharField(max_length=32, verbose_name='Native Name')), ], options={ diff --git a/program/models.py b/program/models.py index dd6cac4..7951c35 100644 --- a/program/models.py +++ b/program/models.py @@ -209,11 +209,12 @@ class MusicFocus(models.Model): class Language(models.Model): - name = models.CharField(_("Language"), max_length=32) + slug = models.SlugField(_("Slug"), max_length=32, unique=True) + name = models.CharField(_("Name"), max_length=32) native_name = models.CharField(_("Native Name"), max_length=32) class Meta: - ordering = ('language',) + ordering = ('name',) verbose_name = _("Language") verbose_name_plural = _("Languages") @@ -246,7 +247,7 @@ class Show(models.Model): predecessor = models.ForeignKey('self', blank=True, null=True, related_name='successors', verbose_name=_("Predecessor")) hosts = models.ManyToManyField(Host, blank=True, related_name='shows', verbose_name=_("Hosts")) owners = models.ManyToManyField(User, blank=True, related_name='shows', verbose_name=_("Owners")) - language = models.ManyToManyField(Language, blank=True, related_name='language', verbose_name=_("Language")) + language = models.ManyToManyField(Language, blank=True, related_name='shows', verbose_name=_("Language")) broadcastformat = models.ForeignKey(BroadcastFormat, related_name='shows', verbose_name=_("Broadcast format")) showinformation = models.ManyToManyField(ShowInformation, blank=True, related_name='shows', verbose_name=_("Show information")) showtopic = models.ManyToManyField(ShowTopic, blank=True, related_name='shows', verbose_name=_("Show topic")) diff --git a/program/templates/boxes/language.html b/program/templates/boxes/language.html new file mode 100644 index 0000000..050c342 --- /dev/null +++ b/program/templates/boxes/language.html @@ -0,0 +1,15 @@ +{% if language_list %} +
+
Sprache
+
+ +
+
+{% endif %} diff --git a/program/templates/day_schedule.html b/program/templates/day_schedule.html index eb0d3d7..a117a10 100644 --- a/program/templates/day_schedule.html +++ b/program/templates/day_schedule.html @@ -46,6 +46,7 @@ {% musicfocus %} {% showinformation %} {% showtopic %} +{% language %} {% endcomment %} diff --git a/program/templates/show_list.html b/program/templates/show_list.html index d9b9a47..fc02872 100644 --- a/program/templates/show_list.html +++ b/program/templates/show_list.html @@ -15,6 +15,7 @@ {% musicfocus %} {% showinformation %} {% showtopic %} + {% language %}
diff --git a/program/templatetags/content_boxes.py b/program/templatetags/content_boxes.py index 2d1745e..ece466b 100644 --- a/program/templatetags/content_boxes.py +++ b/program/templatetags/content_boxes.py @@ -1,6 +1,6 @@ from django import template -from program.models import BroadcastFormat, MusicFocus, ShowInformation, ShowTopic +from program.models import BroadcastFormat, MusicFocus, ShowInformation, ShowTopic, Language register = template.Library() @@ -23,3 +23,8 @@ def showinformation(): @register.inclusion_tag('boxes/showtopic.html') def showtopic(): return {'showtopic_list': ShowTopic.objects.all()} + + +@register.inclusion_tag('boxes/language.html') +def language(): + return {'language_list': Language.objects.all()} diff --git a/program/views.py b/program/views.py index 365a4db..256ad5d 100644 --- a/program/views.py +++ b/program/views.py @@ -8,7 +8,7 @@ from django.views.generic.base import TemplateView from django.views.generic.detail import DetailView from django.views.generic.list import ListView -from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic, TimeSlot, Host +from models import BroadcastFormat, MusicFocus, Note, Show, ShowInformation, ShowTopic, Language, TimeSlot, Host from program.utils import tofirstdayinisoweek, get_cached_shows @@ -43,6 +43,9 @@ class ShowListView(ListView): elif 'showtopic' in self.request.GET: showtopic = get_object_or_404(ShowTopic, slug=self.request.GET['showtopic']) queryset = queryset.filter(showtopic=showtopic) + elif 'language' in self.request.GET: + language = get_object_or_404(Language, slug=self.request.GET['language']) + queryset = queryset.filter(language=language) return queryset @@ -108,6 +111,9 @@ class DayScheduleView(TemplateView): elif 'showtopic' in self.request.GET: showtopic = get_object_or_404(ShowTopic, slug=self.request.GET['showtopic']) context['showtopic'] = timeslots.filter(show__showtopic=showtopic) + elif 'language' in self.request.GET: + language = get_object_or_404(Language, slug=self.request.GET['language']) + context['showtopic'] = timeslots.filter(show__language=language) else: context['timeslots'] = timeslots return context @@ -214,6 +220,7 @@ def json_day_schedule(request, year=None, month=None, day=None): return HttpResponse(json.dumps(schedule, ensure_ascii=False, encoding='utf8').encode('utf8'), content_type="application/json; charset=utf-8") + def json_timeslots_specials(request): specials = {} shows = get_cached_shows()['shows'] -- cgit v0.10.2