Add button to remove all datasync settings from DB
seems useful for someone testing, as prep to make the switch
This commit is contained in:
parent
8aff5d519d
commit
4229798c7b
2 changed files with 68 additions and 30 deletions
|
@ -30,11 +30,9 @@ import getpass
|
|||
import subprocess
|
||||
import logging
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from rattail.db import model
|
||||
from rattail.datasync.config import load_profiles
|
||||
from rattail.datasync.util import get_lastrun
|
||||
from rattail.datasync.util import get_lastrun, purge_datasync_settings
|
||||
|
||||
from tailbone.views import MasterView
|
||||
from tailbone.util import csrf_token
|
||||
|
@ -100,11 +98,17 @@ class DataSyncChangeView(MasterView):
|
|||
View for configuring the DataSync daemon.
|
||||
"""
|
||||
if self.request.method == 'POST':
|
||||
data = self.request.json_body
|
||||
self.save_settings(data)
|
||||
self.request.session.flash("Settings have been saved. "
|
||||
"You should probably restart DataSync now.")
|
||||
return self.json_response({'success': True})
|
||||
# if self.request.is_xhr and not self.request.POST:
|
||||
if self.request.POST.get('purge_settings'):
|
||||
self.delete_settings()
|
||||
self.request.session.flash("Settings have been removed.")
|
||||
return self.redirect(self.request.current_route_url())
|
||||
else:
|
||||
data = self.request.json_body
|
||||
self.save_settings(data)
|
||||
self.request.session.flash("Settings have been saved. "
|
||||
"You should probably restart DataSync now.")
|
||||
return self.json_response({'success': True})
|
||||
|
||||
profiles = load_profiles(self.rattail_config,
|
||||
include_disabled=True,
|
||||
|
@ -221,28 +225,7 @@ class DataSyncChangeView(MasterView):
|
|||
value=setting['value']))
|
||||
|
||||
def delete_settings(self):
|
||||
model = self.model
|
||||
|
||||
to_delete = [
|
||||
'rattail.datasync.watch',
|
||||
'tailbone.datasync.restart',
|
||||
]
|
||||
for setting in to_delete:
|
||||
setting = self.Session.query(model.Setting).get(setting)
|
||||
if setting:
|
||||
self.Session.delete(setting)
|
||||
|
||||
self.Session.query(model.Setting)\
|
||||
.filter(sa.or_(
|
||||
model.Setting.name.like('rattail.datasync.%.watcher'),
|
||||
model.Setting.name.like('rattail.datasync.%.watcher.db'),
|
||||
model.Setting.name.like('rattail.datasync.%.watcher.delay'),
|
||||
model.Setting.name.like('rattail.datasync.%.watcher.retry_attempts'),
|
||||
model.Setting.name.like('rattail.datasync.%.watcher.retry_delay'),
|
||||
model.Setting.name.like('rattail.datasync.%.consumers'),
|
||||
model.Setting.name.like('rattail.datasync.%.consumers.runas'),
|
||||
model.Setting.name.like('rattail.datasync.%.consumer.%')))\
|
||||
.delete(synchronize_session=False)
|
||||
purge_datasync_settings(self.rattail_config, self.Session())
|
||||
|
||||
@classmethod
|
||||
def defaults(cls, config):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue