mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Updates to data import/export steps (#6244)
* Updates to data import/export steps - Allow import/export of users.owner model - Allow export of API tokens (optional, default=False) * Exclude plugin configuration data by default * Add option to exclude socialaccount information from exported data
This commit is contained in:
parent
576bef5d82
commit
829e01dd33
45
tasks.py
45
tasks.py
@ -58,18 +58,24 @@ def apps():
|
||||
]
|
||||
|
||||
|
||||
def content_excludes():
|
||||
"""Returns a list of content types to exclude from import/export."""
|
||||
def content_excludes(
|
||||
allow_tokens: bool = True, allow_plugins: bool = True, allow_sso: bool = True
|
||||
):
|
||||
"""Returns a list of content types to exclude from import/export.
|
||||
|
||||
Arguments:
|
||||
allow_tokens (bool): Allow tokens to be exported/importe
|
||||
allow_plugins (bool): Allow plugin information to be exported/imported
|
||||
allow_sso (bool): Allow SSO tokens to be exported/imported
|
||||
"""
|
||||
excludes = [
|
||||
'contenttypes',
|
||||
'auth.permission',
|
||||
'users.apitoken',
|
||||
'error_report.error',
|
||||
'admin.logentry',
|
||||
'django_q.schedule',
|
||||
'django_q.task',
|
||||
'django_q.ormq',
|
||||
'users.owner',
|
||||
'exchange.rate',
|
||||
'exchange.exchangebackend',
|
||||
'common.notificationentry',
|
||||
@ -77,6 +83,19 @@ def content_excludes():
|
||||
'user_sessions.session',
|
||||
]
|
||||
|
||||
# Optionally exclude user token information
|
||||
if not allow_tokens:
|
||||
excludes.append('users.apitoken')
|
||||
|
||||
# Optionally exclude plugin information
|
||||
if not allow_plugins:
|
||||
excludes.append('plugin.pluginconfig')
|
||||
excludes.append('plugin.pluginsetting')
|
||||
|
||||
# Optionally exclude SSO application information
|
||||
if not allow_sso:
|
||||
excludes.append('socialaccount.socialapp')
|
||||
|
||||
output = ''
|
||||
|
||||
for e in excludes:
|
||||
@ -399,8 +418,11 @@ def update(c, skip_backup=False, frontend: bool = False, no_frontend: bool = Fal
|
||||
@task(
|
||||
help={
|
||||
'filename': "Output filename (default = 'data.json')",
|
||||
'overwrite': 'Overwrite existing files without asking first (default = off/False)',
|
||||
'include_permissions': 'Include user and group permissions in the output file (filename) (default = off/False)',
|
||||
'overwrite': 'Overwrite existing files without asking first (default = False)',
|
||||
'include_permissions': 'Include user and group permissions in the output file (default = False)',
|
||||
'include_tokens': 'Include API tokens in the output file (default = False)',
|
||||
'include_plugins': 'Include plugin data in the output file (default = False)',
|
||||
'include_sso': 'Include SSO token data in the output file (default = False)',
|
||||
'delete_temp': 'Delete temporary files (containing permissions) at end of run. Note that this will delete temporary files from previous runs as well. (default = off/False)',
|
||||
}
|
||||
)
|
||||
@ -409,6 +431,9 @@ def export_records(
|
||||
filename='data.json',
|
||||
overwrite=False,
|
||||
include_permissions=False,
|
||||
include_tokens=False,
|
||||
include_plugins=False,
|
||||
include_sso=False,
|
||||
delete_temp=False,
|
||||
):
|
||||
"""Export all database records to a file.
|
||||
@ -438,7 +463,13 @@ def export_records(
|
||||
|
||||
tmpfile = f'{filename}.tmp'
|
||||
|
||||
cmd = f"dumpdata --indent 2 --output '{tmpfile}' {content_excludes()}"
|
||||
excludes = content_excludes(
|
||||
allow_tokens=include_tokens,
|
||||
allow_plugins=include_plugins,
|
||||
allow_sso=include_sso,
|
||||
)
|
||||
|
||||
cmd = f"dumpdata --indent 2 --output '{tmpfile}' {excludes}"
|
||||
|
||||
# Dump data to temporary file
|
||||
manage(c, cmd, pty=True)
|
||||
|
Loading…
Reference in New Issue
Block a user