Mercurial > public > madeira
diff videos/management/commands/import_old_videos.py @ 71:e2868ad47a1e
For Django 1.4, using the new manage.py.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 14 Apr 2012 16:40:29 -0500 |
parents | madeira/videos/management/commands/import_old_videos.py@5913ddcebea4 |
children | b7cdfdde3999 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videos/management/commands/import_old_videos.py Sat Apr 14 16:40:29 2012 -0500 @@ -0,0 +1,69 @@ +""" +import_old_videos.py - For importing video data from the older version of this +website. + +""" +import datetime + +from django.core.management.base import LabelCommand +from django.utils import simplejson as json +from django.utils.html import linebreaks + +from videos.models import Collection, Video + + +class Command(LabelCommand): + args = '<filename filename ...>' + help = 'Imports older video & video sets in JSON format' + + collections = {} + + def handle_label(self, filename, **options): + """ + Process the file of older video & video sets in JSON. Convert to the new + model scheme. + + """ + with open(filename, 'rb') as f: + items = json.load(f) + + for item in items: + if item['model'] == 'band.video_set': + self.process_set(item) + + for item in items: + if item['model'] == 'band.video': + self.process_video(item) + + def process_set(self, item): + + fields = item['fields'] + + description = linebreaks(fields['text'].strip()) + + # there are several sets with the same date, so to get the ordering + # right, add the pk as seconds. + + date_added = datetime.datetime.strptime(fields['date'], '%Y-%m-%d') + date_added += datetime.timedelta(seconds=int(item['pk'])) + + coll = Collection( + id=item['pk'], + title=fields['title'].strip(), + date_added=date_added, + description=description) + + coll.save() + self.collections[coll.pk] = coll + + def process_video(self, item): + + fields = item['fields'] + + video = Video( + id=item['pk'], + title=fields['title'].strip(), + embed_code=fields['embed_code'], + collection=self.collections[fields['video_set']], + ) + video.save()