diff --git a/rhodecode/controllers/admin/settings.py b/rhodecode/controllers/admin/settings.py index a630fdb8..04f55403 100644 --- a/rhodecode/controllers/admin/settings.py +++ b/rhodecode/controllers/admin/settings.py @@ -49,7 +49,7 @@ from rhodecode.lib.compat import OrderedDict from rhodecode.lib.ext_json import json from rhodecode.lib.utils import jsonify -from rhodecode.model.db import RhodeCodeUi, Repository +from rhodecode.model.db import RhodeCodeUi, Repository, User from rhodecode.model.forms import ApplicationSettingsForm, \ ApplicationUiSettingsForm, ApplicationVisualisationForm, \ LabsSettingsForm, IssueTrackerPatternsForm @@ -60,6 +60,7 @@ from rhodecode.model.meta import Session from rhodecode.model.settings import ( IssueTrackerSettingsModel, VcsSettingsModel, SettingNotFound, SettingsModel) + from rhodecode.model.supervisor import SupervisorModel, SUPERVISOR_MASTER @@ -524,6 +525,7 @@ class SettingsController(BaseController): def settings_system(self): """GET /admin/settings/system: All items in the collection""" # url('admin_settings_system') + snapshot = str2bool(request.GET.get('snapshot')) c.active = 'system' defaults = self._form_defaults() @@ -558,6 +560,35 @@ class SettingsController(BaseController): except TypeError: c.system_memory = 'NOT AVAILABLE' + rhodecode_ini_safe = rhodecode.CONFIG.copy() + blacklist = [ + 'rhodecode_license_key', + 'routes.map', + 'pylons.h', + 'pylons.app_globals', + 'pylons.environ_config', + 'sqlalchemy.db1.url', + ('app_conf', 'sqlalchemy.db1.url') + ] + for k in blacklist: + if isinstance(k, tuple): + section, key = k + if section in rhodecode_ini_safe: + rhodecode_ini_safe[section].pop(key, None) + else: + rhodecode_ini_safe.pop(k, None) + + c.rhodecode_ini_safe = rhodecode_ini_safe + + # TODO: marcink, figure out how to allow only selected users to do this + c.allowed_to_snapshot = False + + if snapshot: + if c.allowed_to_snapshot: + return render('admin/settings/settings_system_snapshot.html') + else: + h.flash('You are not allowed to do this', category='warning') + return htmlfill.render( render('admin/settings/settings.html'), defaults=defaults, diff --git a/rhodecode/templates/admin/settings/settings_system.html b/rhodecode/templates/admin/settings/settings_system.html index 1075251a..ec0bc931 100644 --- a/rhodecode/templates/admin/settings/settings_system.html +++ b/rhodecode/templates/admin/settings/settings_system.html @@ -45,12 +45,15 @@
+SYSTEM INFO
+-----------
+
+% for dt, dd, tt in elems:
+${dt}: ${dd}
+% endfor
+
+PYTHON PACKAGES
+---------------
+
+% for key, value in c.py_modules:
+${key}: ${value}
+% endfor
+
+SYSTEM SETTINGS
+---------------
+
+% for key, value in sorted(c.rhodecode_ini_safe.items()):
+ % if isinstance(value, dict):
+
+ % for key2, value2 in value.items():
+[${key}]${key2}: ${value2}
+ % endfor
+
+ % else:
+${key}: ${value}
+ % endif
+% endfor
+
+
+
+
+
+
+