Skip to content

Commit

Permalink
update usage of accountuser in UI
Browse files Browse the repository at this point in the history
  • Loading branch information
jadmsaadaot committed Oct 31, 2024
1 parent 2ab9a99 commit 60c3339
Show file tree
Hide file tree
Showing 17 changed files with 83 additions and 48 deletions.
8 changes: 2 additions & 6 deletions submit-api/src/submit_api/models/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,8 @@ class Package(BaseModel):
type_id = Column(db.Integer, ForeignKey('package_types.id'), nullable=False)
type = db.relationship('PackageType', foreign_keys=[type_id], lazy='joined')
submitted_on = Column(db.DateTime, nullable=True)
submitted_by = Column(db.String(255), nullable=True)
submitted_by_user = db.relationship(
'User',
primaryjoin="foreign(Package.submitted_by) == User.auth_guid",
lazy='joined'
)
submitted_by = Column(db.String, ForeignKey('users.auth_guid'), nullable=True)
submitted_by_user = db.relationship('User', foreign_keys=[submitted_by], lazy='joined')
meta = db.relationship('PackageMetadata', backref='package', lazy='select')
items = db.relationship('Item', backref='package', lazy='joined', order_by='Item.sort_order')
status = Column(db.ARRAY(Enum(PackageStatus)), nullable=False, default=[PackageStatus.NEW_SUBMISSION.value])
Expand Down
7 changes: 2 additions & 5 deletions submit-api/src/submit_api/models/submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,8 @@ class Submission(BaseModel):
submitted_form = db.relationship('SubmittedForm', foreign_keys=[submitted_form_id], lazy='joined')
submitted_document = db.relationship('SubmittedDocument', foreign_keys=[submitted_document_id], lazy='joined')
version = Column(db.Integer, nullable=False, default=1)
user = db.relationship(
'User',
primaryjoin="foreign(Submission.created_by) == User.auth_guid",
lazy='joined'
)
created_by = Column(db.String, ForeignKey('users.auth_guid'), nullable=False)
submitted_by_user = db.relationship('User', foreign_keys=[created_by], lazy='joined')

Index('idx_submissions_type_item_id', type, item_id)

Expand Down
11 changes: 9 additions & 2 deletions submit-api/src/submit_api/schemas/item.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@
Manages the item schema
"""

from marshmallow import EXCLUDE, Schema, fields
from marshmallow import EXCLUDE, Schema, fields, pre_dump

from submit_api.enums.item_status import ItemStatus
from submit_api.models.submission import SubmissionTypeStatus
from submit_api.schemas.account_user import AccountUserSchema
from submit_api.schemas.item_type import ItemTypeSchema
from submit_api.schemas.submission import SubmittedDocumentSchema, SubmittedFormSchema
from submit_api.schemas.user import UserSchema


class ItemSubmissionSchema(Schema):
Expand All @@ -29,9 +30,15 @@ class Meta: # pylint: disable=too-few-public-methods
submitted_document = fields.Nested(SubmittedDocumentSchema, data_key="submitted_document")
created_date = fields.DateTime(data_key="created_date")
created_by = fields.Str(data_key="created_by")
account_user = fields.Nested(AccountUserSchema, data_key="account_user")
submitted_by = fields.Str(data_key="submitted_by")
version = fields.Int(data_key="version")

@pre_dump
def get_submitted_by(self, obj, **kwargs):
"""Get submitted by."""
obj.submitted_by = obj.submitted_by_user.account_user.full_name if obj.submitted_by_user else None
return obj


class ItemSchema(Schema):
"""item schema."""
Expand Down
11 changes: 8 additions & 3 deletions submit-api/src/submit_api/schemas/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
Manages the package
"""

from marshmallow import EXCLUDE, Schema, fields
from marshmallow import EXCLUDE, Schema, fields, pre_dump

from submit_api.models.package import PackageStatus
from submit_api.schemas.account_user import AccountUserSchema
from submit_api.schemas.item import ItemSchema
from submit_api.schemas.package_type import PackageTypeSchema
from submit_api.schemas.user import UserSchema


class PostPackageRequestSchema(Schema):
Expand Down Expand Up @@ -63,6 +63,11 @@ class Meta: # pylint: disable=too-few-public-methods
type_id = fields.Int(data_key="type_id")
status = fields.List(fields.Enum(enum=PackageStatus), enum=PackageStatus, data_key="status")
submitted_on = fields.DateTime(data_key="submitted_on")
submitted_by_account_user = fields.Pluck(AccountUserSchema, "full_name", data_key="submitted_by")
submitted_by = fields.Str(data_key="submitted_by")
meta = fields.Nested(PackageMetadataSchema, data_key="meta", many=True)
items = fields.Nested(ItemSchema, data_key="items", many=True)

@pre_dump
def get_submitted_by(self, obj, **kwargs):
obj.submitted_by = obj.submitted_by_user.account_user.full_name if obj.submitted_by_user and obj.submitted_by_user.account_user else None
return obj
9 changes: 7 additions & 2 deletions submit-api/src/submit_api/schemas/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Manages the engagement
"""

from marshmallow import EXCLUDE, Schema, fields
from marshmallow import EXCLUDE, Schema, fields, pre_dump

from submit_api.models.package import PackageStatus
from submit_api.schemas.account_user import AccountUserSchema
Expand Down Expand Up @@ -49,9 +49,14 @@ class Meta: # pylint: disable=too-few-public-methods
type = fields.Nested(PackageTypeSchema, data_key="type")
status = fields.List(fields.Enum(enum=PackageStatus), data_key="status")
submitted_on = fields.DateTime(data_key="submitted_on")
submitted_by_account_user = fields.Pluck(AccountUserSchema, "full_name", data_key="submitted_by")
submitted_by = fields.Str(data_key="submitted_by")
items = fields.Function(lambda obj: [])

@pre_dump
def get_submitted_by(self, obj, **kwargs):
obj.submitted_by = obj.submitted_by_user.account_user.full_name if obj.submitted_by_user and obj.submitted_by_user.account_user else None
return obj


class AccountProjectSchema(Schema):
"""Account project schema."""
Expand Down
10 changes: 8 additions & 2 deletions submit-api/src/submit_api/schemas/submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Manages the submission schema
"""

from marshmallow import EXCLUDE, Schema, fields
from marshmallow import EXCLUDE, Schema, fields, pre_dump

from submit_api.schemas.account_user import AccountUserSchema

Expand Down Expand Up @@ -54,9 +54,15 @@ class Meta: # pylint: disable=too-few-public-methods
submitted_document = fields.Nested(SubmittedDocumentSchema, data_key="submitted_document")
created_date = fields.DateTime(data_key="created_date")
created_by = fields.Str(data_key="created_by")
account_user = fields.Nested(AccountUserSchema, data_key="account_user")
submitted_by = fields.Str(data_key="submitted_by")
version = fields.Int(data_key="version")

@pre_dump
def get_submitted_by(self, obj, **kwargs):
"""Get submitted by."""
obj.submitted_by = obj.submitted_by_user.account_user.full_name if obj.submitted_by_user else None
return obj


class CreateSubmissionRequestSchema(Schema):
"""Create submission request schema."""
Expand Down
1 change: 0 additions & 1 deletion submit-web/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ const queryClient = new QueryClient();
function App() {
return (
<QueryClientProvider client={queryClient}>
<ReactQueryDevtools initialIsOpen={false} />
<ThemeProvider theme={theme}>
<AuthProvider {...OidcConfig}>
<ModalProvider />
Expand Down
6 changes: 2 additions & 4 deletions submit-web/src/components/Submission/DocumentRow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export default function DocumentRow({ documentSubmission }: DocumentRowProps) {
const {
submitted_document: { name, url },
version,
account_user,
submitted_by,
} = documentSubmission;

const getObjectFromS3 = async () => {
Expand Down Expand Up @@ -77,9 +77,7 @@ export default function DocumentRow({ documentSubmission }: DocumentRowProps) {
<MuiLink onClick={getObjectFromS3}>{name}</MuiLink>
</Typography>
</StyledTableCell>
<StyledTableCell align="right">
{account_user?.full_name || ""}
</StyledTableCell>
<StyledTableCell align="right">{submitted_by || ""}</StyledTableCell>
<StyledTableCell align="right">{version}</StyledTableCell>
<StyledTableCell align="right"></StyledTableCell>
<StyledTableCell align="right"></StyledTableCell>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,10 @@ export const ConsultationRecord = () => {
<Grid item xs={12}>
<ContentBox
mainLabel={"Copper Mine"}
label={`EAC #${accountProject?.project.ea_certificate}`}
label={
accountProject?.project.ea_certificate &&
`EAC #${accountProject?.project.ea_certificate}`
}
>
<Box
sx={{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,10 @@ export const ManagementPlanSubmission = () => {
<Grid item xs={12}>
<ContentBox
mainLabel={"Copper Mine"}
label={`EAC #${accountProject?.project.ea_certificate}`}
label={
accountProject?.project.ea_certificate &&
`EAC #${accountProject?.project.ea_certificate}`
}
>
<Box
sx={{
Expand Down
8 changes: 7 additions & 1 deletion submit-web/src/hooks/api/useAccounts.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -70,5 +70,11 @@ export const getUserByGuidQueryOptions = ({ guid }: GetUserByGuidOptions) =>
...defaultUseQueryOptions,
});
export const useGetUserByGuid = ({ guid }: GetUserByGuidOptions) => {
return useQuery(getUserByGuidQueryOptions({ guid }));
return useQuery({
queryKey: [QUERY_KEY.ACCOUNT_USER, guid],
queryFn: () => getUserByGuid(guid),
enabled: Boolean(guid),
retry: false,
...defaultUseQueryOptions,
});
};
4 changes: 2 additions & 2 deletions submit-web/src/models/Submission.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AccountUser } from "./AccountUser";
import { User } from "./User";

export type SubmissionStatus =
| "NEW_SUBMISSION"
Expand Down Expand Up @@ -55,5 +55,5 @@ export type Submission = {
submitted_document: DocumentSubmission;
submitted_form: SubmittedForm;
created_date: string;
account_user: AccountUser;
submitted_by: string;
};
16 changes: 10 additions & 6 deletions submit-web/src/models/User.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import { AccountUser } from "./AccountUser";

export type UserType = "PROPONENT" | "STAFF";
export const USER_TYPE = Object.freeze<Record<UserType, UserType>>({
PROPONENT: "PROPONENT",
STAFF: "STAFF",
});
export interface User {
id: number;
first_name: string;
last_name: string;
username: string;
email_address: string;
contact_number: string;
description: string;
auth_guid: string;
account_user: AccountUser;
type: UserType;
}
13 changes: 10 additions & 3 deletions submit-web/src/routes/__root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@ import EAOAppBar from "@/components/Shared/layout/Header/EAOAppBar";
import Footer from "@/components/Shared/layout/Footer";
import PageNotFound from "@/components/Shared/PageNotFound";
import { Box } from "@mui/system";
import { createRootRouteWithContext, Outlet } from "@tanstack/react-router";
import {
CatchBoundary,
createRootRouteWithContext,
Outlet,
} from "@tanstack/react-router";
import { TanStackRouterDevtools } from "@tanstack/router-devtools";
import { AuthContextProps } from "react-oidc-context";
import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
Expand All @@ -21,7 +25,10 @@ export const Route = createRootRouteWithContext<RouterContext>()({

function Layout() {
return (
<>
<CatchBoundary
getResetKey={() => "reset"}
onCatch={(error) => console.log("boundary error", error)}
>
<EAOAppBar />
<DrawerProvider />
<Box minHeight={"calc(100vh - 88px)"}>
Expand All @@ -30,6 +37,6 @@ function Layout() {
<Footer />
<TanStackRouterDevtools position="bottom-left" />
<ReactQueryDevtools initialIsOpen={false} />
</>
</CatchBoundary>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export default function SubmissionLayout() {
projectId: accountProjectIdParam,
submissionPackageId: submissionPackageIdParam,
} = useParams({
from: "/_authenticated/_dashboard/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout/submissions/$submissionId",
from: "/_authenticated/_dashboard/projects/$projectId/_projectLayout/submission-packages/$submissionPackageId/_submissionLayout",
});
const accountProjectId = Number(accountProjectIdParam);
const accountProject = queryClient.getQueryData([
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,14 @@ export default function SubmissionPage() {
PACKAGE_STATUS.SUBMITTED.value,
);

console.log(accountProject?.project?.ea_certificate);
return (
<PageGrid>
<Grid item xs={12}>
<ContentBox
mainLabel={accountProject?.project?.name}
label={
accountProject?.project.ea_certificate
accountProject?.project?.ea_certificate
? `EAC #${accountProject?.project?.ea_certificate}`
: ""
}
Expand Down
12 changes: 5 additions & 7 deletions submit-web/src/routes/oidc-callback/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { PageLoader } from "@/components/Shared/PageLoader";
import { getUserByGuidQueryOptions } from "@/hooks/api/useAccounts";
import { useSuspenseQuery } from "@tanstack/react-query";
import { useGetUserByGuid } from "@/hooks/api/useAccounts";
import { createFileRoute, Navigate } from "@tanstack/react-router";
import { useEffect, useState } from "react";
import { useAuth } from "react-oidc-context";
Expand Down Expand Up @@ -28,13 +27,12 @@ function OidcCallback() {
}
}, [kcUser, setIsAuthLoading]);

const { data: userData, isLoading: isUserDataLoading } = useSuspenseQuery(
getUserByGuidQueryOptions({
guid: kcUser?.profile.sub,
}),
);
const { data: userData, isLoading: isUserDataLoading } = useGetUserByGuid({
guid: kcUser?.profile.sub,
});

if (getAuthError) {
console.log("auth error", getAuthError);
return <Navigate to="/error" />;
}

Expand Down

0 comments on commit 60c3339

Please sign in to comment.