# -*- coding: utf-8 -*-
-from xml.dom import minidom
-from datetime import datetime, timedelta
+from datetime import datetime
import time
import re
import os
import gc
from django.utils.translation import ugettext as _
-from django.template.defaultfilters import slugify
-from forum.models.utils import dbsafe_encode
from orm import orm
from django.utils.encoding import force_unicode
openidre = re.compile('^https?\:\/\/')
def userimport(path, options):
-#users = readTable(dump, "Users")
usernames = []
openids = set()
uidmapper = IdMapper()
- #merged_users = []
+ authenticated_user = options.get('authenticated_user', None)
owneruid = options.get('owneruid', None)
#check for empty values
if not owneruid:
if sxu.get('id') == '-1':
return
#print "\n".join(["%s : %s" % i for i in sxu.items()])
+
if int(sxu.get('id')) == int(owneruid):
- osqau = orm.User.objects.get(id=1)
- for assoc in orm.AuthKeyUserAssociation.objects.filter(user=osqau):
- openids.add(assoc.key)
- uidmapper[owneruid] = 1
- uidmapper[-1] = 1
- create = False
- else:
+ if authenticated_user:
+ osqau = orm.User.objects.get(id=authenticated_user.id)
+
+ for assoc in orm.AuthKeyUserAssociation.objects.filter(user=osqau):
+ 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'}
+
+ if sxbadges:
+ badges.update(dict([b.split('=') for b in sxbadges.split()]))
+
+ if create:
username = unicode(sxu.get('displayname',
sxu.get('displaynamecleaned', sxu.get('realname', final_username_attempt(sxu)))))[:30]
if not totest in usernames:
username = totest
- break
-
- sxbadges = sxu.get('badgesummary', None)
- badges = {'1':'0', '2':'0', '3':'0'}
+ break
- if sxbadges:
- badges.update(dict([b.split('=') for b in sxbadges.split()]))
-
- if create:
osqau = orm.User(
id = sxu.get('id'),
username = username,
return uidmapper
def tagsimport(dump, uidmap):
-#tags = readTable(dump, "Tags")
tagmap = {}
post.state_string = "".join("(%s)" % s for s in re.findall('\w+', post.state_string) if s != name)
def postimport(dump, uidmap, tagmap):
-#history = {}
-#accepted = {}
all = []
- #for h in readTable(dump, "PostHistory"):
- # if not history.get(h.get('postid'), None):
- # history[h.get('postid')] = []
- #
- # history[h.get('postid')].append(h)
-
- #posts = readTable(dump, "Posts")
-
def callback(sxpost):
nodetype = (sxpost.get('posttypeid') == '1') and "nodetype" or "answer"
return all
def comment_import(dump, uidmap, posts):
-#comments = readTable(dump, "PostComments")
currid = IdIncrementer(max(posts))
mapping = {}
post.save()
def post_vote_import(dump, uidmap, posts):
-#votes = readTable(dump, "Posts2Votes")
close_reasons = {}
def close_callback(r):
def comment_vote_import(dump, uidmap, comments):
-#votes = readTable(dump, "Comments2Votes")
user2vote = []
comments2score = {}
def badges_import(dump, uidmap, post_list):
-#node_ctype = orm['contenttypes.contenttype'].objects.get(name='node')
sxbadges = {}
for badge in obadges.values():
badge.save()
+def save_setting(k, v):
+ try:
+ kv = orm.KeyValue.objects.get(key=k)
+ kv.value = v
+ except:
+ kv = orm.KeyValue(key = k, value = v)
+
+ kv.save()
+
+
def pages_import(dump, currid):
currid = IdIncrementer(currid)
registry = {}
- #sx_pages = readTable(dump, "FlatPages")
def callback(sxp):
currid.inc()
readTable(dump, "FlatPages", callback)
- kv = orm.KeyValue(key='STATIC_PAGE_REGISTRY', value=dbsafe_encode(registry))
- kv.save()
+ save_setting('STATIC_PAGE_REGISTRY', dbsafe_encode(registry))
sx2osqa_set_map = {
u'theme.html.name': 'APP_TITLE',
def static_import(dump):
-#sx_sets = readTable(dump, "ThemeTextResources")
sx_unknown = {}
def callback(set):
if unicode(set['name']) in sx2osqa_set_map:
- try:
- kv = orm.KeyValue.objects.get(key=sx2osqa_set_map[set['name']])
- kv.value = dbsafe_encode(html_decode(set['value']))
- except:
- kv = orm.KeyValue(
- key = sx2osqa_set_map[set['name']],
- value = dbsafe_encode(html_decode(set['value']))
- )
-
- kv.save()
+ save_setting(sx2osqa_set_map[set['name']], dbsafe_encode(html_decode(set['value'])))
else:
sx_unknown[set['name']] = html_decode(set['value'])
readTable(dump, "ThemeTextResources", callback)
- unknown = orm.KeyValue(key='SXIMPORT_UNKNOWN_SETS', value=dbsafe_encode(sx_unknown))
- unknown.save()
+ save_setting('SXIMPORT_UNKNOWN_SETS', dbsafe_encode(sx_unknown))
def disable_triggers():
from south.db import db