diff --git a/apps/perms/models/asset_permission.py b/apps/perms/models/asset_permission.py index 296e0e5d4..53bceb392 100644 --- a/apps/perms/models/asset_permission.py +++ b/apps/perms/models/asset_permission.py @@ -16,6 +16,7 @@ __all__ = [ class Action: + NONE = 0 CONNECT = 0b00000001 UPLOAD = 0b00000010 DOWNLOAD = 0b00000100 @@ -51,12 +52,15 @@ class Action: @classmethod def choices_to_value(cls, value): - def to_choices(x, y): - x = cls.NAME_MAP_REVERSE.get(x, 0) - y = cls.NAME_MAP_REVERSE.get(y, 0) - return x | y if not value: - return None + return cls.NONE + if len(value) == 1: + return cls.NAME_MAP_REVERSE.get(value[0], cls.NONE) + + def to_choices(x, y): + x = cls.NAME_MAP_REVERSE.get(x, cls.NONE) + y = cls.NAME_MAP_REVERSE.get(y, cls.NONE) + return x | y return reduce(to_choices, value) @classmethod