Add group leader functionality and update group member management
- Create GroupLeader model and migration - Alter GroupLeader member field to include related_name - Implement is_leader and is_owner methods in Group model - Update GroupDetailView to pass leader and owner status to template - Refactor group buttons and members display into separate templates - Add view and URL for setting group leaders - Update permissions for adding/removing members and clearing blacklist - Bump version to 0.1.1 in uv.lock
This commit is contained in:
parent
6cd9c0c841
commit
7409b4cd8f
10 changed files with 244 additions and 101 deletions
|
@ -23,12 +23,33 @@ class Group(models.Model):
|
|||
def get_absolute_url(self):
|
||||
return reverse("group_detail", kwargs={"pk": self.pk})
|
||||
|
||||
def is_owner(self, user):
|
||||
return user == self.owner
|
||||
|
||||
def is_leader(self, user):
|
||||
return (
|
||||
self.is_owner(user)
|
||||
or self.members.through.objects.filter(
|
||||
lead__is_leader=True, user=user
|
||||
).exists()
|
||||
)
|
||||
|
||||
def is_member(self, user):
|
||||
return self.is_owner(user) or self.members.filter(user=user).exists()
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(Lower("name"), "owner", name="unique_group_name")
|
||||
]
|
||||
|
||||
|
||||
class GroupLeader(models.Model):
|
||||
member = models.OneToOneField(
|
||||
Group.members.through, on_delete=models.CASCADE, related_name="lead"
|
||||
)
|
||||
is_leader = models.BooleanField(default=False)
|
||||
|
||||
|
||||
class MusicVideo(models.Model):
|
||||
yt_id = models.CharField(max_length=16)
|
||||
title = models.CharField(blank=True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue