diff options
Diffstat (limited to 'tools/migrate_db.py')
| -rwxr-xr-x | tools/migrate_db.py | 194 |
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 |
