mirror of
https://github.com/ae-utbm/sith.git
synced 2026-06-21 07:22:40 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 307f89ce90 | |||
| 44f8655b70 |
-52
@@ -11,7 +11,6 @@ from club.models import Club, Membership
|
||||
from club.schemas import (
|
||||
ClubSchema,
|
||||
ClubSearchFilterSchema,
|
||||
MembershipFilterSchema,
|
||||
SimpleClubSchema,
|
||||
UserMembershipSchema,
|
||||
)
|
||||
@@ -63,54 +62,3 @@ class UserClubController(ControllerBase):
|
||||
.filter(user=user)
|
||||
.select_related("club", "user", "role")
|
||||
)
|
||||
|
||||
|
||||
@api_controller("/club_members/{since_date}")
|
||||
class ClubMembersController(ControllerBase):
|
||||
@route.get(
|
||||
"/new",
|
||||
response=list[UserMembershipSchema],
|
||||
auth=[ApiKeyAuth(), SessionAuth()],
|
||||
permissions=[HasPerm("club.view_club")],
|
||||
url_name="get_new_club_members_since_date",
|
||||
)
|
||||
def fetch_new_club_members(self, filters: Query[MembershipFilterSchema]):
|
||||
"""give all the members of a club that have joined since a given date"""
|
||||
memberships = Membership.objects.ongoing().filter(
|
||||
start_date__gte=filters.since_date, end_date__isnull=True
|
||||
)
|
||||
club_ids = memberships.values_list("club_id")
|
||||
clubs = Club.objects.filter(id__in=club_ids)
|
||||
return [
|
||||
{
|
||||
"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(
|
||||
"/former",
|
||||
response=list[UserMembershipSchema],
|
||||
auth=[ApiKeyAuth(), SessionAuth()],
|
||||
permissions=[HasPerm("club.view_club")],
|
||||
url_name="get_former_club_members_since_date",
|
||||
)
|
||||
def fetch_former_club_members(self, filters: Query[MembershipFilterSchema]):
|
||||
"""give all the former members of a club that have left since a given date"""
|
||||
memberships = Membership.objects.filter(end_date__gte=filters.since_date)
|
||||
club_ids = memberships.values_list("club_id")
|
||||
clubs = Club.objects.filter(id__in=club_ids)
|
||||
return [
|
||||
{
|
||||
"club": club,
|
||||
"user": membership.user,
|
||||
"role": membership.role,
|
||||
"left_at": membership.end_date,
|
||||
}
|
||||
for club in clubs
|
||||
for membership in memberships.filter(club=club)
|
||||
]
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
from datetime import datetime
|
||||
from typing import Annotated
|
||||
|
||||
from django.db.models import Q
|
||||
@@ -80,8 +79,3 @@ class UserMembershipSchema(ModelSchema):
|
||||
|
||||
club: SimpleClubSchema
|
||||
role: ClubRoleSchema
|
||||
user: SimpleUserSchema
|
||||
|
||||
|
||||
class MembershipFilterSchema(FilterSchema):
|
||||
since_date: Annotated[datetime, FilterLookup("date__lte")] = None
|
||||
|
||||
@@ -45,3 +45,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 575px){
|
||||
#club-list{
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user