admin: Register and retrieve navigation registry from pyramids registry.

This commit is contained in:
Martin Bornhold 2016-06-29 08:52:55 +02:00
parent e898f2e8a9
commit 670d237f39
4 changed files with 34 additions and 13 deletions

View file

@ -19,10 +19,18 @@
# and proprietary license terms, please see https://rhodecode.com/licenses/
from rhodecode.admin.navigation import NavigationRegistry
from rhodecode.config.routing import ADMIN_PREFIX
from rhodecode.lib.utils2 import str2bool
def includeme(config):
settings = config.get_settings()
# Create admin navigation registry and add it to the pyramid registry.
labs_active = str2bool(settings.get('labs_settings_active', False))
navigation_registry = NavigationRegistry(labs_active=labs_active)
config.registry.registerUtility(navigation_registry)
config.add_route(
name='admin_settings_open_source',

View file

@ -21,13 +21,12 @@
import logging
import collections
from pylons import url
from pylons.i18n.translation import lazy_ugettext
from zope.interface import implementer
import rhodecode
from rhodecode.admin.interfaces import IAdminNavigationRegistry
from rhodecode.lib.utils2 import str2bool
log = logging.getLogger(__name__)
@ -83,17 +82,16 @@ class NavigationRegistry(object):
# 'admin_settings_supervisor'),
]
def __init__(self):
_labs_entry = NavEntry('labs', lazy_ugettext('Labs'),
'admin_settings_labs')
def __init__(self, labs_active=False):
self._registered_entries = collections.OrderedDict([
(item.key, item) for item in self.__class__._base_entries
])
# Add the labs entry when it's activated.
labs_active = str2bool(
rhodecode.CONFIG.get('labs_settings_active', 'false'))
if labs_active:
self.add_entry(
NavEntry('labs', lazy_ugettext('Labs'), 'admin_settings_labs'))
self.add_entry(self._labs_entry)
def add_entry(self, entry):
self._registered_entries[entry.key] = entry
@ -103,4 +101,18 @@ class NavigationRegistry(object):
for i in self._registered_entries.values()]
return navlist
navigation = NavigationRegistry()
def navigation_registry(request):
"""
Helper that returns the admin navigation registry.
"""
pyramid_registry = request.registry
nav_registry = pyramid_registry.queryUtility(IAdminNavigationRegistry)
return nav_registry
def navigation_list(request):
"""
Helper that returns the admin navigation as list of NavListEntry objects.
"""
return navigation_registry(request).get_navlist(request)

View file

@ -24,10 +24,11 @@ import logging
from pylons import tmpl_context as c
from pyramid.view import view_config
from rhodecode.controllers.admin.settings import navigation
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
from rhodecode.lib.utils import read_opensource_licenses
from .navigation import navigation_list
log = logging.getLogger(__name__)
@ -47,7 +48,7 @@ class AdminSettingsView(object):
renderer='rhodecode:templates/admin/settings/settings.html')
def open_source_licenses(self):
c.active = 'open_source'
c.navlist = navigation.get_navlist(self.request)
c.navlist = navigation_list(self.request)
c.opensource_licenses = collections.OrderedDict(
sorted(read_opensource_licenses().items(), key=lambda t: t[0]))

View file

@ -37,7 +37,7 @@ from pylons.i18n.translation import _, lazy_ugettext
from webob.exc import HTTPBadRequest
import rhodecode
from rhodecode.admin.navigation import navigation
from rhodecode.admin.navigation import navigation_list
from rhodecode.lib import auth
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
@ -80,7 +80,7 @@ class SettingsController(BaseController):
super(SettingsController, self).__before__()
c.labs_active = str2bool(
rhodecode.CONFIG.get('labs_settings_active', 'false'))
c.navlist = navigation.get_navlist(request)
c.navlist = navigation_list(request)
def _get_hg_ui_settings(self):
ret = RhodeCodeUi.query().all()