diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 307c23899d..4364f8e6e7 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -1,11 +1,14 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 170 +INVENTREE_API_VERSION = 171 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v171 - 2024-02-19 : https://github.com/inventree/InvenTree/pull/6516 + - Adds "key" as a filterable parameter to PartTestTemplate list endpoint + v170 -> 2024-02-19 : https://github.com/inventree/InvenTree/pull/6514 - Adds "has_results" filter to the PartTestTemplate list endpoint diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index b1c4f3cce2..89bbe6cb39 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -375,7 +375,7 @@ class PartTestTemplateFilter(rest_filters.FilterSet): """Metaclass options for this filterset.""" model = PartTestTemplate - fields = ['required', 'requires_value', 'requires_attachment'] + fields = ['required', 'requires_value', 'requires_attachment', 'key'] part = rest_filters.ModelChoiceFilter( queryset=Part.objects.filter(trackable=True), diff --git a/src/frontend/src/states/UserState.tsx b/src/frontend/src/states/UserState.tsx index 5cd27c8bef..621a5a5c82 100644 --- a/src/frontend/src/states/UserState.tsx +++ b/src/frontend/src/states/UserState.tsx @@ -17,6 +17,8 @@ interface UserStateProps { hasChangeRole: (role: UserRoles) => boolean; hasAddRole: (role: UserRoles) => boolean; hasViewRole: (role: UserRoles) => boolean; + isStaff: () => boolean; + isSuperuser: () => boolean; } /** @@ -91,6 +93,14 @@ export const useUserState = create((set, get) => ({ return user?.roles[role]?.includes(permission) ?? false; }, + isStaff: () => { + const user: UserProps = get().user as UserProps; + return user?.is_staff ?? false; + }, + isSuperuser: () => { + const user: UserProps = get().user as UserProps; + return user?.is_superuser ?? false; + }, hasDeleteRole: (role: UserRoles) => { return get().checkUserRole(role, UserPermissions.delete); }, diff --git a/src/frontend/src/tables/part/PartTestTemplateTable.tsx b/src/frontend/src/tables/part/PartTestTemplateTable.tsx index ed96fb20ae..85ada56752 100644 --- a/src/frontend/src/tables/part/PartTestTemplateTable.tsx +++ b/src/frontend/src/tables/part/PartTestTemplateTable.tsx @@ -94,7 +94,7 @@ export default function PartTestTemplateTable({ partId }: { partId: number }) { const partTestTemplateFields: ApiFormFieldSet = useMemo(() => { return { part: { - hidden: true + hidden: !user.isStaff() }, test_name: {}, description: {}, @@ -102,7 +102,7 @@ export default function PartTestTemplateTable({ partId }: { partId: number }) { requires_value: {}, requires_attachment: {} }; - }, []); + }, [user]); const newTestTemplate = useCreateApiFormModal({ url: ApiEndpoints.part_test_template_list,