* feat(backend): better warning on missing migrations
* add debug info to some tasks
* ensure db would even be accessed before raising concerns
* add more markers
* Add decorator to log flow
* reduce calls
* reduce fnc down
* Pass more stuff to window
* Expose form functions to plugin context
* Breaking: Render plugin component in context tree
- Required due to createRoot function
- Adds necessary context providers
* Fix context
* Provide MantineThemeContext
* Bundle mantine/core
* Hack for useNavigate within ApiForm
- Errors out if called within plugin context
- Workaround to catch the error
* Update build cmd
* Define config for building "Library" mode
* Update package.json
* Add basic index file
* Factor out ApiEndpoints
* factor out ModelType
* Factor out role enums
* Further refactoring
* More refactoring
* Cleanup
* Expose apiUrl function
* Add instance data to plugin context type def
* Tweaks for loading plugin components
- LanguageContext must be on the inside
* Tweak StylishText
* Externalize notifications system
* Update lingui config
* Add functions for checking plugin interface version
* Extract package version at build time
* Enhance version checking
* Revert variable name change
* Public package
* Add README.md
* adjust packge name
* Adjust name to include org
* Update project files
* Add basic changelog info
* Refactoring to expose URL functions
* Refactor navigation functions
* Update package and README
* Improve navigateToLink function
* Refactor stylish text
- Move into ./lib
- Do not require user state
* Revert changes
- StylishText throws error in plugin
- Low priority, can work out later
* expose function to refresh page index
* Provide RemoteComponent with a method to reload itself
* Bump version
* Cleanup tests
* Prevent duplicate --emptyOutDir arg
* Tweak playwright tests
* Expose role and permission enums
* Fix imports
* Updated docs
* Fix spelling, typos, etc
* Include more package version information
* Expose more version context
* Cleanup
* Probably don't need hooks
* Fix links
* Docs updates
* Fix links
* Move data export code out of "importer" directory
* Refactoring to allow data export via plugin
* Add brief docs framework
* Add basic DataExportMixin class
* Pass context data through to the serializer
* Extract custom serializer
* Refactoring
* Add builtin plugin for BomExport
* More refactoring
* Cleanup for UseForm hooks
* Allow GET methods in forms
* Create new 'exporter' app
* Refactor imports
* Run cleanup task on boot
* Add enumeration for plugin mixin types
* Refactor with_mixin call
* Generate export options serializer
* Pass plugin information through
* Offload export functionality to the plugin
* Generate output
* Download generated file
* Refactor frontend code
* Generate params for downloading
* Pass custom fields through to the plugin
* Implement multi-level export for BOM data
* Export supplier and manufacturer information
* Export substitute data
* Remove old BOM exporter
* Export part parameter data
* Try different app order
* Use GET instead of POST request
- Less 'dangerous' - no chance of performing a destructive operation
* Fix for constructing query parameters
- Ignore any undefined values!
* Trying something
* Revert to POST
- Required, other query data are ignored
* Fix spelling mistakes
* Remove SettingsMixin
* Revert python version
* Fix for settings.py
* Fix missing return
* Fix for label mixin code
* Run playwright tests in --host mode
* Fix for choice field
- Prevent empty value if field is required
* Remove debug prints
* Update table header
* Playwright tests for data export
* Rename app from "exporter" to "data_exporter"
* Add frontend table for export sessions
* Updated playwright testing
* Fix for unit test
* Fix build order unit test
* Back to using GET instead of POST
- Otherwise, users need POST permissions to export!
- A bit of trickery with the forms architecture
* Fix remaining unit tests
* Implement unit test for BOM export
- Including test for custom plugin
* Fix unit test
* Bump API version
* Enhanced playwright tests
* Add debug for CI testing
* Single unit test only (for debugging)
* Fix typo
* typo fix
* Remove debugs
* Docs updates
* Revert typo
* Update tests
* Serializer fix
* Fix typo
* Offload data export to the background worker
- Requires mocking the original request object
- Will need some further unit testing!
* Refactor existing models into DataOutput
- Remove LabelOutput table
- Remove ReportOutput table
- Remove ExportOutput table
- Consolidate into single API endpoint
* Remove "output" tables from frontend
* Refactor frontend hook to be generic
* Frontend now works with background data export
* Fix tasks.py
* Adjust unit tests
* Revert 'plugin_key' to 'plugin'
* Improve user checking when printing
* Updates
* Remove erroneous migration file
* Tweak plugin registry
* Adjust playwright tests
* Refactor data export
- Convert into custom hook
- Enable for calendar view also
* Add playwright tests
* Adjust unit testing
* Tweak unit tests
* Add extra timeout to data export
* Fix for RUF045
* Update docker image
- Move from alpine 3.19 to alpine 3.21
- Move from postgres13_client to postgres17_client
* Update docker-compose file
- Move from postgres:13 to postgres:16
- Move from redis:7.0 to redis:7-alpine
* Update docs
* Update docker docs
* Separate Dockerfile for devcontainer
- Debian based (python3.11-bookworm)
- Install essential system packages
* Instal postgres client
* Further devcontainer updates
- Bump postgresql image from 13 to 15
- Store psql data in the dev/psql directory
- Install required frontend packages
* Use --host mode for frontend server
* Tweak devcontainer docs
* Bump pre commit config file
* Revert "Bump pre commit config file"
This reverts commit bbfd875ac8ea682bb7e454e5ea349943a887b6f4.
* Add new global setting
* Convert to base currency on receipt
* Fix total price rendering in PO table
* Fix for tasks.py
* Update .gitignore
- Ignore auto-generated files
* Update docs
Improved documentation for pricing/currency support
* Updates
* Fix caching for default currency
- Now managed better by session caching
* Add unit test for new feature
* Playwright test fixes
* Validate copying of media files
* Validate media files
* Adjust playwright setup
* Allow multiple attempts to fetch release information
* Tweak unit tests
* Revert changes to .gitignore file
- Just trying stuff at this point
* Add debug msg
* Try hard-coded paths
* Remove debug prints
* Abs path for database
* More debug
* Fix typos
* Revert change to db name
* Remove debug statements (again)
* Cleanup playwright tests
* More test tweaks
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* add admindocs
* add tag export command
* add filter export
* switch to yaml
* upload meta info to artifacts
* format workflow file
* fix creation command
* keep all artifacts in schema repo
* fix namespace
* use one command for export
* include tags and filters in docs
* change default filename
* fix call
* fix itteration syntax
* clean up rendering
* fix formatting
* simple escape
* Fix server command in Dockerfile
* Ensure invoke is installed into the venv
* Run extra check in docker build step
* Improve documentation
* Intercept ModuleNotFoundError
- Clear error message
* Docs updates
* Add extra check to dev docker build
* Cleanup tasks.py
* Prevent double activation of venv
* Change order of operations
---------
Co-authored-by: Matthias Mair <code@mjmair.com>
* Add exception handler in tasks.py
- Catch UnexpectedExit
- Print clear message on the command that failed
- Re-throw exception
* Change c.run to run(c)
- Pass all invoke commands through the exception handler
* Add more info to version command
* Pretty colors
* Remove dummy error
* Improve invoke task output:
- Add colors for different message types
- Add success messages for critical tasks
* Tweaks
* Improve output commands
* Remove references to old setting
- Now offloaded to plugins
* Remove REPORT_ENABLE_TEST_REPORT setting
* Cleanup
* Add new boolean setting to control whether reports are attached automatically
* Attach generated report to model instance
* Update unit testing
* Bump API version
* Namespaces for invoke tasks
Fixes#7852
* adjust various places that call re-namespaced tasks
* use full invoke command
easier for future refactors
* fix call name
* move worker to int
* adapt calls in tasks
* fix changed path
* ignore localhost links
* Avoid using internal names
* Add new global setting
* Check if there are open children before completing a build
* Adds management command to export settings definition
* Fix settings export
* Extract settings data into documentation
* Add global settings spec
* User settings
* Revert strict mode
* Tweak unit test
* Remove unreachable code
* Always export settings first
* Remove unused macro
* Remove old images
* Re-add missing docs strings
* Tweak docs
* Remove unused import
* Package frontend in deb
* Add artifact download
* remove 0.8.0 check
* remove array casting
* fix format once more
* another try
* add brackets again
* add version
* and bash
* and shell
* more debuging
* various style fixes
* small fixes
* and ls for prosperity
* debug
* maybe git as source?
* fix download cmd?
* debug a bit
* debug a bit more
* remove sha download - is not working with GHA restrictions
* write version number
* check if a new frontend must be dowloaded
* write versions into frontend packages
* Matmair/issue7338 (#205)
* Package frontend in deb
* Add artifact download
* remove 0.8.0 check
* remove array casting
* fix format once more
* another try
* add brackets again
* add version
* and bash
* and shell
* more debuging
* various style fixes
* small fixes
* and ls for prosperity
* debug
* maybe git as source?
* fix download cmd?
* debug a bit
* debug a bit more
* remove sha download - is not working with GHA restrictions
* write version number
* check if a new frontend must be dowloaded
* write versions into frontend packages
* change ref dir for tests
* add better build logging
* extend task to get ref from package
* fix downloading syntax
* fix name ref
* make more robust
* more logging
* move import
* turn down unzipping noise
* strip content (spaces, newlines)
* add info what happens now
* fix quite flag
* adjust publisher
* [FR] Add invoke task to remove compiled files
Fixes#7559
* add optional clear step before install ensuring clean updates
* add pre-install
* Update preinstall.sh
* Update functions.sh
* Update preinstall.sh
* add a generic run helper to ensure commands run from top directory
* use generic run for other helpers
* Enable passing of enviroment variables
* keep server url static
see #6882 (3)
* keep plugin api out of schema
see #6882 (1)
* Add kwarg to override db settings
* keep currencies stable for schema generation
see #6882 (2)
* use str instead of bool
* add version bump
* Adds new model for DataImportSession
* Add file extension validation
Expose to admin interface also
* Switch to new 'importer' app
* Refactoring to help prevent circular imports
* Add serializer registry
- Use @register_importer tag for any serializer class
* Cleanup migration file
- Do not use one-time hard-coded values here
* Refactor code into registry.py
* Add validation for the uploaded file
- Must be importable by tablib
* Refactoring
* Adds property to retrieve matching serializer class
* Update helper functions
* Add hook to auto-assign columns on initial creation
* Rename field
* Enforce initial status value
* Add model for individual rows in the data import
* Add DataImportRow model
* Extract data rows as dict
* Update fields
- Remove "progress" field (will be calculated)
- Added "timestamp" field
- Added "complete" field to DataImportRow
* Auto-map column names
- Provide "sensible" default values
* Add API endpoint for DataImportSession
* Offload data import operation
- For large data files this may take a significant amount of time
- Offload it to the background worker process
* Refactor data import code
* Update models
- Add "columns" field to DataImportSession
- Add "errors" field to DataImportRow
* Move field mapping to a new model type
- Simpler validation
* Save "valid" status for each data row
* Include session defaults when validating row data
* Update content_excludes
- Ignore importer models in import/export
* Remove port from ALLOWED_HOST entries
* Skip table events for importer models
* Bug fixes
* Serializer updates
* Add more endpoints
- DataImportColumnMappingList
- DataImportRowList
* further updates:
- Add 'get_api_url' method
- Handle case where
* Expose "available fields" to the DataImportSession serializer
Uses the (already available) inventree metadata middleware
* Add detail endpoints
* Clear existing column mappings
* Add endpoint for accepting column mappings
* Add API endpoint exposing available importer serializers
* Add simple playground area for testing data importer
* Adds simple form to start new import session
- Needs work, file field does not currently function correctly
* data_file is *not* read_only
* Add check for file type
* Remove debug statements
* Refactor column mapping
- Generate mapping for each column
- Remove "columns" field
- Column names are calculated dynamically
* Fix uniqueness requirements on mapping table
* Admin updates
- Prevent deletion of mappings
- Prevent addition of mappings
* API endpoint updates
- Prevent mappings from being deleted
- Prevent mappings from being created
* Update importer drawer
* Add widget for selecting data columns
* UI tweaks
* Delete import session when closing modal
* Allow empty string value
* Complete column mapping
* Adds ability to remove rows
* Adjust drawer specs
* Add column 'description' to serializer
* Add option to hide labels in API form field
* Update column heading
* Fix frontend linting errors
* Revert drawer position
* Return correct type
* Fix shadowing
* Fix f-string
* simplify frontend code
* Move importer app
* Update API version
* Reintroduce export formats
* Add new models to RuleSet
* typescript cleanup
* Typescript cleanup
* Improvement for Switch / boolean field
* Display original row data on popover
* Only display mapped columns
* Add DataExportMixin class
- Replaces existing APIDownloadMixin
- Uses DRF serializers for exporting
- *much* more efficient
* Create new file: importer.mixins.py
* Add new mixin to existing views which support data export
* Better error handling
* Cleanup:
- Remove references to APIDownloadMixin
- Remove download_queryset method
- All now handled by API-based export functionality
* Replace table with InvenTreeTable
- Paginate imported rows
- Data can be searched, ordered,
* Make 'pathstring' fields read-only
* Expose list of valid importer types to the API
* Exclude read-only fields
* Cleanup
* Updates for session model
- Column is now editable on mapping object
- Field is no longer editable
- Improve admin integration
* Adds new custom hook for controlling data import session
* Refactor column mapping widget
* Refactor ImportDataSelector
* Working on ImportDataSelector component
* Adds method for editing fields in import table
- Cell edit mode
- Row edit mode
- Form submission still needs work!
* Adds background task for removing old import sessions
* Fix api_version.py
* Update src/frontend/src/components/importer/ImportDataSelector.tsx
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Update model verbose names
* Rename mixin class
* Add serializer mixin classes
- Will allow for fine-tuning of the import/export proces
* @register_importer requires specific mixin
* Check subclass for export
* Fix typos
* Refactor export serializer
- Keep operations local to the class
* Add shim class to process an individual row before exporting it
* Add mixin to existing serializers
* Add export functionality for company serializers
* Adds placeholder for custom admin class
* Update mantine styling
* spacing -> gap
* Add functionality to pre-process form data before upload
* Remove old references to download_queryset
* Improvements for data import drawer:
- Pin title at top of drawer
* Further improvements
* Fix column selection input
* Formatting improvements
* Use a <Stepper> component for better progress display
* Cleanup text
* Add export-only fields to BuildItem queryset
* Expand "export" fields for BuildItem dataset
* Skip backup and static steps in CI
* Remove hard-coded paths
* Fix for "accept_mapping" method
* Present required fields first on import session
* Add "get_importable_fields" method
* Add method for commiting imported row to database
* Cleanup
* Save "complete" state after row import
* Allow prevention of column caching
* Remove debug statement
* Add basic admin table for import sessions
* Fix for table filter functions
- New mantine version requires string values
* Add filters for import session table
* Remove debug message
* fix for <FilterItem />
* Create new import session from admin page
* Cleanup playground
* Re-open an existing import session
* Memoize cell value
* Update <ImportDataSelector>
* Enable download of build line data
* Add extra detail fields
* Register data importers for the stock app
* Enable download of stock item tracking data
* Register importerrs for "company" app
* Register importers for the "order" app
* Add extra fields to purchase order line item serializer
* Update verbose names for order models
* Cleanup import data table rendering
* Pass session information through to cell renderer
* add separate 'field_overrides' field
* Expose 'field_overrides' to API
* Refactor import field selection
* Use override data if provided
* Fix data extraction
- Ignore columns which are not mapped
* Fix fields.pop
- Provide 'None' argument
* Update import data rendering
* Handle missing / empty column names when importing data
* Bug fixin'
* Update hook
* Adds button to upload data straight to table
* Cache "available_fields"
- Reduces API access time by 85%
* Fix calculation of completed_row_count
* Import individual rows from import session
* Allow import of multiple simultaneous records
* Improve extraction of metadata
- Especially for related fields
- Request object no longer required
* Implement suspended rendering of model instances
* Cleanup
* Implement more columns for StockTable
* Allow stock filtering by packaging field
* Fix "stock_value" column
* Improve metadata extraction
- Handle read_only_fields in Meta
- Handle write_only_fields in Meta
* Increase maximum number of importable rows
* Force data import to run on background worker
* Add export-only fields to StockItemSerializer class
* Data conversion when performing initial import
* Various tweaks
* Fix order of operations for data import
* Rename component
* Allow import/export of more model types
* Fix verbose name
* Import rows as a bulk db operation
* Enable download for PartCategoryTemplateTable
* Update stock item export
* Updates for unit tests
* Remove xls format for now
- Causes some bug in tablib
- Surely xlsx is OK?
* More unit test updates
* Future proof migration
* Updates
* unit tests
* Unit test fix
* Remove 'field_overrides'
- field_defaults will suffice
* Remove 'xls' as download option from frontend
* Add simple unit test for data import
* PUI tweaks
---------
Co-authored-by: Lukas <76838159+wolflu05@users.noreply.github.com>
* Add basic model for handling generic attachments
* Refactor migration
* Data migration to convert old files across
* Admin updates
* Increase comment field max_length
* Adjust field name
* Remove legacy serializer classes / endpoints
* Expose new model to API
* Admin site list filters
* Remove legacy attachment models
- Add new mixin class to designate which models can have attachments
* Update data migration
- Ensure other apps are at the correct migration state beforehand
* Add migrations to remove legacy attachment tables
* Fix for "rename_attachment" callback
* Refactor model_type field
- ContentType does not allow easy API serialization
* Set allowed options for admin
* Update model verbose names
* Fix logic for file upload
* Add choices for serializer
* Add API filtering
* Fix for API filter
* Fix for attachment tables in PUI
- Still not solved permission issues
* Bump API version
* Record user when uploading attachment via API
* Refactor <AttachmentTable /> for PUI
* Display 'file_size' in PUI attachment table
* Fix company migrations
* Include permission informtion in roles API endpoint
* Read user permissions in PUI
* Simplify permission checks for <AttachmentTable />
* Automatically clean up old content types
* Cleanup PUI
* Fix typo in data migration
* Add reverse data migration
* Update unit tests
* Use InMemoryStorage for media files in test mode
* Data migration unit test
* Fix "model_type" field
- It is a required field after all
* Add permission check for serializer
* Fix permission check for CUI
* Fix PUI import
* Test python lib against specific branch
- Will be reverted once code is merged
* Revert STORAGES setting
- Might be worth looking into again
* Fix part unit test
* Fix unit test for sales order
* Use 'get_global_setting'
* Use 'get_global_setting'
* Update setting getter
* Unit tests
* Tweaks
* Revert change to settings.py
* More updates for get_global_setting
* Relax API query count requirement
* remove illegal chars and add unit tests
* Fix unit tests
* Fix frontend unit tests
* settings management updates
* Prevent db write under more conditions
* Simplify settings code
* Pop values before creating filters
* Prevent settings write under certain conditions
* Add debug msg
* Clear db on record import
* Refactor permissions checks
- Allows extension / customization of permission checks at a later date
* Unit test updates
* Prevent delete of attachment without correct permissions
* Adjust odcker.yaml
* Cleanup data migrations
* Tweak migration tests for build app
* Update data migration
- Handle case with missing data
* Prevent debug shell in TESTING mode
* Update migration dependencies
- Ensure all apps are "up to date" before removing legacy tables
* add file size test
* Update migration tests
* Revert some settings caching changes
* Fix incorrect logic in migration
* Update unit tests
* Prevent create on CURRENCY_CODES
- Seems to play havoc with bootup sequence
* Fix unit test
* Some refactoring
- Use get_global_setting
* Fix typo
* Revert change
* Add "tags" and "metadata"
* Include "tags" field in API serializer
* add "metadata" endpoint for attachments
* Add 'clear' option to 'invoke static'
* Add functions for copying static files from installed plugins
* Collect plugin static files as part of 'invoke static'
* Add 'activate' method for PluginConfig
* Run as part of `invoke plugins`
* Adds a new "generic" ReportTemplate model
* expose API endpoints
* Update model / migrations / serializer
* Add new mixin class to existing database models
* - Add detail view for report template
- Revert filters field behaviour
* Filter report list by provided item IDs
- Greatly simplify filtering logic compared to existing implemetation
- Expose to API schema
* Create data migration for converting *old* report templates
* Ignore internal reports for data migration
* Add report mixin to StockLocation model
* Provide model choices in admin interface
* Offload context data generation to the model classes
* Remove old report template models
* Refactor JS code in CUI
* Fix for API filtering
* Add data migration to delete old models
* Remove dead URL
* Updates
* Construct sample report templates on app start
* Bump API version
* Typo fix
* Fix incorrect context calls
* Add new LabelTemplate model
- ReportTemplate and LabelTemplate share common base
- Refactor previous migration
* Expose to admin interface
* Add in extra context from existing label models
* Add migration to create LabelTemplate instances from existing labels
* Add API endpoints for listing and updating LabelTemplate objects
* Adjust 'upload_to' path
* Refactor label printing
* Move default label templates
* Update API endpoints
* Update migrations
* Handle LookupError in migration
* Redirect the "label" API endpoint
* Add new model for handling result of template printing
* Refactor LabelPrinting mixin
* Unlink "labels" app entirely
* Fix typo
* Record 'plugin' used to generate a particular output
* Fix imports
* Generate label print response
- Still not good yet
* Refactoring label printing in CUI
* add "items" count to TemplateOutput model
* Fix for InvenTreeLabelSheetPlugin
* Remove old "label" app
* Make request object optional
* Fix filename generation
* Add help text for "model_type"
* Simplify TemplateTable
* Tweak TemplateTable
* Get template editor to display template data again
* Stringify template name
- Important, otherwise you get a TypeError instead of TemplateDoesNotExist
* Add hooks to reset plugin state
* fix context for StockLocation model
* Tweak log messages
* Fix incorrect serializer
* Cleanup TemplateTable
* Fix broken import
* Filter by target model type
* Remove manual file operations
* Update old migrations
- Remove references to functions that no longer exist
* Refactor asset / snippet uploading
* Update comments
* Retain original filename when editing templatese
* Cleanup
* Refactor model type filter to use new hook
* Add placeholder actions for printing labels and reports
* Improve hookiness
* Add new ReportOutput class
* Report printing works from PUI now!
* More inspired filename pattern for generated reports
* Fix template preview window
- Use new "output" response field across the board
* Remove outdated task
* Update data migration to use raw SQL
- If the 'labels' app is no longer available, this will fail
- So, use raw SQL instead
* Add more API endpoint defs
* Adds placeholder API endpoint for label printing
* Expose plugin field to the printing endpoint
* Adds plugin model type
* Hook to print labels
* Refactor action dropdown items
* Refactor report printing for CUI
* Refactor label print for CUI
- Still needs to handle custom printing options for plugin
* Fix migration
* Update ModelType dict
* playwright test fix
* Unit test fixes
* Fix model ruleset associations
* Fix for report.js
* Add support for "dynamic" fields in metadata.py
* Add in custom fields based on plugin
* Refactoring
* Reset plugin on form close
* Set custom timeout values
* Update migration
- Not atomic
* Cleanup
* Implement more printing actions
* Reduce timeout
* Unit test updates
* Fix part serializers
* Label printing works in CUI again
* js linting
* Update <ActionDropdown>
* Fix for label printing API endpoint
* Fix filterselectdrawer
* Improve button rendering
* Allow printing from StockLocationTable
* Add aria-labels to modal form fields
* Add test for printing stock item labels from table
* Add test for report printing
* Add unit testing for report template editing / preview
* Message refactor
* Refactor InvenTreeReportMixin class
* Update playwright test
* Update 'verbose_name' for a number of models
* Additional admin filtering
* Playwright test updates
* Run checks against new python lib branch
(temporary, will be reverted)
* remove old app reference
* fix testing ref
* fix app init
* remove old tests
* Revert custom target branch
* Expose label and report output objects to API
* refactor
* fix a few tests
* factor plugin_ref out
* fix options testing
* Update table field header
* re-enable full options testing
* fix missing plugin matching
* disable call assert
* Add custom related field for PluginConfig
- Uses 'key' rather than 'pk'
- Revert label print plugin to use slug
* Add support for custom pk field in metadata
* switch to labels for testing
* re-align report testing code
* disable version check
* fix url
* Implement lazy loading
* Allow blank plugin for printing
- Uses the builtin label printer if not specified
* Add printing actions for StockItem
* Fix for metadata helper
* Use key instead of pk in printing actions
* Support non-standard pk values in RelatedModelField
* pass context data to report serializers
* disable template / item discovery
* fix call
* Tweak unit test
* Run python checks against specific branch
* Add task for running docs server
- Option to compile schema as part of task
* Custom branch no longer needed
* Starting on documentation updates
* fix tests for reports
* fix label testing
* Update template context variables
* Refactor report context documentation
* Documentation cleanup
* Docs cleanup
* Include sample report files
* Fix links
* Link cleanup
* Integrate plugin example code into docs
* Code cleanup
* Fix type annotation
* Revert deleted variable
* remove templatetype
* remove unused imports
* extend context testing
* test if plg can print
* re-enable version check
* Update unit tests
* Fix test
* Adjust unit test
* Add debug statement to test
* Fix unit test
- Labels get printed against LabelTemplate items, duh
* Unit test update
* Unit test updates
* Test update
* Patch fix for <PartColumn> component
* Fix ReportSerialierBase class
- Re-initialize field options if not already set
* Fix unit test for sqlite
* Fix kwargs for non-blocking label printing
* Update playwright tests
* Tweak unit test
---------
Co-authored-by: Matthias Mair <code@mjmair.com>