mirror of
https://github.com/ae-utbm/sith.git
synced 2026-06-28 10:48:37 +00:00
modif des changement demandé
This commit is contained in:
+17
-31
@@ -65,52 +65,38 @@ class UserClubController(ControllerBase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@api_controller("/club_members/{since_date}")
|
@api_controller("/clubs/{club_id}/members/{since_date}")
|
||||||
class ClubMembersController(ControllerBase):
|
class ClubMembershipController(ControllerBase):
|
||||||
@route.get(
|
@route.get(
|
||||||
"/new",
|
"/new",
|
||||||
response=list[UserMembershipSchema],
|
response=list[UserMembershipSchema],
|
||||||
auth=[ApiKeyAuth(), SessionAuth()],
|
auth=[ApiKeyAuth(), SessionAuth()],
|
||||||
permissions=[HasPerm("club.view_club")],
|
permissions=[HasPerm("club.view_club")],
|
||||||
url_name="get_new_club_members_since_date",
|
url_name="get_new_clubs_members_since_date",
|
||||||
)
|
)
|
||||||
def fetch_new_club_members(self, filters: Query[MembershipFilterSchema]):
|
def fetch_new_club_members(self, filters: Query[MembershipFilterSchema]):
|
||||||
"""give all the members of a club that have joined since a given date"""
|
"""give all the members of all clubs that have joined since a given date"""
|
||||||
memberships = Membership.objects.ongoing().filter(
|
memberships = Membership.objects.ongoing().filter(
|
||||||
start_date__gte=filters.since_date, end_date__isnull=True
|
start_date__gte=filters.since_date, end_date__isnull=True
|
||||||
)
|
)
|
||||||
club_ids = memberships.values_list("club_id")
|
if filters.clubs_id is None:
|
||||||
clubs = Club.objects.filter(id__in=club_ids)
|
return memberships.order_by("start_date")
|
||||||
return [
|
|
||||||
{
|
return memberships.filter(club_id__in=filters.clubs_id)
|
||||||
"club": club,
|
|
||||||
"user": membership.user,
|
|
||||||
"role": membership.role,
|
|
||||||
"joined_at": membership.start_date,
|
|
||||||
}
|
|
||||||
for club in clubs
|
|
||||||
for membership in memberships.filter(club=club)
|
|
||||||
]
|
|
||||||
|
|
||||||
@route.get(
|
@route.get(
|
||||||
"/former",
|
"/former",
|
||||||
response=list[UserMembershipSchema],
|
response=list[UserMembershipSchema],
|
||||||
auth=[ApiKeyAuth(), SessionAuth()],
|
auth=[ApiKeyAuth(), SessionAuth()],
|
||||||
permissions=[HasPerm("club.view_club")],
|
permissions=[HasPerm("club.view_club")],
|
||||||
url_name="get_former_club_members_since_date",
|
url_name="get_former_clubs_members_since_date",
|
||||||
)
|
)
|
||||||
def fetch_former_club_members(self, filters: Query[MembershipFilterSchema]):
|
def fetch_former_club_members(self, filters: Query[MembershipFilterSchema]):
|
||||||
"""give all the former members of a club that have left since a given date"""
|
"""give all the former members of all clubs that have left since a given date"""
|
||||||
memberships = Membership.objects.filter(end_date__gte=filters.since_date)
|
memberships = Membership.objects.filter(
|
||||||
club_ids = memberships.values_list("club_id")
|
end_date__gte=filters.since_date,
|
||||||
clubs = Club.objects.filter(id__in=club_ids)
|
)
|
||||||
return [
|
if filters.clubs_id is None:
|
||||||
{
|
return memberships.order_by("start_date")
|
||||||
"club": club,
|
|
||||||
"user": membership.user,
|
return memberships.filter(club_id__in=filters.clubs_id)
|
||||||
"role": membership.role,
|
|
||||||
"left_at": membership.end_date,
|
|
||||||
}
|
|
||||||
for club in clubs
|
|
||||||
for membership in memberships.filter(club=club)
|
|
||||||
]
|
|
||||||
|
|||||||
+2
-1
@@ -84,4 +84,5 @@ class UserMembershipSchema(ModelSchema):
|
|||||||
|
|
||||||
|
|
||||||
class MembershipFilterSchema(FilterSchema):
|
class MembershipFilterSchema(FilterSchema):
|
||||||
since_date: Annotated[datetime, FilterLookup("date__lte")] = None
|
since_date: Annotated[datetime, FilterLookup("date__lte")]
|
||||||
|
clubs_id: set[int] | None = None
|
||||||
|
|||||||
Reference in New Issue
Block a user