mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 19:46:46 +00:00
Prevent editing of attachment file on test result after upload (#8032)
This commit is contained in:
parent
3911694342
commit
368d59ee55
@ -914,11 +914,13 @@ export function useTestResultFields({
|
|||||||
partId,
|
partId,
|
||||||
itemId,
|
itemId,
|
||||||
templateId,
|
templateId,
|
||||||
|
editing = false,
|
||||||
editTemplate = false
|
editTemplate = false
|
||||||
}: {
|
}: {
|
||||||
partId: number;
|
partId: number;
|
||||||
itemId: number;
|
itemId: number;
|
||||||
templateId: number | undefined;
|
templateId: number | undefined;
|
||||||
|
editing?: boolean;
|
||||||
editTemplate?: boolean;
|
editTemplate?: boolean;
|
||||||
}): ApiFormFieldSet {
|
}): ApiFormFieldSet {
|
||||||
// Valid field choices
|
// Valid field choices
|
||||||
@ -927,7 +929,7 @@ export function useTestResultFields({
|
|||||||
// Field type for the "value" input
|
// Field type for the "value" input
|
||||||
const [fieldType, setFieldType] = useState<'string' | 'choice'>('string');
|
const [fieldType, setFieldType] = useState<'string' | 'choice'>('string');
|
||||||
|
|
||||||
const settings = useGlobalSettingsState.getState();
|
const settings = useGlobalSettingsState();
|
||||||
|
|
||||||
const includeTestStation = useMemo(
|
const includeTestStation = useMemo(
|
||||||
() => settings.isSet('TEST_STATION_DATA'),
|
() => settings.isSet('TEST_STATION_DATA'),
|
||||||
@ -935,7 +937,7 @@ export function useTestResultFields({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return useMemo(() => {
|
return useMemo(() => {
|
||||||
return {
|
let fields: ApiFormFieldSet = {
|
||||||
stock_item: {
|
stock_item: {
|
||||||
value: itemId,
|
value: itemId,
|
||||||
hidden: true
|
hidden: true
|
||||||
@ -985,8 +987,16 @@ export function useTestResultFields({
|
|||||||
hidden: !includeTestStation
|
hidden: !includeTestStation
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (editing) {
|
||||||
|
// Prevent changing uploaded attachments
|
||||||
|
delete fields.attachment;
|
||||||
|
}
|
||||||
|
|
||||||
|
return fields;
|
||||||
}, [
|
}, [
|
||||||
choices,
|
choices,
|
||||||
|
editing,
|
||||||
editTemplate,
|
editTemplate,
|
||||||
fieldType,
|
fieldType,
|
||||||
partId,
|
partId,
|
||||||
|
@ -27,6 +27,7 @@ import {
|
|||||||
} from '../../hooks/UseForm';
|
} from '../../hooks/UseForm';
|
||||||
import { useTable } from '../../hooks/UseTable';
|
import { useTable } from '../../hooks/UseTable';
|
||||||
import { apiUrl } from '../../states/ApiState';
|
import { apiUrl } from '../../states/ApiState';
|
||||||
|
import { useGlobalSettingsState } from '../../states/SettingsState';
|
||||||
import { useUserState } from '../../states/UserState';
|
import { useUserState } from '../../states/UserState';
|
||||||
import { TableColumn } from '../Column';
|
import { TableColumn } from '../Column';
|
||||||
import { DateColumn, DescriptionColumn, NoteColumn } from '../ColumnRenderers';
|
import { DateColumn, DescriptionColumn, NoteColumn } from '../ColumnRenderers';
|
||||||
@ -49,6 +50,11 @@ export default function StockItemTestResultTable({
|
|||||||
const user = useUserState();
|
const user = useUserState();
|
||||||
const table = useTable('stocktests');
|
const table = useTable('stocktests');
|
||||||
|
|
||||||
|
const globalSettings = useGlobalSettingsState();
|
||||||
|
const includeTestStation = useMemo(
|
||||||
|
() => globalSettings.isSet('TEST_STATION_DATA'),
|
||||||
|
[globalSettings]
|
||||||
|
);
|
||||||
// Fetch the test templates required for this stock item
|
// Fetch the test templates required for this stock item
|
||||||
const { data: testTemplates } = useQuery({
|
const { data: testTemplates } = useQuery({
|
||||||
queryKey: ['stocktesttemplates', partId, itemId],
|
queryKey: ['stocktesttemplates', partId, itemId],
|
||||||
@ -203,12 +209,14 @@ export default function StockItemTestResultTable({
|
|||||||
{
|
{
|
||||||
accessor: 'test_station',
|
accessor: 'test_station',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
title: t`Test station`
|
title: t`Test station`,
|
||||||
|
hidden: !includeTestStation
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessor: 'started_datetime',
|
accessor: 'started_datetime',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
title: t`Started`,
|
title: t`Started`,
|
||||||
|
hidden: !includeTestStation,
|
||||||
render: (record: any) => {
|
render: (record: any) => {
|
||||||
return (
|
return (
|
||||||
<Group justify="space-between">
|
<Group justify="space-between">
|
||||||
@ -224,6 +232,7 @@ export default function StockItemTestResultTable({
|
|||||||
accessor: 'finished_datetime',
|
accessor: 'finished_datetime',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
title: t`Finished`,
|
title: t`Finished`,
|
||||||
|
hidden: !includeTestStation,
|
||||||
render: (record: any) => {
|
render: (record: any) => {
|
||||||
return (
|
return (
|
||||||
<Group justify="space-between">
|
<Group justify="space-between">
|
||||||
@ -236,21 +245,29 @@ export default function StockItemTestResultTable({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}, [itemId]);
|
}, [itemId, includeTestStation]);
|
||||||
|
|
||||||
const [selectedTemplate, setSelectedTemplate] = useState<number | undefined>(
|
const [selectedTemplate, setSelectedTemplate] = useState<number | undefined>(
|
||||||
undefined
|
undefined
|
||||||
);
|
);
|
||||||
|
|
||||||
const resultFields: ApiFormFieldSet = useTestResultFields({
|
const newResultFields: ApiFormFieldSet = useTestResultFields({
|
||||||
partId: partId,
|
partId: partId,
|
||||||
itemId: itemId,
|
itemId: itemId,
|
||||||
templateId: selectedTemplate
|
templateId: selectedTemplate,
|
||||||
|
editing: false
|
||||||
|
});
|
||||||
|
|
||||||
|
const editResultFields: ApiFormFieldSet = useTestResultFields({
|
||||||
|
partId: partId,
|
||||||
|
itemId: itemId,
|
||||||
|
templateId: selectedTemplate,
|
||||||
|
editing: true
|
||||||
});
|
});
|
||||||
|
|
||||||
const newTestModal = useCreateApiFormModal({
|
const newTestModal = useCreateApiFormModal({
|
||||||
url: ApiEndpoints.stock_test_result_list,
|
url: ApiEndpoints.stock_test_result_list,
|
||||||
fields: useMemo(() => ({ ...resultFields }), [resultFields]),
|
fields: useMemo(() => ({ ...newResultFields }), [newResultFields]),
|
||||||
initialData: {
|
initialData: {
|
||||||
template: selectedTemplate,
|
template: selectedTemplate,
|
||||||
result: true
|
result: true
|
||||||
@ -265,7 +282,7 @@ export default function StockItemTestResultTable({
|
|||||||
const editTestModal = useEditApiFormModal({
|
const editTestModal = useEditApiFormModal({
|
||||||
url: ApiEndpoints.stock_test_result_list,
|
url: ApiEndpoints.stock_test_result_list,
|
||||||
pk: selectedTest,
|
pk: selectedTest,
|
||||||
fields: useMemo(() => ({ ...resultFields }), [resultFields]),
|
fields: useMemo(() => ({ ...editResultFields }), [editResultFields]),
|
||||||
title: t`Edit Test Result`,
|
title: t`Edit Test Result`,
|
||||||
table: table,
|
table: table,
|
||||||
successMessage: t`Test result updated`
|
successMessage: t`Test result updated`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user