settings.py
101 lines
| 3.0 KiB
| text/x-python
|
PythonLexer
r704 | #!/usr/bin/env python | |||
# encoding: utf-8 | ||||
# Model for RhodeCode settings | ||||
r902 | # Copyright (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com> | |||
r704 | # | |||
# This program is free software; you can redistribute it and/or | ||||
# modify it under the terms of the GNU General Public License | ||||
# as published by the Free Software Foundation; version 2 | ||||
# of the License or (at your opinion) any later version of the license. | ||||
# | ||||
# This program is distributed in the hope that it will be useful, | ||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
# GNU General Public License for more details. | ||||
# | ||||
# You should have received a copy of the GNU General Public License | ||||
# along with this program; if not, write to the Free Software | ||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||||
# MA 02110-1301, USA. | ||||
""" | ||||
Created on Nov 17, 2010 | ||||
Model for RhodeCode | ||||
r752 | :author: marcink | |||
r704 | """ | |||
r752 | ||||
r704 | from rhodecode.lib import helpers as h | |||
r752 | from rhodecode.model import BaseModel | |||
r704 | from rhodecode.model.caching_query import FromCache | |||
from rhodecode.model.db import RhodeCodeSettings | ||||
from sqlalchemy.orm import joinedload | ||||
import logging | ||||
log = logging.getLogger(__name__) | ||||
r752 | class SettingsModel(BaseModel): | |||
r704 | """ | |||
Settings model | ||||
""" | ||||
def get(self, settings_key, cache=False): | ||||
r = self.sa.query(RhodeCodeSettings)\ | ||||
.filter(RhodeCodeSettings.app_settings_name == settings_key).scalar() | ||||
if cache: | ||||
r = r.options(FromCache("sql_cache_short", | ||||
"get_setting_%s" % settings_key)) | ||||
return r | ||||
r892 | def get_app_settings(self, cache=False): | |||
r890 | """Get's config from database, each config key is prefixed with | |||
'rhodecode_' prefix, than global pylons config is updated with such | ||||
keys | ||||
""" | ||||
r892 | ret = self.sa.query(RhodeCodeSettings) | |||
if cache: | ||||
ret = ret.options(FromCache("sql_cache_short", "get_hg_settings")) | ||||
r756 | ||||
if not ret: | ||||
raise Exception('Could not get application settings !') | ||||
settings = {} | ||||
for each in ret: | ||||
settings['rhodecode_' + each.app_settings_name] = each.app_settings_value | ||||
return settings | ||||
r704 | ||||
def get_ldap_settings(self): | ||||
r705 | """ | |||
Returns ldap settings from database | ||||
:returns: | ||||
ldap_active | ||||
ldap_host | ||||
ldap_port | ||||
ldap_ldaps | ||||
Thayne Harbaugh
|
r991 | ldap_tls_reqcert | ||
r705 | ldap_dn_user | |||
ldap_dn_pass | ||||
ldap_base_dn | ||||
Thayne Harbaugh
|
r991 | ldap_filter | ||
ldap_search_scope | ||||
ldap_attr_login | ||||
ldap_attr_firstname | ||||
ldap_attr_lastname | ||||
ldap_attr_email | ||||
r705 | """ | |||
Thayne Harbaugh
|
r991 | # ldap_search_scope | ||
r704 | ||||
r = self.sa.query(RhodeCodeSettings)\ | ||||
.filter(RhodeCodeSettings.app_settings_name\ | ||||
.startswith('ldap_'))\ | ||||
.all() | ||||
fd = {} | ||||
for row in r: | ||||
v = row.app_settings_value | ||||
if v in ['0', '1']: | ||||
v = v == '1' | ||||
fd.update({row.app_settings_name:v}) | ||||
return fd | ||||