misc: create backup of configuration file before import (#24927) #528

Merged
fpeters merged 1 commits from wip/24927-backup-config into main 2023-08-02 10:29:55 +02:00
2 changed files with 11 additions and 0 deletions

View File

@ -383,6 +383,9 @@ def test_settings_export_import(pub):
resp = resp.form.submit('submit')
assert 'Unknown referenced objects [Unknown datasources: foobar]' in resp
# check a backup of settings has been created
assert [x for x in os.listdir(pub.app_dir) if x.startswith('config.pck.backup-')]
def test_settings_user(pub):
user = create_superuser(pub)

View File

@ -19,12 +19,14 @@ import json
import os
import pickle
import re
import shutil
import sys
import traceback
import zipfile
from contextlib import ExitStack, contextmanager
from django.utils.encoding import force_str
from django.utils.timezone import localtime
from . import custom_views, data_sources, formdef, sessions
from .admin import RootDirectory as AdminRootDirectory
@ -282,6 +284,12 @@ class WcsPublisher(QommonPublisher):
rv[key] = value
return rv
now = localtime()
for filename in ('config.pck', 'config.json'):
filepath = os.path.join(self.app_dir, filename)
if os.path.exists(filepath):
shutil.copyfile(filepath, filepath + '.backup-%s' % now.strftime('%Y%m%d'))
with zipfile.ZipFile(fd) as z:
for f in z.namelist():
if f in ('.indexes', '.max_id'):