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()