diff --git a/epdb/logic.py b/epdb/logic.py index 2980b1a1..586e9f24 100644 --- a/epdb/logic.py +++ b/epdb/logic.py @@ -623,6 +623,10 @@ class PackageManager(object): def grant_write(caller: User, package: Package, grantee: Union[User, Group]): PackageManager.update_permissions(caller, package, grantee, Permission.WRITE[0]) + @staticmethod + def grant_owner(caller: User, package: Package, grantee: Union[User, Group]): + PackageManager.update_permissions(caller, package, grantee, Permission.ALL[0]) + @staticmethod @transaction.atomic def import_legacy_package( @@ -821,7 +825,14 @@ class PackageManager(object): r.name = rule["name"] r.description = rule["description"] r.aliases = rule.get("aliases", []) - r.smirks = rule["smirks"] + + if rule.get("smirks") is not None: + r.smirks = rule["smirks"] + elif rule.get("reactionSmarts") is not None: + r.smirks = rule["reactionSmarts"] + else: + raise ValueError("No SMIRKS or reactionSmarts found for rule {}".format(rule["id"])) + r.reactant_filter_smarts = rule.get("reactantFilterSmarts", None) r.product_filter_smarts = rule.get("productFilterSmarts", None) r.save()