Browse Source

move categories and lables

Rafał Pitoń 8 years ago
parent
commit
f0f01c74fd

+ 0 - 1
misago/categories/migrations/0002_default_categories.py

@@ -40,7 +40,6 @@ def create_default_categories_tree(apps, schema_editor):
         level=1,
         name=category_name,
         slug=slugify(category_name),
-        css_class='accent'
     )
 
 

+ 76 - 0
misago/datamover/categories.py

@@ -0,0 +1,76 @@
+from misago.categories.models import Category
+
+from . import fetch_assoc, movedids
+
+
+def move_categories(stdout, style):
+    query = '''
+        SELECT *
+        FROM
+            misago_forum
+        WHERE
+            tree_id = %s AND level > 0
+        ORDER BY
+            lft
+    '''
+
+    root = Category.objects.root_category()
+    for forum in fetch_assoc(query, [get_root_tree()]):
+        if forum['type'] == 'redirect':
+            stdout.write(style.ERROR('Skipping redirect: %s' % forum['name']))
+            continue
+
+        if forum['level'] == 1:
+            parent = root
+        else:
+            new_parent_id = movedids.get('category', forum['parent_id'])
+            parent = Category.objects.get(pk=new_parent_id)
+
+        category = Category.objects.insert_node(Category(
+            name=forum['name'],
+            slug=forum['slug'],
+            description=forum['description'],
+            is_closed=forum['closed'],
+            prune_started_after=forum['prune_start'],
+            prune_replied_after=forum['prune_last'],
+        ), parent, save=True)
+
+        movedids.set('category', forum['id'], category.pk)
+
+    # second pass: move prune_archive_id
+    for forum in fetch_assoc(query, [get_root_tree()]):
+        if not forum['pruned_archive_id']:
+            continue
+
+        new_category_pk = movedids.get('category', forum['id'])
+        new_archive_pk = movedids.get('category', forum['pruned_archive_id'])
+
+        Category.objects.filter(pk=new_category_pk).update(
+            archive_pruned_in=Category.objects.get(pk=new_archive_pk)
+        )
+
+
+def get_root_tree():
+    query = 'SELECT tree_id FROM misago_forum WHERE special = %s'
+    for root in fetch_assoc(query, ['root']):
+        return root['tree_id']
+
+
+def move_labels():
+    labels = []
+    for label in fetch_assoc('SELECT * FROM misago_threadprefix ORDER BY slug'):
+        labels.append(label)
+
+    for label in labels:
+        query = 'SELECT * FROM misago_threadprefix_forums WHERE threadprefix_id= %s'
+        for parent_row in fetch_assoc(query, [label['id']]):
+            parent_id = movedids.get('category', parent_row['forum_id'])
+            parent = Category.objects.get(pk=parent_id)
+
+            category = Category.objects.insert_node(Category(
+                name=label['name'],
+                slug=label['slug'],
+            ), parent, save=True)
+
+            label_id = '%s-%s' % (label['id'], parent_row['forum_id'])
+            movedids.set('label', label_id, category.pk)

+ 19 - 0
misago/datamover/management/commands/movecategories.py

@@ -0,0 +1,19 @@
+from ... import categories
+from ..base import BaseCommand
+
+
+class Command(BaseCommand):
+    help = "Moves categories and labels from Misago 0.5 installation"
+
+    def handle(self, *args, **options):
+        self.stdout.write("Moving users from Misago 0.5:")
+
+        self.start_timer()
+        # categories.move_categories(self.stdout, self.style)
+        self.stdout.write(
+            self.style.SUCCESS("Moved categories in %s" % self.stop_timer()))
+
+        self.start_timer()
+        categories.move_labels()
+        self.stdout.write(
+            self.style.SUCCESS("Moved labels in %s" % self.stop_timer()))

+ 1 - 1
misago/datamover/management/commands/movesettings.py

@@ -1,5 +1,5 @@
 from ...settings import move_settings
-from ..base import BaseCommand, CommandError
+from ..base import BaseCommand
 
 
 class Command(BaseCommand):

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

@@ -1,5 +1,5 @@
 from ... import avatars, bans, users
-from ..base import BaseCommand, CommandError
+from ..base import BaseCommand
 
 
 class Command(BaseCommand):

+ 0 - 0
misago/datamover/threads.py