Skip to content

Commit

Permalink
Merge pull request #162 from jadmsaadaot/SUBMIT-task#223
Browse files Browse the repository at this point in the history
Fix - Loading package page on staff and proponent failing
  • Loading branch information
jadmsaadaot authored Nov 13, 2024
2 parents c710c4e + 0ae5bca commit b225f9a
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 14 deletions.
2 changes: 1 addition & 1 deletion submit-api/src/submit_api/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from .base_model import BaseModel
from .db import db, ma, migrate
from .email_queue import EmailQueue
from .internal_staff_documents import InternalStaffDocuments
from .item import Item
from .item_type import ItemType
from .package import Package
Expand All @@ -34,4 +35,3 @@
from .submitted_document import SubmittedDocument
from .submitted_form import SubmittedForm
from .user import User
from .internal_staff_documents import InternalStaffDocuments
27 changes: 24 additions & 3 deletions submit-api/src/submit_api/resources/staff/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

from submit_api.auth import auth
from submit_api.resources.apihelper import Api as ApiHelper
from submit_api.schemas.project import StaffAccountProjectSchema as AccountProjectSchema
from submit_api.schemas.project import StaffAccountProjectSchema
from submit_api.services.project_service import ProjectService
from submit_api.utils.util import cors_preflight

Expand All @@ -29,7 +29,7 @@
"""

project_list_model = ApiHelper.convert_ma_schema_to_restx_model(
API, AccountProjectSchema(), "Project"
API, StaffAccountProjectSchema(), "Project"
)


Expand All @@ -52,4 +52,25 @@ class AccountProjects(Resource):
def get():
"""Get all account projects."""
account_projects = ProjectService.get_all_account_projects()
return AccountProjectSchema(many=True).dump(account_projects), HTTPStatus.OK
return StaffAccountProjectSchema(many=True).dump(account_projects), HTTPStatus.OK


@cors_preflight("GET, OPTIONS, POST")
@API.route(
"/<int:account_project_id>",
methods=["POST", "GET", "OPTIONS"],
)
class AccountProject(Resource):
"""Resource for managing projects."""

@staticmethod
@ApiHelper.swagger_decorators(API, endpoint_description="Get project by project_id")
@API.response(
code=HTTPStatus.CREATED, model=project_list_model, description="Get project"
)
@API.response(HTTPStatus.BAD_REQUEST, "Bad Request")
@cors.crossdomain(origin="*")
def get(account_project_id):
"""Get projects by proponent id."""
account_project = ProjectService.get_account_project_by_id(account_project_id)
return StaffAccountProjectSchema().dump(account_project), HTTPStatus.OK
1 change: 1 addition & 0 deletions submit-web/src/hooks/api/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ export const QUERY_KEY = Object.freeze({
SUBMISSIONS: "submissions",
USERS: "users",
STAFF_ACCOUNT_PROJECTS: "staff/account-projects",
STAFF_ACCOUNT_PROJECT: "staff/account-project",
});
32 changes: 32 additions & 0 deletions submit-web/src/hooks/api/useProjects.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,38 @@ export const useGetAccountProject = ({
return useQuery(options);
};

type GetAccountProjectsByIdForStaffParams = {
accountProjectId: number;
};
const getAccountProjectByIdForStaff = ({
accountProjectId,
}: GetAccountProjectsByIdForStaffParams) => {
return submitRequest<AccountProject>({
url: `staff/projects/${accountProjectId}`,
});
};

type UseGetAccountProjectByIdForStaffParams = {
accountProjectId: number;
};

export const getAccountProjectForStaffQueryOptions = (
accountProjectId: number,
) =>
queryOptions({
queryKey: [QUERY_KEY.ACCOUNT_PROJECT, accountProjectId],
queryFn: () => getAccountProjectByIdForStaff({ accountProjectId }),
enabled: Boolean(accountProjectId),
...defaultUseQueryOptions,
});

export const useGetAccountProjectForStaff = ({
accountProjectId,
}: UseGetAccountProjectByIdForStaffParams) => {
const options = getAccountProjectForStaffQueryOptions(accountProjectId);
return useQuery(options);
};

type GetProjectsByParamsForStaff = {
searchOptions?: Record<string, string | number | string[]>;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ProjectsSkeleton } from "@/components/Projects";
import { PageGrid } from "@/components/Shared/PageGrid";
import { getAccountProjectQueryOptions } from "@/hooks/api/useProjects";
import { getAccountProjectForStaffQueryOptions } from "@/hooks/api/useProjects";
import { useSuspenseQuery } from "@tanstack/react-query";
import {
createFileRoute,
Expand All @@ -10,11 +10,11 @@ import {
} from "@tanstack/react-router";

export const Route = createFileRoute(
"/staff/_staffLayout/projects/$projectId/_projectLayout"
"/staff/_staffLayout/projects/$projectId/_projectLayout",
)({
loader: ({ context: { queryClient }, params: { projectId } }) =>
queryClient.ensureQueryData(
getAccountProjectQueryOptions(Number(projectId))
getAccountProjectForStaffQueryOptions(Number(projectId)),
),
component: ProjectLayout,
meta: ({ loaderData }) => [{ title: loaderData.project.name }],
Expand All @@ -30,7 +30,7 @@ function ProjectLayout() {
const { projectId: accountProjectIdParam } = useParams({ strict: false });
const accountProjectId = Number(accountProjectIdParam);
const { data: accountProject } = useSuspenseQuery(
getAccountProjectQueryOptions(accountProjectId)
getAccountProjectForStaffQueryOptions(accountProjectId),
);

if (!accountProject) return <Navigate to="/error" />;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { ContentBoxSkeleton } from "@/components/Shared/ContentBox/ContentBoxSkeleton";
import { PageGrid } from "@/components/Shared/PageGrid";
import { QUERY_KEY } from "@/hooks/api/constants";
import { getSubmissionPackageQueryOptions } from "@/hooks/api/usePackages";
import {
getStaffSubmissionPackageQueryOptions,
getSubmissionPackageQueryOptions,
} from "@/hooks/api/usePackages";
import { Grid } from "@mui/material";
import { useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
import {
Expand All @@ -11,14 +14,14 @@ import {
useParams,
} from "@tanstack/react-router";
export const Route = createFileRoute(
"/staff/_staffLayout/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout"
"/staff/_staffLayout/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout",
)({
component: SubmissionLayout,
loader: ({ context: { queryClient }, params: { submissionPackageId } }) =>
queryClient.ensureQueryData(
getSubmissionPackageQueryOptions({
packageId: Number(submissionPackageId),
})
}),
),
pendingComponent: () => (
<PageGrid>
Expand Down Expand Up @@ -49,9 +52,9 @@ export default function SubmissionLayout() {

const submissionPackageId = Number(submissionPackageIdParam);
const { data: submissionPackage } = useSuspenseQuery(
getSubmissionPackageQueryOptions({
getStaffSubmissionPackageQueryOptions({
packageId: submissionPackageId,
})
}),
);

if (!accountProject || !submissionPackage) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import { QUERY_KEY } from "@/hooks/api/constants";
import ItemsTable from "@/components/Submission/ItemsTable";

export const Route = createFileRoute(
"/staff/_staffLayout/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout/"
"/staff/_staffLayout/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout/",
)({
component: SubmissionPage,
});
Expand Down

0 comments on commit b225f9a

Please sign in to comment.