From 5a1234f49750f2271b152a66d78dba32aff271c3 Mon Sep 17 00:00:00 2001 From: melton-jason Date: Fri, 28 Apr 2023 12:43:20 -0500 Subject: [PATCH] Restrict creeating Host Taxon This restriction needs to be put into place until a proper fix for the Host Taxon relationship is implemented The issue is that any Host Taxon uploaded through the WorkBench or created using the '+' button on the QueryCombobox will always be created in the current collection. Related: #3240, #2675 --- .../js_src/lib/components/DataModel/schemaOverrides.ts | 3 +++ .../js_src/lib/components/FormFields/QueryComboBox.tsx | 5 ++++- .../js_src/lib/components/FormPlugins/HostTaxon.tsx | 9 ++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/DataModel/schemaOverrides.ts b/specifyweb/frontend/js_src/lib/components/DataModel/schemaOverrides.ts index 9872f16e56b..024ea896097 100644 --- a/specifyweb/frontend/js_src/lib/components/DataModel/schemaOverrides.ts +++ b/specifyweb/frontend/js_src/lib/components/DataModel/schemaOverrides.ts @@ -110,6 +110,9 @@ const globalFieldOverrides: { Attachment: { tableID: 'optional', }, + CollectingEventAttribute: { + hostTaxon: 'readOnly', + }, Taxon: { parent: 'required', isAccepted: 'readOnly', diff --git a/specifyweb/frontend/js_src/lib/components/FormFields/QueryComboBox.tsx b/specifyweb/frontend/js_src/lib/components/FormFields/QueryComboBox.tsx index 1a5124a1c59..525ddaa772f 100644 --- a/specifyweb/frontend/js_src/lib/components/FormFields/QueryComboBox.tsx +++ b/specifyweb/frontend/js_src/lib/components/FormFields/QueryComboBox.tsx @@ -64,6 +64,7 @@ export function QueryComboBox({ typeSearch: initialTypeSearch, forceCollection, relatedModel: initialRelatedModel, + disableCanAdd = false, }: { readonly id: string | undefined; readonly resource: SpecifyResource | undefined; @@ -75,6 +76,7 @@ export function QueryComboBox({ readonly typeSearch: Element | string | undefined; readonly forceCollection: number | undefined; readonly relatedModel?: SpecifyModel | undefined; + readonly disableCanAdd: boolean; }): JSX.Element { React.useEffect(() => { if (resource === undefined || !resource.isNew()) return; @@ -344,7 +346,8 @@ export function QueryComboBox({ const canAdd = !RESTRICT_ADDING.has(field.relatedModel.name) && - hasTablePermission(field.relatedModel.name, 'create'); + hasTablePermission(field.relatedModel.name, 'create') && + !disableCanAdd; return (
diff --git a/specifyweb/frontend/js_src/lib/components/FormPlugins/HostTaxon.tsx b/specifyweb/frontend/js_src/lib/components/FormPlugins/HostTaxon.tsx index d058cd17c8a..350906427d7 100644 --- a/specifyweb/frontend/js_src/lib/components/FormPlugins/HostTaxon.tsx +++ b/specifyweb/frontend/js_src/lib/components/FormPlugins/HostTaxon.tsx @@ -44,19 +44,19 @@ export function HostTaxon({ .maybe(records[0], deserializeResource) ?.rgetPromise('rightSideCollection') ) - .then((collection) => collection?.get('id')), + .then((collection) => collection), [relationship] ), false ); - return rightSideCollection === undefined ? ( + return rightSideCollection === null || rightSideCollection === undefined ? ( ) : hasTreeAccess('Taxon', 'read') ? ( ) : null; }