diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 5219cbe81e..c99f1d2faf 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -9,6 +9,8 @@ INVENTREE_API_TEXT = """ v179 - 2024-03-01 : https://github.com/inventree/InvenTree/pull/6605 - Adds "subcategories" count to PartCategory serializer - Adds "sublocations" count to StockLocation serializer + - Adds "image" field to PartBrief serializer + - Adds "image" field to CompanyBrief serializer v178 - 2024-02-29 : https://github.com/inventree/InvenTree/pull/6604 - Adds "external_stock" field to the Part API endpoint diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index ad6202e83a..f94333aca8 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -42,11 +42,13 @@ class CompanyBriefSerializer(InvenTreeModelSerializer): """Metaclass options.""" model = Company - fields = ['pk', 'url', 'name', 'description', 'image'] + fields = ['pk', 'url', 'name', 'description', 'image', 'thumbnail'] url = serializers.CharField(source='get_absolute_url', read_only=True) - image = serializers.CharField(source='get_thumbnail_url', read_only=True) + image = InvenTreeImageSerializerField(read_only=True) + + thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) class AddressSerializer(InvenTreeModelSerializer): diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index f8dc0b948e..38e2b7157d 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -288,6 +288,7 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'revision', 'full_name', 'description', + 'image', 'thumbnail', 'active', 'assembly', @@ -313,6 +314,7 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): self.fields.pop('pricing_min') self.fields.pop('pricing_max') + image = InvenTree.serializers.InvenTreeImageSerializerField(read_only=True) thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) # Pricing fields diff --git a/src/frontend/src/functions/urls.tsx b/src/frontend/src/functions/urls.tsx index 8125f7b02d..55a3ae687c 100644 --- a/src/frontend/src/functions/urls.tsx +++ b/src/frontend/src/functions/urls.tsx @@ -7,10 +7,14 @@ import { ModelType } from '../enums/ModelType'; export function getDetailUrl(model: ModelType, pk: number | string): string { const modelInfo = ModelInformationDict[model]; + if (pk === undefined || pk === null) { + return ''; + } + if (!!pk && modelInfo && modelInfo.url_detail) { return modelInfo.url_detail.replace(':pk', pk.toString()); } - console.error(`No detail URL found for model ${model}!`); + console.error(`No detail URL found for model ${model} <${pk}>`); return ''; } diff --git a/src/frontend/src/pages/build/BuildDetail.tsx b/src/frontend/src/pages/build/BuildDetail.tsx index 8a10bb38dd..163c3a6616 100644 --- a/src/frontend/src/pages/build/BuildDetail.tsx +++ b/src/frontend/src/pages/build/BuildDetail.tsx @@ -181,7 +181,7 @@ export default function BuildDetail() { diff --git a/src/frontend/src/pages/stock/StockDetail.tsx b/src/frontend/src/pages/stock/StockDetail.tsx index 4303568d9b..fe000711ed 100644 --- a/src/frontend/src/pages/stock/StockDetail.tsx +++ b/src/frontend/src/pages/stock/StockDetail.tsx @@ -202,7 +202,10 @@ export default function StockDetail() {