From 2138e4cd70d9067b2bd46c9aceb5e765ae4847d4 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sat, 18 Feb 2017 11:31:17 +0100 Subject: [PATCH] Run migrations! Update all Permissions and Locks to new Permission hierarchy. --- .../migrations/0008_lock_and_perm_rename.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 evennia/typeclasses/migrations/0008_lock_and_perm_rename.py diff --git a/evennia/typeclasses/migrations/0008_lock_and_perm_rename.py b/evennia/typeclasses/migrations/0008_lock_and_perm_rename.py new file mode 100644 index 0000000000..048fc67a22 --- /dev/null +++ b/evennia/typeclasses/migrations/0008_lock_and_perm_rename.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.11 on 2017-01-25 22:30 +from __future__ import unicode_literals + +import re +from django.db import migrations + +def update_perms_and_locks(apps, schema_editor): + + # update all permissions + Tag = apps.get_model('typeclasses', 'Tag') + perm_map = {"guests": "guest", "players": "player", "playerhelpers":"helper", + "builders": "builder", "wizards":"admin", "immortals": "developer"} + + for perm in Tag.objects.filter(db_tagtype="permission"): + if perm.db_key in perm_map: + perm.db_key = perm_map[perm.db_key] + perm.save(update_fields=("db_key",)) + + # update all locks on all entities + apps_models = [("objects", "ObjectDB"), ("players", "PlayerDB"), ("scripts", "ScriptDB"), + ("comms", "ChannelDB")] + p_reg = re.compile(r"(?<=perm\()(\w+)(?=\))|(?<=perm_above\()(\w+)(?=\))", + re.IGNORECASE + re.UNICODE) + def _sub(match): + perm = match.group(1) + return perm_map[perm.lower()].capitalize() if perm.lower() in perm_map else perm + + for app_tuple in apps_models: + TClass = apps.get_model(*app_tuple) + for obj in TClass.objects.filter(db_lock_storage__icontains="perm"): + orig_lock = obj.db_lock_storage + repl_lock = p_reg.sub(_sub, orig_lock) + if repl_lock != orig_lock: + obj.db_lock_storage = repl_lock + obj.save(update_fields=('db_lock_storage',)) + +class Migration(migrations.Migration): + + dependencies = [ + ('typeclasses', '0007_tag_migrations_may_be_slow'), + ] + + operations = [ + + migrations.RunPython(update_perms_and_locks) + ]