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
|
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.core.management.base import NoArgsCommand
from django.template.defaultfilters import slugify
from django.utils.html import clean_html, strip_tags
import MySQLdb
from program.models import BroadcastFormat, Host, Show
USER = 'helsinki'
PASSWD = 'helsinki'
DB = 'helsinki'
TALK = BroadcastFormat.objects.get(pk=1)
class Command(NoArgsCommand):
help = 'Import shows 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, beschreibung, web, macher
FROM sendungen
WHERE letzter_termin > current_date AND titel NOT LIKE 'Musikprogramm' AND titel NOT LIKE '%%(Wiederholung)'
ORDER BY titel, beginn, ende""")
counter = 0
for titel, beschreibung, web, macher in cursor.fetchall():
titel = strip_tags(titel.decode('latin1').encode('utf8'))
beschreibung = clean_html(beschreibung.decode('latin1').encode('utf8'))
slug = slugify(titel)
hosts = []
for macher in macher.decode('latin1').encode('utf8').split(','):
macher = macher.strip()
try:
host = Host.objects.get(name=macher)
except MultipleObjectsReturned:
print 'multiple hosts with name "%s" found' % macher
except ObjectDoesNotExist:
print 'host with name "%s" not found' % macher
else:
hosts.append(host)
try:
show = Show.objects.get(name=titel)
print 'sendung "%s" already imported as show "%s"' % (titel, show)
except ObjectDoesNotExist:
show = Show(broadcastformat=TALK, name=titel, slug=slug, short_description='FIXME', description=beschreibung)
try:
show.save()
counter += 1
except:
print 'sendung "%s" could not be imported' % titel
else:
for h in hosts:
show.hosts.add(h)
show.save()
cursor.close()
connection.close()
print '%i shows imported' % counter
|