import os
import gc
from django.utils.translation import ugettext as _
-from orm import orm
from django.utils.encoding import force_unicode
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
+def create_orm():
+ from django.conf import settings
+ from south.orm import FakeORM
+
+ get_migration_number_re = re.compile(r'^((\d+)_.*)\.py$')
+
+ migrations_folder = os.path.join(settings.SITE_SRC_ROOT, 'forum/migrations')
+
+ highest_number = 0
+ highest_file = None
+
+ for f in os.listdir(migrations_folder):
+ if os.path.isfile(os.path.join(migrations_folder, f)):
+ m = get_migration_number_re.match(f)
+
+ if m:
+ found = int(m.group(2))
+
+ if found > highest_number:
+ highest_number = found
+ highest_file = m.group(1)
+
+ mod = __import__('forum.migrations.%s' % highest_file, globals(), locals(), ['forum.migrations'])
+ return FakeORM(getattr(mod, 'Migration'), "forum")
+
+orm = create_orm()
+
class SXTableHandler(ContentHandler):
def __init__(self, fname, callback):
self.in_row = False
class IdMapper(dict):
+
+ def __init__(self):
+ self.default = 1
+
def __getitem__(self, key):
key = int(key)
- return super(IdMapper, self).get(key, 1)
+ return super(IdMapper, self).get(key, self.default)
def __setitem__(self, key, value):
super(IdMapper, self).__setitem__(int(key), int(value))
#check for empty values
if not owneruid:
owneruid = None
+ else:
+ owneruid = int(owneruid)
def callback(sxu):
create = True
+ set_mapper_defaults = False
if sxu.get('id') == '-1':
return
#print "\n".join(["%s : %s" % i for i in sxu.items()])
- if int(sxu.get('id')) == int(owneruid):
+ if (owneruid and (int(sxu.get('id')) == owneruid)) or (
+ (not owneruid) and len(uidmapper)):
+
+ set_mapper_defaults = True
+
if authenticated_user:
osqau = orm.User.objects.get(id=authenticated_user.id)
openids.add(assoc.key)
uidmapper[owneruid] = osqau.id
- uidmapper[-1] = osqau.id
create = False
- else:
- uidmapper[owneruid] = int(owneruid)
- uidmapper[-1] = int(owneruid)
-
sxbadges = sxu.get('badgesummary', None)
badges = {'1':'0', '2':'0', '3':'0'}
#merged_users.append(osqau.id)
osqau.save()
+ if set_mapper_defaults:
+ uidmapper[-1] = osqau.id
+ uidmapper.default = osqau.id
+
usernames.append(osqau.username)
openid = sxu.get('openid', None)
readTable(path, "Users", callback)
- if uidmapper[-1] == -1:
- uidmapper[-1] = 1
+ #if uidmapper[-1] == -1:
+ # uidmapper[-1] = 1
return uidmapper
osqaa.save()
badge.awarded_count += 1
+
user_badge_count[user_id] += 1
readTable(dump, "Users2Badges", callback)