def move_all_color_into_groups(apps, schema_editor):
LocationGroupCategory = apps.get_model('mapdata', 'LocationGroupCategory')
category = LocationGroupCategory.objects.get(name='groups')
colors = {}
for model_name in ('Level', 'Space', 'Area', 'POI'):
model = apps.get_model('mapdata', model_name)
for obj in model.objects.filter(color__isnull=False):
colors.setdefault(obj.color, []).append(obj)
from c3nav.mapdata.models import Location
for color, objects in colors.items():
titles = {lang: [] for lang in set(chain(*(obj.titles.keys() for obj in objects)))}
for obj in objects:
for lang in titles.keys():
translation.activate(lang)
titles[lang].append(Location(titles=obj.titles).title)
translation.deactivate_all()
titles = {lang: ', '.join(values) for lang, values in titles.items()}
group = category.groups.create(can_search=False, can_describe=False, color=color, titles=titles)
for obj in objects:
obj.groups.add(group)
评论列表
文章目录