#169 Admin on teams

* adds admin column on team index view
* refactors Team model, so multiple members can become admins
* adds team migration for switch from fkey->m2m structure
* renames 'Group' to 'Permission' on user index view to avoid confusion between 'Groups' and Teams
* adds new autocomplete route for team-admin selection based on already selected members of the TeamForm
This commit is contained in:
2022-05-30 14:35:31 +02:00
parent eb3b9eb5c1
commit 8aa3fbd97a
16 changed files with 258 additions and 138 deletions

View File

@@ -11,7 +11,7 @@ class Team(UuidModel):
name = models.CharField(max_length=500, null=True, blank=True)
description = models.TextField(null=True, blank=True)
users = models.ManyToManyField("user.User", blank=True, related_name="teams")
admin = models.ForeignKey("user.User", blank=True, null=True, related_name="+", on_delete=models.SET_NULL)
admins = models.ManyToManyField("user.User", blank=True, related_name="+")
def __str__(self):
return self.name
@@ -104,6 +104,19 @@ class Team(UuidModel):
"""
self.users.remove(user)
if self.admin == user:
self.admin = self.users.first()
self.save()
self.admins.remove(user)
self.save()
def is_user_admin(self, user) -> bool:
""" Returns whether a given user is an admin of the team
Args:
user (User): The user
Returns:
user_is_admin (bool): Whether the user is an admin or not
"""
user_is_admin = self.admins.filter(
id=user.id
).exists()
return user_is_admin