Remove unused imports flagged by ruff (F401), apply ruff format across all files, and restore members.signals side-effect import with noqa: F401 so the post_save signal that auto-creates Member profiles continues to fire. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from typing import TYPE_CHECKING
|
|
|
|
import rules
|
|
from django.contrib.auth.models import AbstractUser
|
|
|
|
if TYPE_CHECKING:
|
|
from .models import TeamMembership
|
|
|
|
|
|
@rules.predicate
|
|
def is_team_admin(user: AbstractUser | None, teammembership: "TeamMembership | None") -> bool:
|
|
"""
|
|
Determine if a user is a team admin within a specific team membership context.
|
|
|
|
:param user: The user to check for team admin privileges; can be None.
|
|
:param teammembership: The specific team membership to evaluate; can be None.
|
|
:return: A boolean indicating whether the user is a team admin for the given
|
|
team membership.
|
|
"""
|
|
from .models import TeamMembership, Season
|
|
|
|
if user is None or teammembership is None:
|
|
return False
|
|
|
|
return TeamMembership.objects.filter(team=teammembership.team, member__user=user, role__admin_role=True, season=Season.for_date()).exists()
|
|
|
|
|
|
@rules.predicate
|
|
def is_a_team_admin(user: AbstractUser | None) -> bool:
|
|
"""
|
|
Determine if a user is a team admin.
|
|
|
|
:param user: The user to check for team admin privileges; can be None.
|
|
:return: A boolean indicating whether the user is a team admin for the given
|
|
team membership.
|
|
"""
|
|
|
|
from .models import Season, TeamMembership
|
|
|
|
if user is None:
|
|
return False
|
|
|
|
return TeamMembership.objects.filter(member__user=user, role__admin_role=True, season=Season.for_date()).exists()
|