feat: group people by role priority
This commit is contained in:
@@ -227,7 +227,7 @@ class Article(models.Model):
|
||||
class ProjectPerson(models.Model):
|
||||
role = models.CharField(
|
||||
"Role / group", max_length=100, default="Collaborator",
|
||||
help_text="Type Organizer, Collaborator, or any other role name.",
|
||||
help_text="Type Lead, Leader, Organizer, Collaborator, or any other role name.",
|
||||
)
|
||||
name = models.CharField(max_length=200)
|
||||
description = models.TextField(blank=True)
|
||||
@@ -239,23 +239,25 @@ class ProjectPerson(models.Model):
|
||||
url = models.URLField(blank=True)
|
||||
order = models.PositiveIntegerField(
|
||||
"Display order", default=0,
|
||||
help_text="Smaller numbers appear first. Organizers appear before collaborators, then custom roles.",
|
||||
help_text="Smaller numbers appear first within each role. Leads/Leaders, Organizers, Collaborators, then custom roles.",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
ordering = [
|
||||
models.Case(
|
||||
models.When(role__iexact="organizer", then=models.Value(0)),
|
||||
models.When(role__iexact="collaborator", then=models.Value(1)),
|
||||
default=models.Value(2), output_field=models.IntegerField(),
|
||||
models.When(role__iexact="lead", then=models.Value(0)),
|
||||
models.When(role__iexact="leader", then=models.Value(0)),
|
||||
models.When(role__iexact="organizer", then=models.Value(1)),
|
||||
models.When(role__iexact="collaborator", then=models.Value(2)),
|
||||
default=models.Value(3), output_field=models.IntegerField(),
|
||||
),
|
||||
"order", "pk",
|
||||
]
|
||||
|
||||
@property
|
||||
def role_label(self):
|
||||
return self.role.title() if self.role.casefold() in {"organizer", "collaborator"} else self.role
|
||||
return self.role.title() if self.role.casefold() in {"lead", "leader", "organizer", "collaborator"} else self.role
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} ({self.role_label})"
|
||||
|
||||
Reference in New Issue
Block a user