mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 05:05:42 +00:00 
			
		
		
		
	Add metadata model to Company (#3895)
* Add Metadata mixin to Company model * Add migration file * Lint * Fixes due to style * Syntax error * Lint * as this exposes a new endpoint to the API, increment the API version number with a brief description:
This commit is contained in:
		| @@ -10,7 +10,9 @@ from rest_framework import filters | ||||
| from InvenTree.api import AttachmentMixin, ListCreateDestroyAPIView | ||||
| from InvenTree.filters import InvenTreeOrderingFilter | ||||
| from InvenTree.helpers import str2bool | ||||
| from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI | ||||
| from InvenTree.mixins import (ListCreateAPI, RetrieveUpdateAPI, | ||||
|                               RetrieveUpdateDestroyAPI) | ||||
| from plugin.serializers import MetadataSerializer | ||||
|  | ||||
| from .models import (Company, ManufacturerPart, ManufacturerPartAttachment, | ||||
|                      ManufacturerPartParameter, SupplierPart, | ||||
| @@ -83,6 +85,16 @@ class CompanyDetail(RetrieveUpdateDestroyAPI): | ||||
|         return queryset | ||||
|  | ||||
|  | ||||
| class CompanyMetadata(RetrieveUpdateAPI): | ||||
|     """API endpoint for viewing / updating Company metadata.""" | ||||
|  | ||||
|     def get_serializer(self, *args, **kwargs): | ||||
|         """Return MetadataSerializer instance for a Company""" | ||||
|         return MetadataSerializer(Company, *args, **kwargs) | ||||
|  | ||||
|     queryset = Company.objects.all() | ||||
|  | ||||
|  | ||||
| class ManufacturerPartFilter(rest_filters.FilterSet): | ||||
|     """Custom API filters for the ManufacturerPart list endpoint.""" | ||||
|  | ||||
| @@ -460,7 +472,11 @@ company_api_urls = [ | ||||
|         re_path(r'^.*$', SupplierPriceBreakList.as_view(), name='api-part-supplier-price-list'), | ||||
|     ])), | ||||
|  | ||||
|     re_path(r'^(?P<pk>\d+)/?', CompanyDetail.as_view(), name='api-company-detail'), | ||||
|     re_path(r'^(?P<pk>\d+)/?', include([ | ||||
|         re_path(r'^metadata/', CompanyMetadata.as_view(), name='api-company-metadata'), | ||||
|         re_path(r'^.*$', CompanyDetail.as_view(), name='api-company-detail'), | ||||
|     ])), | ||||
|  | ||||
|     re_path(r'^.*$', CompanyList.as_view(), name='api-company-list'), | ||||
|  | ||||
| ] | ||||
|   | ||||
							
								
								
									
										18
									
								
								InvenTree/company/migrations/0049_company_metadata.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								InvenTree/company/migrations/0049_company_metadata.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # Generated by Django 3.2.16 on 2022-11-02 17:53 | ||||
|  | ||||
| from django.db import migrations, models | ||||
|  | ||||
|  | ||||
| class Migration(migrations.Migration): | ||||
|  | ||||
|     dependencies = [ | ||||
|         ('company', '0048_auto_20220913_0312'), | ||||
|     ] | ||||
|  | ||||
|     operations = [ | ||||
|         migrations.AddField( | ||||
|             model_name='company', | ||||
|             name='metadata', | ||||
|             field=models.JSONField(blank=True, help_text='JSON metadata field, for use by external plugins', null=True, verbose_name='Plugin Metadata'), | ||||
|         ), | ||||
|     ] | ||||
| @@ -23,6 +23,7 @@ from common.settings import currency_code_default | ||||
| from InvenTree.fields import InvenTreeURLField, RoundingDecimalField | ||||
| from InvenTree.models import InvenTreeAttachment, InvenTreeBarcodeMixin | ||||
| from InvenTree.status_codes import PurchaseOrderStatus | ||||
| from plugin.models import MetadataMixin | ||||
|  | ||||
|  | ||||
| def rename_company_image(instance, filename): | ||||
| @@ -50,7 +51,7 @@ def rename_company_image(instance, filename): | ||||
|     return os.path.join(base, fn) | ||||
|  | ||||
|  | ||||
| class Company(models.Model): | ||||
| class Company(MetadataMixin, models.Model): | ||||
|     """A Company object represents an external company. | ||||
|  | ||||
|     It may be a supplier or a customer or a manufacturer (or a combination) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user