1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
|