@@ -188,48 +188,53 @@ class SettingsController(BaseController)
sett1.app_settings_value = \
form_result['rhodecode_show_public_icon']
Session().add(sett1)
sett2 = RhodeCodeSetting.get_by_name_or_create('show_private_icon')
sett2.app_settings_value = \
form_result['rhodecode_show_private_icon']
Session().add(sett2)
sett3 = RhodeCodeSetting.get_by_name_or_create('stylify_metatags')
sett3.app_settings_value = \
form_result['rhodecode_stylify_metatags']
Session().add(sett3)
sett4 = RhodeCodeSetting.get_by_name_or_create('repository_fields')
sett4.app_settings_value = \
form_result['rhodecode_repository_fields']
Session().add(sett4)
sett5 = RhodeCodeSetting.get_by_name_or_create('dashboard_items')
sett5.app_settings_value = \
form_result['rhodecode_dashboard_items']
Session().add(sett5)
sett6 = RhodeCodeSetting.get_by_name_or_create('show_version')
sett6.app_settings_value = \
form_result['rhodecode_show_version']
Session().add(sett6)
Session().commit()
set_rhodecode_config(config)
h.flash(_('Updated visualisation settings'),
category='success')
except Exception:
log.error(traceback.format_exc())
h.flash(_('Error occurred during updating '
'visualisation settings'),
category='error')
if setting_id == 'vcs':
application_form = ApplicationUiSettingsForm()()
try:
form_result = application_form.to_python(dict(request.POST))
except formencode.Invalid, errors:
return htmlfill.render(
render('admin/settings/settings.html'),
defaults=errors.value,
errors=errors.error_dict or {},
prefix_error=False,
encoding="UTF-8"
)
@@ -252,48 +252,50 @@ class BaseVCSController(object):
log.debug('Request time: %.3fs' % (time.time() - start))
meta.Session.remove()
class BaseController(WSGIController):
def __before__(self):
"""
__before__ is called before controller methods and after __call__
c.rhodecode_version = __version__
c.rhodecode_instanceid = config.get('instance_id')
c.rhodecode_name = config.get('rhodecode_title')
c.use_gravatar = str2bool(config.get('use_gravatar'))
c.ga_code = config.get('rhodecode_ga_code')
# Visual options
c.visual = AttributeDict({})
rc_config = RhodeCodeSetting.get_app_settings()
## DB stored
c.visual.show_public_icon = str2bool(rc_config.get('rhodecode_show_public_icon'))
c.visual.show_private_icon = str2bool(rc_config.get('rhodecode_show_private_icon'))
c.visual.stylify_metatags = str2bool(rc_config.get('rhodecode_stylify_metatags'))
c.visual.dashboard_items = safe_int(rc_config.get('rhodecode_dashboard_items', 100))
c.visual.repository_fields = str2bool(rc_config.get('rhodecode_repository_fields'))
c.visual.show_version = str2bool(rc_config.get('rhodecode_show_version'))
## INI stored
self.cut_off_limit = int(config.get('cut_off_limit'))
c.repo_name = get_repo_slug(request) # can be empty
c.backends = BACKENDS.keys()
c.unread_notifications = NotificationModel()\
.get_unread_cnt_for_user(c.rhodecode_user.user_id)
self.sa = meta.Session
self.scm_model = ScmModel(self.sa)
def __call__(self, environ, start_response):
"""Invoke the Controller"""
# WSGIController.__call__ dispatches to the Controller method
# the request is routed to. This routing information is
# available in environ['pylons.routes_dict']
self.ip_addr = _get_ip_addr(environ)
# make sure that we update permissions each time we call controller
api_key = request.GET.get('api_key')
cookie_store = CookieStoreWrapper(session.get('rhodecode_user'))
user_id = cookie_store.get('user_id', None)
username = get_container_username(environ, config)
auth_user = AuthUser(user_id, api_key, username, self.ip_addr)
request.user = auth_user
@@ -638,48 +638,49 @@ class DbManage(object):
self.create_ui_settings()
ui_config = [
('web', 'push_ssl', 'false'),
('web', 'allow_archive', 'gz zip bz2'),
('web', 'allow_push', '*'),
('web', 'baseurl', '/'),
('paths', '/', path),
#('phases', 'publish', 'false')
]
for section,key,value in ui_config:
ui_conf = RhodeCodeUi()
setattr(ui_conf, 'ui_section', section)
setattr(ui_conf, 'ui_key', key)
setattr(ui_conf, 'ui_value', value)
settings = [
('realm', 'RhodeCode authentication', unicode),
('title', 'RhodeCode', unicode),
('ga_code', '', unicode),
('show_public_icon', True, bool),
('show_private_icon', True, bool),
('stylify_metatags', False, bool),
('dashboard_items', 100, int),
('show_version', True, bool)
for key, val, type_ in settings:
sett = RhodeCodeSetting(key, val)
self.sa.add(sett)
self.create_ldap_options()
self.create_default_options()
log.info('created ui config')
def create_user(self, username, password, email='', admin=False):
log.info('creating user %s' % username)
UserModel().create_or_update(username, password, email,
firstname='RhodeCode', lastname='Admin',
active=True, admin=admin)
def create_default_user(self):
log.info('creating default user')
# create default user for handling default permissions.
UserModel().create_or_update(username='default',
password=str(uuid.uuid1())[:8],
email='anonymous@rhodecode.org',
firstname='Anonymous', lastname='User')
@@ -265,48 +265,49 @@ def RepoForkForm(edit=False, old_data={}
def ApplicationSettingsForm():
class _ApplicationSettingsForm(formencode.Schema):
allow_extra_fields = True
filter_extra_fields = False
rhodecode_title = v.UnicodeString(strip=True, min=1, not_empty=True)
rhodecode_realm = v.UnicodeString(strip=True, min=1, not_empty=True)
rhodecode_ga_code = v.UnicodeString(strip=True, min=1, not_empty=False)
return _ApplicationSettingsForm
def ApplicationVisualisationForm():
class _ApplicationVisualisationForm(formencode.Schema):
rhodecode_show_public_icon = v.StringBoolean(if_missing=False)
rhodecode_show_private_icon = v.StringBoolean(if_missing=False)
rhodecode_stylify_metatags = v.StringBoolean(if_missing=False)
rhodecode_repository_fields = v.StringBoolean(if_missing=False)
rhodecode_lightweight_journal = v.StringBoolean(if_missing=False)
rhodecode_dashboard_items = v.UnicodeString()
rhodecode_show_version = v.StringBoolean(if_missing=False)
return _ApplicationVisualisationForm
def ApplicationUiSettingsForm():
class _ApplicationUiSettingsForm(formencode.Schema):
web_push_ssl = v.StringBoolean(if_missing=False)
paths_root_path = All(
v.ValidPath(),
v.UnicodeString(strip=True, min=1, not_empty=True)
hooks_changegroup_update = v.StringBoolean(if_missing=False)
hooks_changegroup_repo_size = v.StringBoolean(if_missing=False)
hooks_changegroup_push_logger = v.StringBoolean(if_missing=False)
hooks_outgoing_pull_logger = v.StringBoolean(if_missing=False)
extensions_largefiles = v.StringBoolean(if_missing=False)
extensions_hgsubversion = v.StringBoolean(if_missing=False)
extensions_hggit = v.StringBoolean(if_missing=False)
return _ApplicationUiSettingsForm
@@ -113,48 +113,53 @@
<div class="buttons">
${h.submit('save',_('Save settings'),class_="ui-btn large")}
${h.reset('reset',_('Reset'),class_="ui-btn large")}
</div>
${h.end_form()}
<h3>${_('Visualisation settings')}</h3>
${h.form(url('admin_setting', setting_id='visual'),method='put')}
<div class="form">
<!-- fields -->
<div class="fields">
<div class="field">
<div class="label label-checkbox">
<label>${_('General')}:</label>
<div class="checkboxes">
<div class="checkbox">
${h.checkbox('rhodecode_repository_fields','True')}
<label for="rhodecode_repository_fields">${_('Use repository extra fields')}</label>
<span class="help-block">${_('Allows storing additional customized fields per repository.')}</span>
${h.checkbox('rhodecode_show_version','True')}
<label for="rhodecode_show_version">${_('Show RhodeCode version')}</label>
<span class="help-block">${_('Shows or hides displayed version of RhodeCode in the footer')}</span>
<div class="label">
<label for="rhodecode_realm">${_('Dashboard items')}:</label>
<div class="input">
${h.text('rhodecode_dashboard_items',size=5)}
<span class="help-block">${_('Number of items displayed in lightweight dashboard before pagination is shown.')}</span>
<label>${_('Icons')}:</label>
${h.checkbox('rhodecode_show_public_icon','True')}
<label for="rhodecode_show_public_icon">${_('Show public repo icon on repositories')}</label>
${h.checkbox('rhodecode_show_private_icon','True')}
<label for="rhodecode_show_private_icon">${_('Show private repo icon on repositories')}</label>
@@ -21,49 +21,54 @@
<div class="flash_msg">
<% messages = h.flash.pop_messages() %>
% if messages:
<ul id="flash-messages">
% for message in messages:
<li class="${message.category}_msg">${message}</li>
% endfor
</ul>
% endif
<div id="main">
${next.main()}
<!-- END CONTENT -->
<!-- FOOTER -->
<div id="footer">
<div id="footer-inner" class="title">
<div>
<p class="footer-link">
${_('Server instance: %s') % c.rhodecode_instanceid if c.rhodecode_instanceid else ''}
</p>
<p class="footer-link-right">
<a href="${h.url('rhodecode_official')}">RhodeCode ${c.rhodecode_version}</a>
<a href="${h.url('rhodecode_official')}">
RhodeCode
%if c.visual.show_version:
${c.rhodecode_version}
%endif
</a>
© 2010-${h.datetime.today().year} by Marcin Kuzminski and others
– <a href="${h.url('bugtracker')}">${_('Report a bug')}</a>
<!-- END FOOTER -->
### MAKO DEFS ###
<%def name="breadcrumbs()">
<div class="breadcrumbs">
${self.breadcrumbs_links()}
</%def>
<%def name="context_bar(current)">
${repo_context_bar(current)}
<%def name="admin_menu()">
<ul class="admin_menu">
<li>${h.link_to(_('Admin journal'),h.url('admin_home'),class_='journal ')}</li>
<li>${h.link_to(_('Repositories'),h.url('repos'),class_='repos')}</li>
Status change: