diff --git a/apps/orgs/models.py b/apps/orgs/models.py index c9bdc1f53..f337864fc 100644 --- a/apps/orgs/models.py +++ b/apps/orgs/models.py @@ -118,6 +118,11 @@ class Organization(models.Model): return True return False + def can_user_by(self, user): + if self.get_org_users().filter(id=user.id): + return True + return False + def is_real(self): return self.id not in (self.DEFAULT_NAME, self.ROOT_ID, self.SYSTEM_ID) diff --git a/apps/users/models/user.py b/apps/users/models/user.py index f58422fcd..aaa3bcebb 100644 --- a/apps/users/models/user.py +++ b/apps/users/models/user.py @@ -217,6 +217,10 @@ class RoleMixin: def can_audit_current_org(self): return current_org.can_audit_by(self) + @property + def can_user_current_org(self): + return current_org.can_user_by(self) + @property def can_admin_or_audit_current_org(self): return self.can_admin_current_org or self.can_audit_current_org diff --git a/apps/users/templates/users/user_detail.html b/apps/users/templates/users/user_detail.html index 8e049938c..2c4fad1c9 100644 --- a/apps/users/templates/users/user_detail.html +++ b/apps/users/templates/users/user_detail.html @@ -211,46 +211,47 @@ + {% if request.user.can_admin_current_org %} + {% if user_object.can_user_current_org or user_object.can_admin_current_org %} +
+
+ {% trans 'User group' %} +
+
+ + + + + + + + + + - {% if user_object.is_current_org_admin %} -
-
- {% trans 'User group' %} + {% for group in user_object.groups.all %} +
+ + + + {% endfor %} + +
+ +
+ +
+ {{ group.name }} + + +
+
-
- - - - - - - - - - - - {% for group in user_object.groups.all %} - - - - - {% endfor %} - -
- -
- -
- {{ group.name }} - - -
-
- + {% endif %} {% endif %}