123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from __future__ import unicode_literals
- 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)
|