Add 'restart datasync' button to datasync changes list page.
This commit is contained in:
parent
6b9727d7cb
commit
b78b49d79e
4 changed files with 62 additions and 6 deletions
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2015 Lance Edgar
|
||||
# Copyright © 2010-2016 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -24,20 +24,29 @@
|
|||
DataSync Views
|
||||
"""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
from __future__ import unicode_literals, absolute_import
|
||||
|
||||
import subprocess
|
||||
import logging
|
||||
|
||||
from rattail.db import model
|
||||
from rattail.config import parse_list
|
||||
|
||||
from tailbone import forms
|
||||
from tailbone.views import MasterView
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DataSyncChangeView(MasterView):
|
||||
"""
|
||||
Master view for the DataSyncChange model.
|
||||
"""
|
||||
model_class = model.DataSyncChange
|
||||
model_title = "DataSync Change"
|
||||
url_prefix = '/datasync/changes'
|
||||
permission_prefix = 'datasync'
|
||||
|
||||
creatable = False
|
||||
viewable = False
|
||||
|
@ -58,6 +67,27 @@ class DataSyncChangeView(MasterView):
|
|||
],
|
||||
readonly=True)
|
||||
|
||||
def restart(self):
|
||||
# TODO: Add better validation (e.g. CSRF) here?
|
||||
if self.request.method == 'POST':
|
||||
cmd = parse_list(self.rattail_config.require('tailbone', 'datasync.restart'))
|
||||
log.debug("attempting datasync restart with command: {}".format(cmd))
|
||||
result = subprocess.call(cmd)
|
||||
if result == 0:
|
||||
self.request.session.flash("DataSync daemon has been restarted.")
|
||||
else:
|
||||
self.request.session.flash("DataSync daemon could not be restarted; result was: {}".format(result), 'error')
|
||||
return self.redirect(self.request.route_url('datasyncchanges'))
|
||||
|
||||
|
||||
def includeme(config):
|
||||
|
||||
config.add_tailbone_permission_group('datasync', label="DataSync")
|
||||
|
||||
# restart daemon
|
||||
config.add_route('datasync.restart', '/datasync/restart')
|
||||
config.add_view(DataSyncChangeView, attr='restart', route_name='datasync.restart',
|
||||
permission='datasync.restart')
|
||||
config.add_tailbone_permission('datasync', 'datasync.restart', label="Restart DataSync Daemon")
|
||||
|
||||
DataSyncChangeView.defaults(config)
|
||||
|
|
|
@ -608,7 +608,7 @@ class MasterView(View):
|
|||
model_title = cls.get_model_title()
|
||||
model_title_plural = cls.get_model_title_plural()
|
||||
|
||||
config.add_tailbone_permission_group(permission_prefix, model_title_plural)
|
||||
config.add_tailbone_permission_group(permission_prefix, model_title_plural, overwrite=False)
|
||||
|
||||
# list/search
|
||||
config.add_route(route_prefix, '{0}/'.format(url_prefix))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue