mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 12:06:44 +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:
parent
278e9cfdc1
commit
fe1b8cbfce
@ -2,11 +2,14 @@
|
|||||||
|
|
||||||
|
|
||||||
# InvenTree API version
|
# InvenTree API version
|
||||||
INVENTREE_API_VERSION = 78
|
INVENTREE_API_VERSION = 79
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Increment this API version number whenever there is a significant change to the API that any clients need to know about
|
Increment this API version number whenever there is a significant change to the API that any clients need to know about
|
||||||
|
|
||||||
|
v79 -> 2022-11-03 : https://github.com/inventree/InvenTree/pull/3895
|
||||||
|
- Add metadata to Company
|
||||||
|
|
||||||
v78 -> 2022-10-25 : https://github.com/inventree/InvenTree/pull/3854
|
v78 -> 2022-10-25 : https://github.com/inventree/InvenTree/pull/3854
|
||||||
- Make PartCategory to be filtered by name and description
|
- Make PartCategory to be filtered by name and description
|
||||||
|
|
||||||
|
@ -10,7 +10,9 @@ from rest_framework import filters
|
|||||||
from InvenTree.api import AttachmentMixin, ListCreateDestroyAPIView
|
from InvenTree.api import AttachmentMixin, ListCreateDestroyAPIView
|
||||||
from InvenTree.filters import InvenTreeOrderingFilter
|
from InvenTree.filters import InvenTreeOrderingFilter
|
||||||
from InvenTree.helpers import str2bool
|
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,
|
from .models import (Company, ManufacturerPart, ManufacturerPartAttachment,
|
||||||
ManufacturerPartParameter, SupplierPart,
|
ManufacturerPartParameter, SupplierPart,
|
||||||
@ -83,6 +85,16 @@ class CompanyDetail(RetrieveUpdateDestroyAPI):
|
|||||||
return queryset
|
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):
|
class ManufacturerPartFilter(rest_filters.FilterSet):
|
||||||
"""Custom API filters for the ManufacturerPart list endpoint."""
|
"""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'^.*$', 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'),
|
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.fields import InvenTreeURLField, RoundingDecimalField
|
||||||
from InvenTree.models import InvenTreeAttachment, InvenTreeBarcodeMixin
|
from InvenTree.models import InvenTreeAttachment, InvenTreeBarcodeMixin
|
||||||
from InvenTree.status_codes import PurchaseOrderStatus
|
from InvenTree.status_codes import PurchaseOrderStatus
|
||||||
|
from plugin.models import MetadataMixin
|
||||||
|
|
||||||
|
|
||||||
def rename_company_image(instance, filename):
|
def rename_company_image(instance, filename):
|
||||||
@ -50,7 +51,7 @@ def rename_company_image(instance, filename):
|
|||||||
return os.path.join(base, fn)
|
return os.path.join(base, fn)
|
||||||
|
|
||||||
|
|
||||||
class Company(models.Model):
|
class Company(MetadataMixin, models.Model):
|
||||||
"""A Company object represents an external company.
|
"""A Company object represents an external company.
|
||||||
|
|
||||||
It may be a supplier or a customer or a manufacturer (or a combination)
|
It may be a supplier or a customer or a manufacturer (or a combination)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user