Skip to content

Commit

Permalink
Jarydo/admin list view (#172)
Browse files Browse the repository at this point in the history
  • Loading branch information
jarydo authored Aug 28, 2024
1 parent dcdcf35 commit be26df7
Show file tree
Hide file tree
Showing 21 changed files with 1,653 additions and 27 deletions.
5 changes: 3 additions & 2 deletions backend/app/graphql/user_queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class UserQueries(QueryList):
limit=graphene.Int(default_value=5),
offset=graphene.Int(default_value=0),
role=graphene.String(default_value=""),
name=graphene.String(default_value=""),
)

getUserById = graphene.Field(User, id=graphene.String(required=True))
Expand All @@ -24,9 +25,9 @@ class UserQueries(QueryList):
)

@requires_role("Admin")
def resolve_getAllUsers(self, info, limit, offset, role):
def resolve_getAllUsers(self, info, limit, offset, role, name):
user_service = services["user_service"]
users = user_service.get_users(offset, limit, role)
users = user_service.get_users(offset, limit, role, name)
return users

@requires_login
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ def cancel_donation(self, meal_request_id: str) -> MealRequestDTO:
)

meal_request.donation_info = None
meal_request.status = MealStatus.OPEN.value

meal_request_dto = meal_request.to_dto() # does validation

Expand Down
5 changes: 4 additions & 1 deletion backend/app/services/implementations/user_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,15 @@ def get_auth_id_by_user_id(self, user_id):
)
raise e

def get_users(self, offset, limit, role):
def get_users(self, offset, limit, role, name):
user_dtos = []
filteredUsers = User.objects()
if role:
filteredUsers = filteredUsers.filter(info__role=role)

if name:
filteredUsers = filteredUsers.filter(info__organization_name__iregex=name)

for user in filteredUsers.skip(offset).limit(limit):
user_dtos.append(
UserService.__user_to_serializable_dict_and_remove_auth_id(user)
Expand Down
2 changes: 1 addition & 1 deletion backend/app/services/interfaces/user_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def get_auth_id_by_user_id(self, user_id):
pass

@abstractmethod
def get_users(self, offset: int, limit: int, role: UserInfoRole):
def get_users(self, offset: int, limit: int, role: UserInfoRole, name: str):
"""
Get all users (possibly paginated in the future)
Expand Down
43 changes: 43 additions & 0 deletions backend/tests/graphql/test_all_user_queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,49 @@ def test_all_users_filter_by_role(user_setup):
assert user_result["info"] == MOCK_INFO3_CAMEL


def test_all_users_filter_by_name(user_setup):
user_1, user_2, user_3 = user_setup
executed = graphql_schema.execute(
"""{
getAllUsers(name: "Test3") {
id
info {
email
organizationAddress
organizationName
organizationDesc
organizationCoordinates
role
roleInfo {
aspInfo {
numKids
}
donorInfo {
type
tags
}
}
primaryContact {
name
phone
email
}
initialOnsiteContacts {
name
phone
email
}
active
}
}}"""
)

assert len(executed.data["getAllUsers"]) == 1
user_result = executed.data["getAllUsers"][0]
assert user_result["id"] == str(user_3.id)
assert user_result["info"] == MOCK_INFO3_CAMEL


def test_get_user_by_id(user_setup):
user_1, user_2, user_3 = user_setup
executed = graphql_schema.execute(
Expand Down
8 changes: 8 additions & 0 deletions frontend/src/Routes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import SetPassword from "./components/auth/SetPassword";
import MealDonationForm from "./components/meal_donor/donation_form/MealDonationForm";
import * as Paths from "./constants/Routes";
import Dashboard from "./pages/ASPDashboard";
import AdminMealRequestsPage from "./pages/AdminMealRequestsPage";
import AdminUsersPage from "./pages/AdminUsersPage";
import MealDonorCalendar from "./pages/MealDonorCalendar";
import MealDonorConfirmation from "./pages/MealDonorConfirmation";
import MealDonorDashboard from "./pages/MealDonorDashboard";
Expand Down Expand Up @@ -66,6 +68,12 @@ const Routes = (): React.ReactElement => {
path={Paths.ONBOARDING_REQUESTS_PAGE}
element={<OnboardingRequestsPage />}
/>
<Route path={Paths.ADMIN_MEAL_REQUESTS_PAGE}>
<Route path="donor/:donorId" element={<AdminMealRequestsPage />}/>
<Route path="asp/:aspId" element={<AdminMealRequestsPage />}/>
<Route path="" element={<AdminMealRequestsPage />}/>
</Route>
<Route path={Paths.ADMIN_USERS_PAGE} element={<AdminUsersPage />} />
<Route path={Paths.SETTINGS_PAGE} element={<Settings />} />
</Route>
<Route path="*" element={<NotFound />} />
Expand Down
Loading

0 comments on commit be26df7

Please sign in to comment.