summaryrefslogtreecommitdiff
path: root/program/management/commands/importprogramslots.py
diff options
context:
space:
mode:
Diffstat (limited to 'program/management/commands/importprogramslots.py')
-rw-r--r--program/management/commands/importprogramslots.py96
1 files changed, 96 insertions, 0 deletions
diff --git a/program/management/commands/importprogramslots.py b/program/management/commands/importprogramslots.py
new file mode 100644
index 0000000..86e3038
--- /dev/null
+++ b/program/management/commands/importprogramslots.py
@@ -0,0 +1,96 @@
+from django.core.exceptions import ObjectDoesNotExist
+from django.core.management.base import NoArgsCommand
+from django.utils.html import strip_tags
+
+from datetime import time
+import MySQLdb
+
+from models import Show, ProgramSlot, RRule
+
+USER = 'helsinki'
+PASSWD = 'helsinki'
+DB = 'helsinki'
+
+RRULES = {
+ 0: RRule.objects.get(pk=1),
+ 7: RRule.objects.get(pk=3),
+ 14: RRule.objects.get(pk=4),
+ 28: RRule.objects.get(pk=5)
+}
+
+class Command(NoArgsCommand):
+ help = 'Import programslots from the current program'
+
+ def handle_noargs(self, **options):
+ connection = MySQLdb.connect(user=USER, passwd=PASSWD, db=DB)
+ cursor = connection.cursor()
+
+ cursor.execute("""SELECT titel, beginn, ende, erster_termin, letzter_termin, rhytmus, termin
+FROM sendungen
+WHERE letzter_termin > current_date AND titel NOT LIKE 'Musikprogramm' AND titel NOT LIKE '%%(Wiederholung)'""")
+
+ counter = 0
+
+ for titel, beginn, ende, erster_termin, letzter_termin, rhytmus, termin in cursor.fetchall():
+ titel = strip_tags(titel)
+
+ hours, seconds = divmod(beginn.seconds, 3600)
+ minutes, seconds = divmod(seconds, 60)
+ tstart = time(hour=hours, minute=minutes, second=seconds)
+
+ hours, seconds = divmod(ende.seconds, 3600)
+ minutes, seconds = divmod(seconds, 60)
+ tend = time(hour=hours, minute=minutes, second=seconds)
+
+ try:
+ rrule = RRULES[rhytmus]
+ try:
+ show = Show.objects.get(name=titel)
+ except ObjectDoesNotExist:
+ print 'show with name "%s" not found' % titel
+ else:
+ programslot = ProgramSlot(rrule=rrule, byweekday=termin, show=show, dstart=erster_termin, tstart=tstart,
+ tend=tend, until=letzter_termin)
+ try:
+ programslot.save()
+ counter += 1
+ except:
+ pass
+ except KeyError:
+ print 'rhythmus "%i" is not supported for sendung "%s"' % (rhytmus, titel)
+
+ cursor.execute("""SELECT titel, beginn, ende, erster_termin, letzter_termin, rhytmus, termin
+FROM sendungen
+WHERE letzter_termin > current_date AND titel LIKE '%%(Wiederholung)'""")
+
+ for titel, beginn, ende, erster_termin, letzter_termin, rhytmus, termin in cursor.fetchall():
+ titel = strip_tags(titel[:-15])
+
+ hours, seconds = divmod(beginn.seconds, 3600)
+ minutes, seconds = divmod(seconds, 60)
+ tstart = time(hour=hours, minute=minutes, second=seconds)
+
+ hours, seconds = divmod(ende.seconds, 3600)
+ minutes, seconds = divmod(seconds, 60)
+ tend = time(hour=hours, minute=minutes, second=seconds)
+
+ try:
+ rrule = RRULES[rhytmus]
+ try:
+ show = Show.objects.get(name=titel)
+ except ObjectDoesNotExist:
+ print 'show with name "%s" not found' % titel
+ else:
+ programslot = ProgramSlot(rrule=rrule, byweekday=termin, show=show, dstart=erster_termin, tstart=tstart, tend=tend, until=letzter_termin, is_repetition=True)
+ try:
+ programslot.save()
+ counter += 1
+ except:
+ pass
+ except KeyError:
+ print 'rhythmus "%i" is not supported for sendung "%s"' % (rhytmus, titel)
+
+ cursor.close()
+ connection.close()
+
+ print '%i programslots imported' % counter