feat: add AirShelf core implementation

This commit is contained in:
zyc
2026-06-05 10:21:40 +08:00
parent 2ba1058329
commit cfdcd84a30
252 changed files with 70828 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
from rest_framework.exceptions import PermissionDenied
def get_current_team(user):
membership = user.team_memberships.filter(status="active").select_related("team").first()
if not membership:
raise PermissionDenied("current user has no active team")
return membership.team
class TeamScopedViewSetMixin:
team_field = "team"
def get_team(self):
return get_current_team(self.request.user)
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(**{self.team_field: self.get_team()})
def perform_create(self, serializer):
serializer.save(team=self.get_team(), created_by=self.request.user)