diff options
| -rwxr-xr-x | tools/migrate_bg.py | 141 | ||||
| -rwxr-xr-x | tools/migrate_chat.py | 141 | ||||
| -rwxr-xr-x | tools/migrate_likes.py | 164 | ||||
| -rwxr-xr-x | tools/migrate_room.py | 112 | ||||
| -rwxr-xr-x | tools/migrate_search.py | 130 | ||||
| -rwxr-xr-x | tools/migrate_url.py | 141 | ||||
| -rwxr-xr-x | tools/migrate_user.py | 144 | ||||
| -rwxr-xr-x | tools/migrate_video.py | 150 |
8 files changed, 1123 insertions, 0 deletions
diff --git a/tools/migrate_bg.py b/tools/migrate_bg.py new file mode 100755 index 0000000..10e6041 --- /dev/null +++ b/tools/migrate_bg.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + # Migrate sj_bg 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + 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: + print "ERROR" + map_room[row['id']] = room.pk + + 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 + diff --git a/tools/migrate_chat.py b/tools/migrate_chat.py new file mode 100755 index 0000000..a554d63 --- /dev/null +++ b/tools/migrate_chat.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + 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: + print "ERROR" + map_room[row['id']] = room.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 + diff --git a/tools/migrate_likes.py b/tools/migrate_likes.py new file mode 100755 index 0000000..f0dc562 --- /dev/null +++ b/tools/migrate_likes.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + 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: + print "ERROR" + map_room[row['id']] = room.pk + + 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: + print "ERROR" + + 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 SJLike.DoesNotExist: + like = SJLike( + user=user, + datetime=datetime.fromtimestamp(row['date']), + content=video) + like.save() + + row['__sjlike_pk'] = like.pk + + diff --git a/tools/migrate_room.py b/tools/migrate_room.py new file mode 100755 index 0000000..6f99a62 --- /dev/null +++ b/tools/migrate_room.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + # 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 + diff --git a/tools/migrate_search.py b/tools/migrate_search.py new file mode 100755 index 0000000..93c4070 --- /dev/null +++ b/tools/migrate_search.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + # Migrate sj_search_log 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + sj_search_log = list(db.get_sj_search_log_table()) + for row in sj_search_log: + user = admin + pk = map_user.get(row['userid'], 0) + if pk: + user = User.objects.get(pk=pk) + try: + sjsearch = SJSearch.objects.get( + user=user, + datetime=datetime.fromtimestamp(row['date']) + ) + print 'SJ Search Log Found' + except SJSearch.DoesNotExist: + sjsearch = SJSearch( + user=user, + datetime=datetime.fromtimestamp(row['date']) + ) + sjsearch.settings = dict( + url=row['url'], + count=row['count'], + terms=row['terms'], + title=row['title'] + ) + sjsearch.save() + diff --git a/tools/migrate_url.py b/tools/migrate_url.py new file mode 100755 index 0000000..361ba5d --- /dev/null +++ b/tools/migrate_url.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + 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: + print "ERROR" + map_room[row['id']] = room.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 diff --git a/tools/migrate_user.py b/tools/migrate_user.py new file mode 100755 index 0000000..bf941f6 --- /dev/null +++ b/tools/migrate_user.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + # 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'], + '%s@example.com' % row['username'], + row['password'] + ) + try: + user_profile = user.get_profile() + except django.core.exceptions.ObjectDoesNotExist: + user_profile = SJUserProfile(user=user) + user_profile.lastseen_chat = datetime.fromtimestamp(0) + user_profile.lastseen_webcam = datetime.fromtimestamp(0) + user_profile.save() + + user.date_joined = datetime.fromtimestamp(row['joindate']) + user.last_login = datetime.fromtimestamp(row['seendate']) + user.save() + + settings_text_nice = {} + settings_old = row['settings'] + + if settings_old is not None: + slinez = settings_old.split("\n") + for l in slinez: + pair = l.split("\t") + if len(pair) >= 2 and pair[0] is not None and pair[1] is not None: + settings_text_nice[pair[0]] = pair[1] + + user_profile.nickname = row['username'] or '' #fixed + user_profile.score = row['score'] + user_profile.access = row['access'] + user_profile.bio = row['bio'] or '' + user_profile.lastseen_chat = datetime.fromtimestamp(row['seendate']) + user_profile.settings_text = json.dumps(settings_text_nice) + user_profile.save() + + #for key, value in row.iteritems(): + # print key, ', ', value, ', ', type(value) + #print + + row['__user_pk'] = user.pk + map_user[row['id']] = user.pk + diff --git a/tools/migrate_video.py b/tools/migrate_video.py new file mode 100755 index 0000000..f7553b2 --- /dev/null +++ b/tools/migrate_video.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python + +import os +import sys +import chardet +import json + +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +os.environ['DJANGO_SETTINGS_MODULE'] = 'scannerjammer.settings' + +from db import db as DB +from pprint import pprint + +import django +from datetime import datetime + +from django.conf import settings +from django.contrib.auth.models import User + +from backend.models import SJLike +from backend.models import SJRoom +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): + super(MigrateDB, self).__init__(*args, **kwargs) + + def get_table(self, name): + self.execute('SELECT * FROM %s' % name) + fields = [d[0] for d in self.cursor.description] + rows = self.cursor.fetchall() + for row in rows: + row = list(row) + for i, r in enumerate(row[:]): + if isinstance(r, str): + detect = chardet.detect(r) + try: + row[i] = unicode(r, detect['encoding'] or 'utf8', 'replace') + except LookupError: + row[i] = unicode(r, 'utf8', 'replace') + yield dict(zip(fields, row)) + + def get_radio_chat_table(self): + return self.get_table('radio_chat') + + 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') + + def get_sj_likes_table(self): + return self.get_table('sj_likes') + + def get_sj_likes_tmp_table(self): + return self.get_table('sj_likes_tmp') + + def get_sj_room_table(self): + return self.get_table('sj_room') + + def get_sj_search_log_table(self): + return self.get_table('sj_search_log') + + def get_sj_session_table(self): + return self.get_table('sj_sesson') + + def get_sj_url_table(self): + return self.get_table('sj_url') + + def get_sj_url_tmp_table(self): + return self.get_table('sj_url_tmp') + + def get_sj_user_table(self): + return self.get_table('sj_user') + + def get_sj_video_table(self): + return self.get_table('sj_video') + +if __name__ == '__main__': + + admin = User.objects.get(username='admin') + + db = MigrateDB() + db.connect() + + # Migrate sj_video 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: + print "ERROR in users" + + map_user[row['id']] = user.pk + + 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: + print "ERROR" + map_room[row['id']] = room.pk + + 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 + |
