diff band/management/commands/import_old_band.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/band/management/commands/import_old_band.py@5ff9c130f47f
children b7cdfdde3999
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/band/management/commands/import_old_band.py	Sat Apr 14 16:40:29 2012 -0500
@@ -0,0 +1,149 @@
+"""
+import_old_band.py - For importing band models 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 photologue.models import Photo
+
+from band.models import (Member, Gear, RecordLabel, Album, AlbumTrack,
+        LabelRelease, AlbumMerchant, Merchandise)
+
+
+class Command(LabelCommand):
+    args = '<filename filename ...>'
+    help = 'Imports older band model objects in JSON format'
+
+    members = {}
+    albums = {}
+    labels = {}
+
+    def handle_label(self, filename, **options):
+        """
+        Process the file of older model objects 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.member':
+                self.process_member(item)
+            elif item['model'] == 'band.gear':
+                self.process_gear(item)
+            elif item['model'] == 'band.record_label':
+                self.process_record_label(item)
+            elif item['model'] == 'band.album':
+                self.process_album(item)
+            elif item['model'] == 'band.album_track':
+                self.process_track(item)
+            elif item['model'] == 'band.label_release':
+                self.process_release(item)
+            elif item['model'] == 'band.album_merchant':
+                self.process_merchant(item)
+            elif item['model'] == 'band.merchandise':
+                self.process_merch(item)
+
+    def process_member(self, item):
+
+        fields = item['fields']
+
+        start_date = datetime.datetime.strptime(fields['start_date'], '%Y-%m-%d')
+
+        if fields['end_date'] == u'1985-01-01':
+            end_date = None
+        else:
+            end_date = datetime.datetime.strptime(fields['end_date'], '%Y-%m-%d')
+
+        member = Member(id=item['pk'],
+                name=fields['name'],
+                nickname=fields['nickname'],
+                instrument=fields['instrument'],
+                bio=fields['bio'],
+                photo=fields['photo'],
+                order=int(fields['order']),
+                is_active=fields['is_active'],
+                start_date=start_date,
+                end_date=end_date,
+                email=fields['email'])
+        member.save()
+        self.members[member.id] = member
+
+    def process_gear(self, item):
+        fields = item['fields']
+
+        gear = Gear(id=item['pk'],
+                member=self.members[int(fields['member'])],
+                item=fields['item'])
+        gear.save()
+
+    def process_record_label(self, item):
+        fields = item['fields']
+
+        label = RecordLabel(id=item['pk'],
+                url=fields['url'],
+                name=fields['name'])
+        label.save()
+        self.labels[label.id] = label
+        
+    def process_album(self, item):
+        fields = item['fields']
+
+        photo = Photo.objects.get(id=fields['photo'])
+
+        album = Album(id=item['pk'],
+                title=fields['title'],
+                photo=photo,
+                desc=fields['desc'])
+        album.save()
+        self.albums[album.id] = album
+
+    def process_track(self, item):
+        fields = item['fields']
+
+        track = AlbumTrack(id=item['pk'],
+                album=self.albums[int(fields['album'])],
+                track_number=int(fields['track_number']),
+                track_name=fields['track_name'])
+        track.save()
+
+    def process_release(self, item):
+        fields = item['fields']
+
+        release = LabelRelease(id=item['pk'],
+                record_label=self.labels[int(fields['record_label'])],
+                album=self.albums[int(fields['album'])],
+                catalog_number=fields['catalog_number'],
+                release_date=datetime.datetime.strptime(
+                    fields['release_date'], '%Y-%m-%d'))
+
+        release.save()
+
+    def process_merchant(self, item):
+        fields = item['fields']
+
+        merchant = AlbumMerchant(id=item['pk'],
+                album=self.albums[int(fields['album'])],
+                url=fields['url'],
+                name=fields['name'])
+
+        merchant.save()
+
+    def process_merch(self, item):
+        fields = item['fields']
+
+        photo = Photo.objects.get(id=fields['photo'])
+
+        merch = Merchandise(id=item['pk'],
+                name=fields['name'],
+                desc=fields['desc'],
+                price=fields['price'],
+                in_stock=fields['in_stock'],
+                photo=photo)
+
+        merch.save()