Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion plugin_creator/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def available_mixins() -> list:
# 'SupplierBarcodeMixin',
# 'UrlsMixin',
'UserInterfaceMixin',
# 'ValidationMixin',
'ValidationMixin',
]


Expand Down
3 changes: 2 additions & 1 deletion plugin_creator/template/cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"ReportMixin",
"ScheduleMixin",
"SettingsMixin",
"UserInterfaceMixin"
"UserInterfaceMixin",
"ValidationMixin"
]
},
"plugin_description": "A short description of the project",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,51 @@ def get_ui_dashboard_items(self, request, context: dict, **kwargs):
{%- endif -%}
{%- endif -%}
{%- endif %}
{%- if "ValidationMixin" in cookiecutter.plugin_mixins.mixin_list %}

# Custom data validation (from ValidationMixin)
# Ref: https://docs.inventree.org/en/stable/extend/plugins/validation/
def validate_model_deletion(self, instance, **kwargs):
"""Run custom validation when a model instance is being deleted."""
...

def validate_model_instance(self, instance, deltas=None, **kwargs):
"""Run custom validation on a database model instance."""
...

def validate_part_name(self, name, part, **kwargs):
"""Perform validation on a proposed Part name."""
...

def validate_part_ipn(self, ipn, part, **kwargs):
"""Perform validation on a proposed Part IPN."""
...

def validate_part_parameter(self, parameter, data, **kwargs):
"""Perform validation on a proposed Part parameter."""
...

def validate_batch_code(self, batch_code, stock_item, **kwargs):
"""Perform validation on a proposed StockItem batch code."""
...

def generate_batch_code(self, **kwargs):
"""Generate a new StockItem batch code."""
...

def validate_serial_number(self, serial, part, stock_item, **kwargs):
"""Perform validation on a proposed StockItem serial number."""
...

def convert_serial_to_int(self, serial, **kwargs) -> int:
"""Convert a serial number to an integer value."""
return None

def get_latest_serial_number(self, part, **kwargs):
"""Return the latest serial number for a given part."""
return None

def increment_serial_number(self, serial, part=None, **kwargs):
"""Increment a serial number."""
return None
{%- endif %}