From 8fa0d03d3509290ea6f523c2223966b1a2b73488 Mon Sep 17 00:00:00 2001
From: Christian Pointner <equinox@helsinki.at>
Date: Wed, 17 Feb 2021 14:33:49 +0100
Subject: add language to model


diff --git a/program/admin.py b/program/admin.py
index eb55554..d5be9a1 100644
--- a/program/admin.py
+++ b/program/admin.py
@@ -1,7 +1,7 @@
 from django.contrib import admin
 from django.utils.translation import ugettext_lazy as _
 
-from models import BroadcastFormat, MusicFocus, ShowInformation, ShowTopic, Host, Note, ProgramSlot, Show, TimeSlot
+from models import BroadcastFormat, MusicFocus, ShowInformation, ShowTopic, Language, Host, Note, ProgramSlot, Show, TimeSlot
 from forms import MusicFocusForm
 
 from datetime import date, datetime, timedelta
@@ -69,6 +69,10 @@ class ShowTopicAdmin(admin.ModelAdmin):
     prepopulated_fields = {'slug': ('topic',)}
 
 
+class LanguageAdmin(admin.ModelAdmin):
+    list_display = ('name', 'native_name')
+
+
 class HostAdmin(admin.ModelAdmin):
     list_display = ('name',)
     list_filter = (ActiveHostsFilter, 'is_always_visible',)
@@ -142,16 +146,16 @@ class ProgramSlotInline(admin.TabularInline):
 
 
 class ShowAdmin(admin.ModelAdmin):
-    filter_horizontal = ('hosts', 'owners', 'musicfocus', 'showinformation', 'showtopic')
+    filter_horizontal = ('hosts', 'owners', 'musicfocus', 'showinformation', 'showtopic', 'language')
     inlines = (ProgramSlotInline,)
     list_display = ('name', 'short_description')
-    list_filter = (ActiveShowsFilter, 'broadcastformat', 'showinformation', 'showtopic', 'musicfocus')
+    list_filter = (ActiveShowsFilter, 'broadcastformat', 'showinformation', 'showtopic', 'musicfocus', 'language')
     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', 'hosts', 'owners', 'showinformation', 'showtopic',
+        'email', 'website', 'hosts', 'owners', 'showinformation', 'showtopic', 'language',
         'musicfocus',
     )
 
@@ -166,10 +170,12 @@ class ShowAdmin(admin.ModelAdmin):
 
         return super(ShowAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
 
+
 admin.site.register(BroadcastFormat, BroadcastFormatAdmin)
 admin.site.register(MusicFocus, MusicFocusAdmin)
 admin.site.register(ShowInformation, ShowInformationAdmin)
 admin.site.register(ShowTopic, ShowTopicAdmin)
+admin.site.register(Language, LanguageAdmin)
 admin.site.register(Host, HostAdmin)
 admin.site.register(Note, NoteAdmin)
 admin.site.register(ProgramSlot, ProgramSlotAdmin)
diff --git a/program/migrations/0012_add_language.py b/program/migrations/0012_add_language.py
new file mode 100644
index 0000000..59be77d
--- /dev/null
+++ b/program/migrations/0012_add_language.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('program', '0011_programslot_remove_is_active'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            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')),
+                ('native_name', models.CharField(max_length=32, verbose_name='Native Name')),
+            ],
+            options={
+                'ordering': ('language',),
+                'verbose_name': 'Language',
+                'verbose_name_plural': 'Languages',
+            },
+        ),
+        migrations.AddField(
+            model_name='show',
+            name='language',
+            field=models.ManyToManyField(related_name='language', verbose_name='Language', to='program.Language', blank=True),
+        ),
+    ]
diff --git a/program/models.py b/program/models.py
index d52d1bf..dd6cac4 100644
--- a/program/models.py
+++ b/program/models.py
@@ -208,6 +208,19 @@ class MusicFocus(models.Model):
         return u'%s' % self.focus
 
 
+class Language(models.Model):
+    name = models.CharField(_("Language"), max_length=32)
+    native_name = models.CharField(_("Native Name"), max_length=32)
+
+    class Meta:
+        ordering = ('language',)
+        verbose_name = _("Language")
+        verbose_name_plural = _("Languages")
+
+    def __unicode__(self):
+        return '%s' % self.name
+
+
 class Host(models.Model):
     name = models.CharField(_("Name"), max_length=128)
     is_always_visible = models.BooleanField(_("Is always visible"), default=False)
@@ -233,6 +246,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"))
     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"))
-- 
cgit v0.10.2