diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 2d966a0..98ed689 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -1064,8 +1064,8 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin): @classmethod def get_acl_data(cls, obj, user, url): levels = obj.ACL_LEVELS - allowed_levels = list(l[0] for l in obj.ACL_LEVELS - if cls.has_next_level(user, obj, l[0])) + allowed_levels = list(l for l in OrderedDict(levels) + if cls.has_next_level(user, obj, l)) is_owner = 'owner' in allowed_levels allowed_users = cls.get_allowed_users(user) @@ -1087,16 +1087,11 @@ class AclUpdateView(LoginRequiredMixin, View, SingleObjectMixin): @classmethod def has_next_level(self, user, instance, level): - # TODO - levels = zip(*instance.ACL_LEVELS)[0] - try: - i = levels.index(level) - except ValueError: - i = 0 - if i < (len(levels) - 1): - i += 1 - next_level = levels[i] - + levels = OrderedDict(instance.ACL_LEVELS).keys() + next_levels = dict(zip([None] + levels, levels + levels[-1:])) + # {None: 'user', 'user': 'operator', 'operator: 'owner', + # 'owner: 'owner'} + next_level = next_levels[level] return instance.has_level(user, next_level) @classmethod