summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@lalalizard.com>2012-12-19 03:39:27 -0500
committerroot <root@lalalizard.com>2012-12-19 03:39:27 -0500
commit7320fc1c7e56235b1c4cf5d09e0cea7fbbca654a (patch)
tree552d20094c3b8188930352ec42b4e8f30c5aa805
parenta79d045cc366670d87a4782acc79ec2955c71dd1 (diff)
migrate tools
-rwxr-xr-xtools/migrate_bg.py141
-rwxr-xr-xtools/migrate_chat.py141
-rwxr-xr-xtools/migrate_likes.py164
-rwxr-xr-xtools/migrate_room.py112
-rwxr-xr-xtools/migrate_search.py130
-rwxr-xr-xtools/migrate_url.py141
-rwxr-xr-xtools/migrate_user.py144
-rwxr-xr-xtools/migrate_video.py150
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
+