summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtools/migrate_db.py194
1 files changed, 191 insertions, 3 deletions
diff --git a/tools/migrate_db.py b/tools/migrate_db.py
index c47ddee..2725f30 100755
--- a/tools/migrate_db.py
+++ b/tools/migrate_db.py
@@ -21,6 +21,9 @@ from backend.models import SJContent
from backend.models import SJSearch
from backend.models import SJUserProfile
+from backend.views import thraw
+from backend.views import freeze
+
class MigrateDB(DB):
def __init__(self, *args, **kwargs):
@@ -39,6 +42,9 @@ class MigrateDB(DB):
def get_search_log_table(self):
return self.get_table('search_log')
+ def get_sj_bg_table(self):
+ return self.get_table('sj_bg')
+
def get_sj_chat_table(self):
return self.get_table('sj_chat')
@@ -70,16 +76,22 @@ class MigrateDB(DB):
return self.get_table('sj_video')
if __name__ == '__main__':
+
+ admin = User.objects.get(username='admin')
+
db = MigrateDB()
db.connect()
- # migrate sj_user table
- for row in db.get_sj_user_table():
+ # Migrate sj_user table
+
+ sj_user = list(db.get_sj_user_table())
+ map_user = {}
+ for row in sj_user:
try:
user = User.objects.get(username=row['username'])
except User.DoesNotExist:
user = User.objects.create_user(
- row['username'],
+ row['username'],
'%s@example.com' % row['username'],
row['password']
)
@@ -105,3 +117,179 @@ if __name__ == '__main__':
#for key, value in row.iteritems():
# print key, ', ', value, ', ', type(value)
#print
+
+ row['__user_pk'] = user.pk
+ map_user[row['id']] = user.pk
+
+
+ # Migrate sj_room table
+
+ sj_room = list(db.get_sj_room_table())
+ map_room = {}
+ for row in sj_room:
+ try:
+ room = SJRoom.objects.get(name=row['name'])
+ except SJRoom.DoesNotExist:
+ room = SJRoom(name=row['name'])
+ room.user = admin
+ room.datetime = datetime.fromtimestamp(row['date'])
+ room.settings = thraw(row['settings'])
+ room.private = row['private']
+ room.save()
+
+ row['__room_pk'] = room.pk
+ map_room[row['id']] = room.pk
+
+ # Migrate sj_bg table
+
+ sj_bg = list(db.get_sj_bg_table())
+ for row in sj_bg:
+ user = admin
+ pk = map_user.get(row['userid'], 0)
+ if pk:
+ user = User.objects.get(pk=pk)
+ room = SJRoom.objects.get(name='main')
+ pk = map_room.get(row['roomid'], 0)
+ if pk:
+ room = SJRoom.objects.get(pk=pk)
+ try:
+ bg = SJContent.objects.get(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='background')
+ except SJContent.DoesNotExist:
+ bg = SJContent(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='background')
+ bg.settings = dict(url=row['url'])
+ bg.save()
+
+ row['__sjcontent_background_pk'] = bg.pk
+
+
+ # Migrate sj_video table
+
+ sj_video = list(db.get_sj_video_table())
+ map_video = {}
+ for row in sj_video:
+ user = admin
+ pk = map_user.get(row['userid'], 0)
+ if pk:
+ user = User.objects.get(pk=pk)
+ room = SJRoom.objects.get(name='main')
+ pk = map_room.get(row['roomid'], 0)
+ if pk:
+ room = SJRoom.objects.get(pk=pk)
+ try:
+ video = SJContent.objects.get(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='video')
+ except SJContent.DoesNotExist:
+ video = SJContent(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='video')
+ video.settings = dict(
+ url=row['url'],
+ title=row['title'],
+ likes=row['likes'],
+ removed=row['removed'],
+ thumbnail=row['thumbnail'],
+ username=row['username'])
+ video.save()
+
+ row['__sjcontent_video_pk'] = video.pk
+ map_video[row['id']] = video.pk
+
+
+ # Migrate sj_likes table
+
+ sj_likes = list(db.get_sj_likes_table())
+ for row in sj_likes:
+ user = admin
+ pk = map_user.get(row['userid'], 0)
+ if pk:
+ user = User.objects.get(pk=pk)
+ video = None
+ pk = map_video.get(row['videoid'], 0)
+ if pk:
+ video = SJContent.objects.get(pk=pk)
+ try:
+ like = SJLike.objects.get(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ content=video)
+ except SJContent.DoesNotExist:
+ like = SJLike(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ content=video)
+ like.save()
+
+ row['__sjlike_pk'] = like.pk
+
+
+ # Migrate sj_chat table
+
+ sj_chat = list(db.get_sj_chat_table())
+ for row in sj_chat:
+ user = admin
+ pk = map_user.get(row['userid'], 0)
+ if pk:
+ user = User.objects.get(pk=pk)
+ room = SJRoom.objects.get(name='main')
+ pk = map_room.get(row['roomid'], 0)
+ if pk:
+ room = SJRoom.objects.get(pk=pk)
+ try:
+ chat = SJContent.objects.get(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='text')
+ except SJContent.DoesNotExist:
+ chat = SJContent(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='text')
+ chat.settings = dict(text=row['msg'])
+ chat.save()
+
+ row['__sjcontent_text_pk'] = chat.pk
+
+
+ # Migrate sj_url table
+
+ sj_url = list(db.get_sj_url_table())
+ for row in sj_url:
+ user = admin
+ pk = map_user.get(row['userid'], 0)
+ if pk:
+ user = User.objects.get(pk=pk)
+ room = SJRoom.objects.get(name='main')
+ pk = map_room.get(row['roomid'], 0)
+ if pk:
+ room = SJRoom.objects.get(pk=pk)
+ try:
+ url = SJContent.objects.get(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='url')
+ except SJContent.DoesNotExist:
+ url = SJContent(
+ user=user,
+ datetime=datetime.fromtimestamp(row['date']),
+ room=room,
+ content_type='url')
+ url.settings = dict(url=row['url'])
+ url.save()
+
+ row['__sjcontent_url_pk'] = url.pk