##// END OF EJS Templates
admin: Move admin settings navigation to admin module.
Martin Bornhold -
r295:392597a3 default
parent child Browse files
Show More
@@ -0,0 +1,106 b''
1 # -*- coding: utf-8 -*-
2
3 # Copyright (C) 2016-2016 RhodeCode GmbH
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
21
22 import logging
23 import collections
24 from pylons import url
25 from pylons.i18n.translation import lazy_ugettext
26 from zope.interface import implementer
27
28 import rhodecode
29 from rhodecode.admin.interfaces import IAdminNavigationRegistry
30 from rhodecode.lib.utils2 import str2bool
31
32
33 log = logging.getLogger(__name__)
34
35 NavListEntry = collections.namedtuple('NavListEntry', ['key', 'name', 'url'])
36
37
38 class NavEntry(object):
39
40 def __init__(self, key, name, view_name, pyramid=False):
41 self.key = key
42 self.name = name
43 self.view_name = view_name
44 self.pyramid = pyramid
45
46 def generate_url(self, request):
47 if self.pyramid:
48 if hasattr(request, 'route_path'):
49 return request.route_path(self.view_name)
50 else:
51 # TODO: johbo: Remove this after migrating to pyramid.
52 # We need the pyramid request here to generate URLs to pyramid
53 # views from within pylons views.
54 from pyramid.threadlocal import get_current_request
55 pyramid_request = get_current_request()
56 return pyramid_request.route_path(self.view_name)
57 else:
58 return url(self.view_name)
59
60
61 @implementer(IAdminNavigationRegistry)
62 class NavigationRegistry(object):
63
64 _base_entries = [
65 NavEntry('global', lazy_ugettext('Global'), 'admin_settings_global'),
66 NavEntry('vcs', lazy_ugettext('VCS'), 'admin_settings_vcs'),
67 NavEntry('visual', lazy_ugettext('Visual'), 'admin_settings_visual'),
68 NavEntry('mapping', lazy_ugettext('Remap and Rescan'),
69 'admin_settings_mapping'),
70 NavEntry('issuetracker', lazy_ugettext('Issue Tracker'),
71 'admin_settings_issuetracker'),
72 NavEntry('email', lazy_ugettext('Email'), 'admin_settings_email'),
73 NavEntry('hooks', lazy_ugettext('Hooks'), 'admin_settings_hooks'),
74 NavEntry('search', lazy_ugettext('Full Text Search'),
75 'admin_settings_search'),
76 NavEntry('system', lazy_ugettext('System Info'),
77 'admin_settings_system'),
78 NavEntry('open_source', lazy_ugettext('Open Source Licenses'),
79 'admin_settings_open_source', pyramid=True),
80 # TODO: marcink: we disable supervisor now until the supervisor stats
81 # page is fixed in the nix configuration
82 # NavEntry('supervisor', lazy_ugettext('Supervisor'),
83 # 'admin_settings_supervisor'),
84 ]
85
86 def __init__(self):
87 self._registered_entries = collections.OrderedDict([
88 (item.key, item) for item in self.__class__._base_entries
89 ])
90
91 # Add the labs entry when it's activated.
92 labs_active = str2bool(
93 rhodecode.CONFIG.get('labs_settings_active', 'false'))
94 if labs_active:
95 self.add_entry(
96 NavEntry('labs', lazy_ugettext('Labs'), 'admin_settings_labs'))
97
98 def add_entry(self, entry):
99 self._registered_entries[entry.key] = entry
100
101 def get_navlist(self, request):
102 navlist = [NavListEntry(i.key, i.name, i.generate_url(request))
103 for i in self._registered_entries.values()]
104 return navlist
105
106 navigation = NavigationRegistry()
@@ -37,6 +37,7 b' from pylons.i18n.translation import _, l'
37 37 from webob.exc import HTTPBadRequest
38 38
39 39 import rhodecode
40 from rhodecode.admin.navigation import navigation
40 41 from rhodecode.lib import auth
41 42 from rhodecode.lib import helpers as h
42 43 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
@@ -49,7 +50,7 b' from rhodecode.lib.compat import Ordered'
49 50 from rhodecode.lib.ext_json import json
50 51 from rhodecode.lib.utils import jsonify
51 52
52 from rhodecode.model.db import RhodeCodeUi, Repository, User
53 from rhodecode.model.db import RhodeCodeUi, Repository
53 54 from rhodecode.model.forms import ApplicationSettingsForm, \
54 55 ApplicationUiSettingsForm, ApplicationVisualisationForm, \
55 56 LabsSettingsForm, IssueTrackerPatternsForm
@@ -810,76 +811,3 b' LabSetting = collections.namedtuple('
810 811 help=lazy_ugettext('e.g. http://localhost:8080/')
811 812 ),
812 813 ]
813
814
815 NavListEntry = collections.namedtuple('NavListEntry', ['key', 'name', 'url'])
816
817
818 class NavEntry(object):
819
820 def __init__(self, key, name, view_name, pyramid=False):
821 self.key = key
822 self.name = name
823 self.view_name = view_name
824 self.pyramid = pyramid
825
826 def generate_url(self, request):
827 if self.pyramid:
828 if hasattr(request, 'route_path'):
829 return request.route_path(self.view_name)
830 else:
831 # TODO: johbo: Remove this after migrating to pyramid.
832 # We need the pyramid request here to generate URLs to pyramid
833 # views from within pylons views.
834 from pyramid.threadlocal import get_current_request
835 pyramid_request = get_current_request()
836 return pyramid_request.route_path(self.view_name)
837 else:
838 return url(self.view_name)
839
840
841 class NavigationRegistry(object):
842
843 _base_entries = [
844 NavEntry('global', lazy_ugettext('Global'), 'admin_settings_global'),
845 NavEntry('vcs', lazy_ugettext('VCS'), 'admin_settings_vcs'),
846 NavEntry('visual', lazy_ugettext('Visual'), 'admin_settings_visual'),
847 NavEntry('mapping', lazy_ugettext('Remap and Rescan'),
848 'admin_settings_mapping'),
849 NavEntry('issuetracker', lazy_ugettext('Issue Tracker'),
850 'admin_settings_issuetracker'),
851 NavEntry('email', lazy_ugettext('Email'), 'admin_settings_email'),
852 NavEntry('hooks', lazy_ugettext('Hooks'), 'admin_settings_hooks'),
853 NavEntry('search', lazy_ugettext('Full Text Search'),
854 'admin_settings_search'),
855 NavEntry('system', lazy_ugettext('System Info'),
856 'admin_settings_system'),
857 NavEntry('open_source', lazy_ugettext('Open Source Licenses'),
858 'admin_settings_open_source', pyramid=True),
859 # TODO: marcink: we disable supervisor now until the supervisor stats
860 # page is fixed in the nix configuration
861 # NavEntry('supervisor', lazy_ugettext('Supervisor'),
862 # 'admin_settings_supervisor'),
863 ]
864
865 def __init__(self):
866 self._registered_entries = collections.OrderedDict([
867 (item.key, item) for item in self.__class__._base_entries
868 ])
869
870 # Add the labs entry when it's activated.
871 labs_active = str2bool(
872 rhodecode.CONFIG.get('labs_settings_active', 'false'))
873 if labs_active:
874 self.add_entry(
875 NavEntry('labs', lazy_ugettext('Labs'), 'admin_settings_labs'))
876
877 def add_entry(self, entry):
878 self._registered_entries[entry.key] = entry
879
880 def get_navlist(self, request):
881 navlist = [NavListEntry(i.key, i.name, i.generate_url(request))
882 for i in self._registered_entries.values()]
883 return navlist
884
885 navigation = NavigationRegistry()
General Comments 0
You need to be logged in to leave comments. Login now