Browse Source

#600: successfully migrated users data for official forums

Rafał Pitoń 8 years ago
parent
commit
6dc4a9678f

+ 0 - 7
misago/datamover/__init__.py

@@ -2,13 +2,6 @@ from django.utils.timezone import make_aware, utc
 
 from .conf import OLD_FORUM
 from .db import fetch_assoc
-import movedids
-
-
-class DevNull(object):
-    def write(self, *args, **kwargs):
-        pass
-defstdout = DevNull()
 
 
 def localise_datetime(datetime):

+ 3 - 8
misago/datamover/avatars.py

@@ -6,15 +6,13 @@ from django.core.exceptions import ValidationError
 from misago.conf import settings
 from misago.users.avatars import store, gravatar, dynamic, gallery, uploaded
 
-from . import OLD_FORUM, defstdout, fetch_assoc, movedids
+from . import OLD_FORUM, fetch_assoc, movedids
 
 
 UserModel = get_user_model()
 
 
-def move_avatars(stdout=None, style=None):
-    stdout = stdout or defstdout
-
+def move_avatars(stdout, style):
     for old_user in fetch_assoc('SELECT * FROM misago_user ORDER BY id'):
         user = UserModel.objects.get(pk=movedids.get('user', old_user['id']))
 
@@ -50,10 +48,7 @@ def move_avatars(stdout=None, style=None):
 
 
 def print_warning(warning, stdout, style):
-    if style:
-        stdout.write(style.ERROR(warning))
-    else:
-        stdout.write(warning)
+    stdout.write(style.ERROR(warning))
 
 
 def convert_crop(image, user):

+ 40 - 2
misago/datamover/bans.py

@@ -1,2 +1,40 @@
-def move_bans(stdout=None):
-    pass
+from misago.users.models import Ban
+
+from . import fetch_assoc, localise_datetime
+
+
+CHECK_MAPPING = {
+  1: 0,
+  2: 1,
+  3: 2
+}
+
+
+def move_bans():
+    for ban in fetch_assoc('SELECT * FROM misago_ban'):
+        if ban['test']:
+            Ban.objects.create(
+                check_type=CHECK_MAPPING[ban['test']],
+                banned_value=ban['ban'],
+                user_message=ban['reason_user'],
+                staff_message=ban['reason_admin'],
+                expires_on=localise_datetime(ban['expires'])
+            )
+        else:
+            Ban.objects.create(
+                check_type=0,
+                banned_value=ban['ban'],
+                user_message=ban['reason_user'],
+                staff_message=ban['reason_admin'],
+                expires_on=localise_datetime(ban['expires'])
+            )
+
+            Ban.objects.create(
+                check_type=1,
+                banned_value=ban['ban'],
+                user_message=ban['reason_user'],
+                staff_message=ban['reason_admin'],
+                expires_on=localise_datetime(ban['expires'])
+            )
+
+    Ban.objects.invalidate_cache()

+ 4 - 4
misago/datamover/management/commands/moveusers.py

@@ -22,21 +22,21 @@ class Command(BaseCommand):
             self.style.SUCCESS("Moved avatars in %s" % self.stop_timer()))
 
         self.start_timer()
-        users.move_followers(self.stdout)
+        users.move_followers()
         self.stdout.write(
             self.style.SUCCESS("Moved followers in %s" % self.stop_timer()))
 
         self.start_timer()
-        users.move_blocks(self.stdout)
+        users.move_blocks()
         self.stdout.write(
             self.style.SUCCESS("Moved blocks in %s" % self.stop_timer()))
 
         self.start_timer()
-        users.move_namehistory(self.stdout)
+        users.move_namehistory()
         self.stdout.write(
             self.style.SUCCESS("Moved name history in %s" % self.stop_timer()))
 
         self.start_timer()
-        bans.move_bans(self.stdout)
+        bans.move_bans()
         self.stdout.write(
             self.style.SUCCESS("Moved bans in %s" % self.stop_timer()))

+ 8 - 18
misago/datamover/users.py

@@ -5,7 +5,7 @@ from django.utils.crypto import get_random_string
 from misago.users.models import UsernameChange
 from misago.users.signatures import make_signature_checksum
 
-from . import defstdout, fetch_assoc, movedids, localise_datetime
+from . import fetch_assoc, movedids, localise_datetime
 
 
 UserModel = get_user_model()
@@ -19,13 +19,7 @@ PRIVATE_THREAD_INVITES = {
 }
 
 
-def move_users(stdout=None, style=None):
-    stdout = stdout or defstdout
-
-    from .models import MovedId
-    MovedId.objects.all().delete()
-    [u.delete() for u in UserModel.objects.filter(pk__gt=1).iterator()]
-
+def move_users(stdout, style):
     existing_users = get_existing_users()
 
     for user in fetch_assoc('SELECT * FROM misago_user ORDER BY id'):
@@ -41,13 +35,9 @@ def move_users(stdout=None, style=None):
                 new_user = UserModel.objects.create_user(
                     new_name, user['email'], 'Pass.123')
 
-                if style:
-                    formats = (user['username'], new_name)
-                    stdout.write(style.ERROR(
-                        '"%s" has been registered as "%s"' % formats))
-                else:
-                    stdout.write(
-                        '"%s" has been registered as "%s"' % formats)
+                formats = (user['username'], new_name)
+                stdout.write(style.ERROR(
+                    '"%s" has been registered as "%s"' % formats))
 
             new_user.password = user['password']
 
@@ -96,7 +86,7 @@ def get_existing_users():
     return existing_users
 
 
-def move_followers(stdout=None):
+def move_followers():
     for follow in fetch_assoc('SELECT * FROM misago_user_follows ORDER BY id'):
         from_user_id = movedids.get('user', follow['from_user_id'])
         to_user_id = movedids.get('user', follow['to_user_id'])
@@ -107,7 +97,7 @@ def move_followers(stdout=None):
         from_user.follows.add(to_user)
 
 
-def move_blocks(stdout=None):
+def move_blocks():
     for follow in fetch_assoc('SELECT * FROM misago_user_ignores ORDER BY id'):
         from_user_id = movedids.get('user', follow['from_user_id'])
         to_user_id = movedids.get('user', follow['to_user_id'])
@@ -118,7 +108,7 @@ def move_blocks(stdout=None):
         from_user.blocks.add(to_user)
 
 
-def move_namehistory(stdout):
+def move_namehistory():
     for user in fetch_assoc(
             'SELECT DISTINCT user_id FROM misago_usernamechange ORDER BY user_id'):
         new_id = movedids.get('user', user['user_id'])