mirror of
https://github.com/inventree/InvenTree.git
synced 2025-08-11 14:20:55 +00:00
Merge branch 'master' into custom-states
This commit is contained in:
@@ -67,6 +67,22 @@ For more information, refer to the installation guides:
|
|||||||
|
|
||||||
Before performing an update, check the release notes! Any *breaking changes* (changes which require user intervention) will be clearly noted.
|
Before performing an update, check the release notes! Any *breaking changes* (changes which require user intervention) will be clearly noted.
|
||||||
|
|
||||||
|
### Cannot import name get_storage_class
|
||||||
|
|
||||||
|
When running an install or update, you may see an error similar to:
|
||||||
|
|
||||||
|
```python
|
||||||
|
ImportError: cannot import name 'get_storage_class' from 'django.core.files.storage'
|
||||||
|
```
|
||||||
|
|
||||||
|
In such a situation, it is likely that the automatic backup procedure is unable to run, as the required python packages are not yet installed or are unavailable.
|
||||||
|
|
||||||
|
To proceed in this case, you can skip the backup procedure by running the `invoke update` command with the `--skip-backup` flag:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
invoke update --skip-backup
|
||||||
|
```
|
||||||
|
|
||||||
### Feature *x* does not work after update
|
### Feature *x* does not work after update
|
||||||
|
|
||||||
If a particular menu / item is not visible after updating InvenTree, or a certain function no longer seems to work, it may be due to your internet browser caching old versions of CSS and JavaScript files.
|
If a particular menu / item is not visible after updating InvenTree, or a certain function no longer seems to work, it may be due to your internet browser caching old versions of CSS and JavaScript files.
|
||||||
|
@@ -143,6 +143,13 @@ class InvenTreeTaskTests(TestCase):
|
|||||||
os.environ['INVENTREE_AUTO_UPDATE'] = 'True'
|
os.environ['INVENTREE_AUTO_UPDATE'] = 'True'
|
||||||
InvenTree.tasks.check_for_migrations()
|
InvenTree.tasks.check_for_migrations()
|
||||||
|
|
||||||
|
# List all current migrations for the InvenTree app
|
||||||
|
migration_dir = os.path.join(
|
||||||
|
os.path.dirname(os.path.abspath(__file__)), 'migrations'
|
||||||
|
)
|
||||||
|
|
||||||
|
migration_files = os.listdir(migration_dir)
|
||||||
|
|
||||||
# Create migration
|
# Create migration
|
||||||
self.assertEqual(len(InvenTree.tasks.get_migration_plan()), 0)
|
self.assertEqual(len(InvenTree.tasks.get_migration_plan()), 0)
|
||||||
call_command('makemigrations', ['InvenTree', '--empty'], interactive=False)
|
call_command('makemigrations', ['InvenTree', '--empty'], interactive=False)
|
||||||
@@ -165,6 +172,19 @@ class InvenTreeTaskTests(TestCase):
|
|||||||
except IndexError: # pragma: no cover
|
except IndexError: # pragma: no cover
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Let's remove the newly created migration file
|
||||||
|
for fn in os.listdir(migration_dir):
|
||||||
|
fn = os.path.join(migration_dir, fn)
|
||||||
|
|
||||||
|
if (
|
||||||
|
os.path.isfile(fn)
|
||||||
|
and fn not in migration_files
|
||||||
|
and 'auto' in fn
|
||||||
|
and fn.endswith('.py')
|
||||||
|
):
|
||||||
|
print('Removing dummy migration file:', fn)
|
||||||
|
os.remove(fn)
|
||||||
|
|
||||||
def test_failed_task_notification(self):
|
def test_failed_task_notification(self):
|
||||||
"""Test that a failed task will generate a notification."""
|
"""Test that a failed task will generate a notification."""
|
||||||
from common.models import NotificationEntry, NotificationMessage
|
from common.models import NotificationEntry, NotificationMessage
|
||||||
|
Reference in New Issue
Block a user