* Improved handling of race condition when saving setting value
* Improvements for managing pending migrations
- Inform user if there are outstanding migrations
- reload plugin registry (if necessary)
* Increase django-q polling time
According to this thread, should reduce multiple workers taking the same task:
https://github.com/Koed00/django-q/issues/183#issuecomment-239676084
* Revert default behavior
* Better logging
* Remove comment
* Update unit test
* Revert maintenance mode behaviour
* raise ValidationError in settings
* Skip ready functions if not in main thread or plugins are not loaded yet
* Debug integration tests
* Update ready.py
* Update ready.py
* Fix isInMainThread and isPluginRegistryLoaded ready functions
* Preload gunicorn app to only invoke the appconfig ready functions once
* debug: test prints for statistics
* Remove debug print
* Test without
* Revert "Test without"
This reverts commit 1bc1872893.
* Second test
* Add checks back to part, label, user model
* Add checks back to inventree, plugin apps
* log server output for debugging
* hopefully I can get the log this time+
* Next test
* Test with --noreload
* Next test
* trigger: ci, because session expired
* block the second ready execution instead of the first
* fix: load order
* Fix test and revert gh actions workflow change
* Added all_apps method to reload machanism
* Changed detect reload mechanism
* Also trigger ready on reload
* Add skipping second reload back for testing mode
* Added doc string back
* Update InvenTree/plugin/base/integration/AppMixin.py
* refactor docker image to reduce size
* Added required deps for database drivers
* Added alpine test dockerfile
* Readded image libs to Dockerfile
* Fix link in dockerfile
* Replaced Dockerfile
* Remove bash from image
* Added base target to Dockerfile
* Added missing mysql dev headers
* Add dev target back to Dockerfile
* fix: Dockerfile style
* Add old comments back to dockerfile
* Removed wrong comment
* Added back piwheels repo
* Handle exception when creating default labels
- Running workers in parallel may cause race conditions
- Catch any exception which is raised
* Prevent password from being logged
* Update default timeout for docker
* Add settings to control upcoming stocktake features
* Adds migration for "cost range" when performing stocktake
* Add cost data to PartStocktakeSerializer
Implement a new custom serializer for currency data type
* Refactor existing currency serializers
* Update stocktake table and forms
* Prevent trailing zeroes in forms
* Calculate cost range when adding manual stocktake entry
* Display interactive chart for part stocktake history
* Ensure chart data are converted to common currency
* Adds new model for building stocktake reports
* Add admin integration for new model
* Adds API endpoint to expose list of stocktake reports available for download
- No ability to edit or delete via API
* Add setting to control automated deletion of old stocktake reports
* Updates for settings page
- Load part stocktake report table
- Refactor function to render a downloadable media file
- Fix bug with forcing files to be downloaded
- Split js code into separate templates
- Make use of onPanelLoad functionalitty
* Fix conflicting migration files
* Adds API endpoint for manual generation of stocktake report
* Offload task to generate new stocktake report
* Adds python function to perform stocktake on a single part instance
* Small bug fixes
* Various tweaks
- Prevent new stocktake models from triggering plugin events when created
- Construct a simple csv dataset
* Generate new report
* Updates for report generation
- Prefetch related data
- Add extra columns
- Keep track of stocktake instances (for saving to database later on)
* Updates:
- Add confirmation message
- Serializer validation checks
* Ensure that background worker is running before manually scheduling a new stocktake report
* Add extra fields to stocktake models
Also move code from part/models.py to part/tasks.py
* Add 'part_count' to PartStocktakeReport table
* Updates for stocktake generation
- remove old performStocktake javascript code
- Now handled by automated server-side calculation
- Generate report for a single part
* Add a new "role" for stocktake
- Allows fine-grained control on viewing / creating / deleting stocktake data
- More in-line with existing permission controls
- Remove STOCKTAKE_OWNER setting
* Add serializer field to limit stocktake report to particular locations
* Use location restriction when generating a stocktake report
* Add UI buttons to perform stocktake for a whole category tree
* Add button to perform stocktake report for a location tree
* Adds a background tasks to handle periodic generation of stocktake reports
- Reports are generated at fixed intervals
- Deletes old reports after certain number of days
* Implement notifications for new stocktake reports
- If manually requested by a user, notify that user
- Cleanup notification table
- Amend PartStocktakeModel for better notification rendering
* Hide buttons on location and category page if stocktake is not enabled
* Cleanup log messages during server start
* Extend functionality of RoleRequired permission mixin
- Allow 'role_required' attribute to be added to an API view
- Useful when using a serializer class that does not have a model defined
* Add boolean option to toggle whether a report will be generated
* Update generateStocktake function
* Improve location filtering
- Don't limit the actual stock items
- Instead, select only parts which exist within a given location tree
* Update API version
* String tweaks
* Fix permissions for PartStocktake API
* More unit testing for stocktake functionality
* QoL fix
* Fix for assigning inherited permissions
* Import setuptools in manage.py
Ref: https://github.com/pypa/setuptools/issues/3706
* Import all the things
* Show setuptools version
* Update setuptools to latest verseion
* Force upgrade of setuptools version
* Remove debug
* Prevent docker builds on PR
* Remove setuptools imports
* Simplify settings.py / config.py
- get_setting function has been streamlined
- move some functions into config.py
* Spelling fix: IGNORRED is IGNORED
* Ensure yaml is installed as part of docker image
- invoke path is still mucking us around
* Fix broken migration
* Copy media files from demo dataset when installing test data
* Cleanup settings.py
* Fix for configuration file traversal
* Line fix
* Update quickstart guide for docker
* Allow plugin file and plugin dir to be specified in configuration file
* Cleanup config template file
* Allow secret_key information to be provided in configuration file
* Adjust root paths for CI tests
* resolve paths
* Revert paths for CI step
* remove dead code
* Revert configuration variables to old names
- Prevent breaking changes
* Simplify secret key generation
* Fix default timeout for background worker process
* Revert change for customization options
* Simplification of development docker-compose file
- Rename .env file
- Remove requirement for variable interpolation within the docker-compose file itself
* Add debug flag to CI test
* Additional quick-start docs (for docker)
* docker-compose update
- Introspection did not work quite as expected
- Set project name inside docker-compose file
* Fixes for "setup_test" task
- Check if directory exists before first deleting it
- Parameterize the "path" variable
- Add option to ignore update step
* Add demo data dir to .gitignore
* Remove debug call
* Update CONTRIBUTING.md
* Update development docker-compose file
- Remove external volume definition
- v2 does not allow relative path spec here
- Simplification is only required for dev version
* Remove old debug messages
* Update docker build CI step
- Check that required directories / files have been created in the correct location(s)
* Add check for pgdb directory
* Run partial docker check on pull_request
* Disable workflow running on pull requests
* Simplify dockerfile - remove INVENTREE_DEV_DIR
- We can simply use INVENTREE_DATA_DIR
- Will need to update the documentation
* Remove plugin dir support from production docker-compose file
* Simplified dockerfile
- Changed from alpine to python:slim
- Removed some database libs (because we *connect* to a db, not host it)
* - Add gettext as required package
- Only create inventree user as part of production build (leave admin access for dev build)
* Tweaks for tasks.py
* Fix user permissions (drop to inventree user)
* Drop to the 'inventree' user level as part of init.sh
- As we have mounted volumes at 'run time' we need to ensure that the inventree user has correct permissions!
- Ref: https://stackoverflow.com/questions/39397548/how-to-give-non-root-user-in-docker-container-access-to-a-volume-mounted-on-the
* Adjust user setup
- Only drop to non-root user as part of "production" build
- Mounted external volumes make it tricky when in the dev build
- Might want to revisit this later on
* More dockerfile changes
- reduce required system packages
-
* Add new docker github workflow
* Print some more debug
* GITHUB_BASE_REF
* Add gnupg to base requirements
* Improve debug output during testing
* Refactoring updates for label printing API
- Update weasyprint version to 55.0
- Generate labels as pdf files
- Provide filename to label printing plugin
- Additional unit testing
- Improve extraction of some hidden debug data during TESTING
- Fix a spelling mistake (notifaction -> notification)
* Working on github action
* More testing
* Add requirement for pdf2image
* Fix label printing plugin and update unit testing
* Add required packages for CI
* Move docker files to the top level directory
- This allows us to build the production image directly from soure
- Don't need to re-download the source code from github
- Note: The docker install guide will need to be updated!
* Fix for docker ci file
* Print GIT SHA
* Bake git information into the production image
* Add some exta docstrings to dockerfile
* Simplify version check script
* Extract git commit info
* Extract docker tag from check_version.py
* Newline
* More work on the docker workflow
* Dockerfile fixes
- Directory / path issues
* Dockerfile fixes
- Directory / path issues
* Ignore certain steps on a pull request
* Add poppler-utils to CI
* Consolidate version check into existing CI file
* Don't run docker workflow on pull request
* Pass docker image tag through to the build
Also check .j2k files
* Add supervisord.conf example file back in
* Remove --no-cache-dir option from pip install