mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 11:36:44 +00:00
Schema cleanup tmp (#9143)
* Add type hints for name, address, expired, and active * Add nullable to various fields that return null in the test dataset * Removed nullable type hint, add default boolean value instead of nullable * Bump schema version * Add schema version notes, add localized tags for doc string --------- Co-authored-by: Oliver <oliver.henry.walters@gmail.com>
This commit is contained in:
parent
92a9423c21
commit
157cbbead5
@ -1,13 +1,18 @@
|
|||||||
"""InvenTree API version information."""
|
"""InvenTree API version information."""
|
||||||
|
|
||||||
# InvenTree API version
|
# InvenTree API version
|
||||||
INVENTREE_API_VERSION = 316
|
INVENTREE_API_VERSION = 317
|
||||||
|
|
||||||
"""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."""
|
||||||
|
|
||||||
|
|
||||||
INVENTREE_API_TEXT = """
|
INVENTREE_API_TEXT = """
|
||||||
|
|
||||||
|
v317 - 2025-02-26 : https://github.com/inventree/InvenTree/pull/9143
|
||||||
|
- Default 'overdue' field to False in Build serializer
|
||||||
|
- Add allow_null to various fields in Build, Settings, Order, Part, and Stock serializers
|
||||||
|
- Add type hints to Users model to properly type fields
|
||||||
|
|
||||||
v316 - 2025-02-26 : https://github.com/inventree/InvenTree/pull/9185
|
v316 - 2025-02-26 : https://github.com/inventree/InvenTree/pull/9185
|
||||||
- Allow 'icon' field to be nullified in the PartCategory API
|
- Allow 'icon' field to be nullified in the PartCategory API
|
||||||
- Allow 'custom_icon' field to be nullified in the StockLocation API
|
- Allow 'custom_icon' field to be nullified in the StockLocation API
|
||||||
|
@ -123,7 +123,7 @@ class BuildSerializer(
|
|||||||
|
|
||||||
quantity = InvenTreeDecimalField()
|
quantity = InvenTreeDecimalField()
|
||||||
|
|
||||||
overdue = serializers.BooleanField(required=False, read_only=True)
|
overdue = serializers.BooleanField(read_only=True, default=False)
|
||||||
|
|
||||||
issued_by_detail = UserSerializer(source='issued_by', read_only=True)
|
issued_by_detail = UserSerializer(source='issued_by', read_only=True)
|
||||||
|
|
||||||
@ -132,11 +132,14 @@ class BuildSerializer(
|
|||||||
barcode_hash = serializers.CharField(read_only=True)
|
barcode_hash = serializers.CharField(read_only=True)
|
||||||
|
|
||||||
project_code_label = serializers.CharField(
|
project_code_label = serializers.CharField(
|
||||||
source='project_code.code', read_only=True, label=_('Project Code Label')
|
source='project_code.code',
|
||||||
|
read_only=True,
|
||||||
|
label=_('Project Code Label'),
|
||||||
|
allow_null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
project_code_detail = ProjectCodeSerializer(
|
project_code_detail = ProjectCodeSerializer(
|
||||||
source='project_code', many=False, read_only=True
|
source='project_code', many=False, read_only=True, allow_null=True
|
||||||
)
|
)
|
||||||
|
|
||||||
create_child_builds = serializers.BooleanField(
|
create_child_builds = serializers.BooleanField(
|
||||||
|
@ -69,11 +69,11 @@ class SettingsSerializer(InvenTreeModelSerializer):
|
|||||||
|
|
||||||
choices = serializers.SerializerMethodField()
|
choices = serializers.SerializerMethodField()
|
||||||
|
|
||||||
model_name = serializers.CharField(read_only=True)
|
model_name = serializers.CharField(read_only=True, allow_null=True)
|
||||||
|
|
||||||
model_filters = serializers.DictField(read_only=True)
|
model_filters = serializers.DictField(read_only=True)
|
||||||
|
|
||||||
api_url = serializers.CharField(read_only=True)
|
api_url = serializers.CharField(read_only=True, allow_null=True)
|
||||||
|
|
||||||
value = SettingsValueField(allow_null=True)
|
value = SettingsValueField(allow_null=True)
|
||||||
|
|
||||||
|
@ -160,6 +160,14 @@ class CompanySerializer(
|
|||||||
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
address = serializers.CharField(
|
||||||
|
label=_(
|
||||||
|
'Return the string representation for the primary address. This property exists for backwards compatibility.'
|
||||||
|
),
|
||||||
|
allow_null=True,
|
||||||
|
read_only=True,
|
||||||
|
)
|
||||||
|
|
||||||
primary_address = AddressSerializer(required=False, allow_null=True, read_only=True)
|
primary_address = AddressSerializer(required=False, allow_null=True, read_only=True)
|
||||||
|
|
||||||
image = InvenTreeImageSerializerField(required=False, allow_null=True)
|
image = InvenTreeImageSerializerField(required=False, allow_null=True)
|
||||||
|
@ -137,12 +137,15 @@ class AbstractOrderSerializer(DataImportExportSerializerMixin, serializers.Seria
|
|||||||
)
|
)
|
||||||
|
|
||||||
project_code_label = serializers.CharField(
|
project_code_label = serializers.CharField(
|
||||||
source='project_code.code', read_only=True, label='Project Code Label'
|
source='project_code.code',
|
||||||
|
read_only=True,
|
||||||
|
label='Project Code Label',
|
||||||
|
allow_null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Detail for project code field
|
# Detail for project code field
|
||||||
project_code_detail = ProjectCodeSerializer(
|
project_code_detail = ProjectCodeSerializer(
|
||||||
source='project_code', read_only=True, many=False
|
source='project_code', read_only=True, many=False, allow_null=True
|
||||||
)
|
)
|
||||||
|
|
||||||
# Detail for address field
|
# Detail for address field
|
||||||
|
@ -386,7 +386,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
|||||||
self.fields.pop('pricing_min', None)
|
self.fields.pop('pricing_min', None)
|
||||||
self.fields.pop('pricing_max', None)
|
self.fields.pop('pricing_max', None)
|
||||||
|
|
||||||
category_default_location = serializers.IntegerField(read_only=True)
|
category_default_location = serializers.IntegerField(
|
||||||
|
read_only=True, allow_null=True
|
||||||
|
)
|
||||||
|
|
||||||
image = InvenTree.serializers.InvenTreeImageSerializerField(read_only=True)
|
image = InvenTree.serializers.InvenTreeImageSerializerField(read_only=True)
|
||||||
thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True)
|
thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True)
|
||||||
@ -969,7 +971,9 @@ class PartSerializer(
|
|||||||
unallocated_stock = serializers.FloatField(
|
unallocated_stock = serializers.FloatField(
|
||||||
read_only=True, label=_('Unallocated Stock')
|
read_only=True, label=_('Unallocated Stock')
|
||||||
)
|
)
|
||||||
category_default_location = serializers.IntegerField(read_only=True)
|
category_default_location = serializers.IntegerField(
|
||||||
|
read_only=True, allow_null=True
|
||||||
|
)
|
||||||
variant_stock = serializers.FloatField(read_only=True, label=_('Variant Stock'))
|
variant_stock = serializers.FloatField(read_only=True, label=_('Variant Stock'))
|
||||||
|
|
||||||
minimum_stock = serializers.FloatField(
|
minimum_stock = serializers.FloatField(
|
||||||
|
@ -593,13 +593,17 @@ class StockItemSerializer(
|
|||||||
)
|
)
|
||||||
|
|
||||||
SKU = serializers.CharField(
|
SKU = serializers.CharField(
|
||||||
source='supplier_part.SKU', read_only=True, label=_('Supplier Part Number')
|
source='supplier_part.SKU',
|
||||||
|
read_only=True,
|
||||||
|
label=_('Supplier Part Number'),
|
||||||
|
allow_null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
MPN = serializers.CharField(
|
MPN = serializers.CharField(
|
||||||
source='supplier_part.manufacturer_part.MPN',
|
source='supplier_part.manufacturer_part.MPN',
|
||||||
read_only=True,
|
read_only=True,
|
||||||
label=_('Manufacturer Part Number'),
|
label=_('Manufacturer Part Number'),
|
||||||
|
allow_null=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Optional detail fields, which can be appended via query parameters
|
# Optional detail fields, which can be appended via query parameters
|
||||||
@ -657,11 +661,11 @@ class StockItemSerializer(
|
|||||||
)
|
)
|
||||||
|
|
||||||
purchase_order_reference = serializers.CharField(
|
purchase_order_reference = serializers.CharField(
|
||||||
source='purchase_order.reference', read_only=True
|
source='purchase_order.reference', read_only=True, allow_null=True
|
||||||
)
|
)
|
||||||
|
|
||||||
sales_order_reference = serializers.CharField(
|
sales_order_reference = serializers.CharField(
|
||||||
source='sales_order.reference', read_only=True
|
source='sales_order.reference', read_only=True, allow_null=True
|
||||||
)
|
)
|
||||||
|
|
||||||
tags = TagListSerializerField(required=False)
|
tags = TagListSerializerField(required=False)
|
||||||
|
@ -137,7 +137,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def sanitize_name(name: str):
|
def sanitize_name(name: str) -> str:
|
||||||
"""Sanitize the provide name value."""
|
"""Sanitize the provide name value."""
|
||||||
name = str(name).strip()
|
name = str(name).strip()
|
||||||
|
|
||||||
@ -155,7 +155,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
@admin.display(description=_('Token'))
|
@admin.display(description=_('Token'))
|
||||||
def token(self):
|
def token(self) -> str:
|
||||||
"""Provide a redacted version of the token.
|
"""Provide a redacted version of the token.
|
||||||
|
|
||||||
The *raw* key value should never be displayed anywhere!
|
The *raw* key value should never be displayed anywhere!
|
||||||
@ -170,7 +170,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
@admin.display(boolean=True, description=_('Expired'))
|
@admin.display(boolean=True, description=_('Expired'))
|
||||||
def expired(self):
|
def expired(self) -> bool:
|
||||||
"""Test if this token has expired."""
|
"""Test if this token has expired."""
|
||||||
return (
|
return (
|
||||||
self.expiry is not None and self.expiry < InvenTree.helpers.current_date()
|
self.expiry is not None and self.expiry < InvenTree.helpers.current_date()
|
||||||
@ -178,7 +178,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
@admin.display(boolean=True, description=_('Active'))
|
@admin.display(boolean=True, description=_('Active'))
|
||||||
def active(self):
|
def active(self) -> bool:
|
||||||
"""Test if this token is active."""
|
"""Test if this token is active."""
|
||||||
return not self.revoked and not self.expired
|
return not self.revoked and not self.expired
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user