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
|
||||
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."""
|
||||
|
||||
|
||||
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
|
||||
- Allow 'icon' field to be nullified in the PartCategory API
|
||||
- Allow 'custom_icon' field to be nullified in the StockLocation API
|
||||
|
@ -123,7 +123,7 @@ class BuildSerializer(
|
||||
|
||||
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)
|
||||
|
||||
@ -132,11 +132,14 @@ class BuildSerializer(
|
||||
barcode_hash = serializers.CharField(read_only=True)
|
||||
|
||||
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(
|
||||
source='project_code', many=False, read_only=True
|
||||
source='project_code', many=False, read_only=True, allow_null=True
|
||||
)
|
||||
|
||||
create_child_builds = serializers.BooleanField(
|
||||
|
@ -69,11 +69,11 @@ class SettingsSerializer(InvenTreeModelSerializer):
|
||||
|
||||
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)
|
||||
|
||||
api_url = serializers.CharField(read_only=True)
|
||||
api_url = serializers.CharField(read_only=True, allow_null=True)
|
||||
|
||||
value = SettingsValueField(allow_null=True)
|
||||
|
||||
|
@ -160,6 +160,14 @@ class CompanySerializer(
|
||||
|
||||
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)
|
||||
|
||||
image = InvenTreeImageSerializerField(required=False, allow_null=True)
|
||||
|
@ -137,12 +137,15 @@ class AbstractOrderSerializer(DataImportExportSerializerMixin, serializers.Seria
|
||||
)
|
||||
|
||||
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
|
||||
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
|
||||
|
@ -386,7 +386,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer):
|
||||
self.fields.pop('pricing_min', 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)
|
||||
thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True)
|
||||
@ -969,7 +971,9 @@ class PartSerializer(
|
||||
unallocated_stock = serializers.FloatField(
|
||||
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'))
|
||||
|
||||
minimum_stock = serializers.FloatField(
|
||||
|
@ -593,13 +593,17 @@ class StockItemSerializer(
|
||||
)
|
||||
|
||||
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(
|
||||
source='supplier_part.manufacturer_part.MPN',
|
||||
read_only=True,
|
||||
label=_('Manufacturer Part Number'),
|
||||
allow_null=True,
|
||||
)
|
||||
|
||||
# Optional detail fields, which can be appended via query parameters
|
||||
@ -657,11 +661,11 @@ class StockItemSerializer(
|
||||
)
|
||||
|
||||
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(
|
||||
source='sales_order.reference', read_only=True
|
||||
source='sales_order.reference', read_only=True, allow_null=True
|
||||
)
|
||||
|
||||
tags = TagListSerializerField(required=False)
|
||||
|
@ -137,7 +137,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def sanitize_name(name: str):
|
||||
def sanitize_name(name: str) -> str:
|
||||
"""Sanitize the provide name value."""
|
||||
name = str(name).strip()
|
||||
|
||||
@ -155,7 +155,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
||||
|
||||
@property
|
||||
@admin.display(description=_('Token'))
|
||||
def token(self):
|
||||
def token(self) -> str:
|
||||
"""Provide a redacted version of the token.
|
||||
|
||||
The *raw* key value should never be displayed anywhere!
|
||||
@ -170,7 +170,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
||||
|
||||
@property
|
||||
@admin.display(boolean=True, description=_('Expired'))
|
||||
def expired(self):
|
||||
def expired(self) -> bool:
|
||||
"""Test if this token has expired."""
|
||||
return (
|
||||
self.expiry is not None and self.expiry < InvenTree.helpers.current_date()
|
||||
@ -178,7 +178,7 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
|
||||
|
||||
@property
|
||||
@admin.display(boolean=True, description=_('Active'))
|
||||
def active(self):
|
||||
def active(self) -> bool:
|
||||
"""Test if this token is active."""
|
||||
return not self.revoked and not self.expired
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user