mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	[Plugin] Enhanced custom validation (#6410)
* Use registry.get_plugin() - Instead of registry.plugins.get() - get_plugin checks registry hash - performs registry reload if necessary * Add PluginValidationMixin class - Allows the entire model to be validated via plugins - Called on model.full_clean() - Called on model.save() * Update Validation sample plugin * Fix for InvenTreeTree models * Refactor build.models - Expose models to plugin validation * Update stock.models * Update more models - common.models - company.models * Update more models - label.models - order.models - part.models * More model updates * Update docs * Fix for potential plugin edge case - plugin slug is globally unique - do not use get_or_create with two lookup fields - will throw an IntegrityError if you change the name of a plugin * Inherit DiffMixin into PluginValidationMixin - Allows us to pass model diffs through to validation - Plugins can validate based on what has *changed* * Update documentation * Add get_plugin_config helper function * Bug fix * Bug fix * Update plugin hash when calling set_plugin_state * Working on unit testing * More unit testing * Move get_plugin_config into registry.py * Move extract_int into InvenTree.helpers * Fix log formatting * Update model definitions - Ensure there are no changes to the migrations * Comment out format line * Fix access to get_plugin_config * Fix tests for SimpleActionPlugin * More unit test fixes
This commit is contained in:
		| @@ -28,7 +28,6 @@ from build.validators import generate_next_build_reference, validate_build_order | ||||
| import InvenTree.fields | ||||
| import InvenTree.helpers | ||||
| import InvenTree.helpers_model | ||||
| import InvenTree.mixins | ||||
| import InvenTree.models | ||||
| import InvenTree.ready | ||||
| import InvenTree.tasks | ||||
| @@ -45,7 +44,7 @@ import users.models | ||||
| logger = logging.getLogger('inventree') | ||||
|  | ||||
|  | ||||
| class Build(MPTTModel, InvenTree.mixins.DiffMixin, InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.ReferenceIndexingMixin): | ||||
| class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNotesMixin, InvenTree.models.MetadataMixin, InvenTree.models.PluginValidationMixin, InvenTree.models.ReferenceIndexingMixin, MPTTModel): | ||||
|     """A Build object organises the creation of new StockItem objects from other existing StockItem objects. | ||||
|  | ||||
|     Attributes: | ||||
| @@ -1247,7 +1246,7 @@ class BuildOrderAttachment(InvenTree.models.InvenTreeAttachment): | ||||
|     build = models.ForeignKey(Build, on_delete=models.CASCADE, related_name='attachments') | ||||
|  | ||||
|  | ||||
| class BuildLine(models.Model): | ||||
| class BuildLine(InvenTree.models.InvenTreeModel): | ||||
|     """A BuildLine object links a BOMItem to a Build. | ||||
|  | ||||
|     When a new Build is created, the BuildLine objects are created automatically. | ||||
| @@ -1326,7 +1325,7 @@ class BuildLine(models.Model): | ||||
|         return self.allocated_quantity() > self.quantity | ||||
|  | ||||
|  | ||||
| class BuildItem(InvenTree.models.MetadataMixin, models.Model): | ||||
| class BuildItem(InvenTree.models.InvenTreeMetadataModel): | ||||
|     """A BuildItem links multiple StockItem objects to a Build. | ||||
|  | ||||
|     These are used to allocate part stock to a build. Once the Build is completed, the parts are removed from stock and the BuildItemAllocation objects are removed. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user