#!/usr/bin/env python# encoding: utf-8# Model for RhodeCode settings# Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com># # 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, 2010Model for RhodeCode:author: marcink"""fromrhodecode.libimporthelpersashfromrhodecode.modelimportBaseModelfromrhodecode.model.caching_queryimportFromCachefromrhodecode.model.dbimportRhodeCodeSettingsfromsqlalchemy.ormimportjoinedloadimportlogginglog=logging.getLogger(__name__)classSettingsModel(BaseModel):""" Settings model """defget(self,settings_key,cache=False):r=self.sa.query(RhodeCodeSettings)\
.filter(RhodeCodeSettings.app_settings_name==settings_key).scalar()ifcache:r=r.options(FromCache("sql_cache_short","get_setting_%s"%settings_key))returnrdefget_app_settings(self):ret=self.sa.query(RhodeCodeSettings)\
.options(FromCache("sql_cache_short","get_hg_settings")).all()ifnotret:raiseException('Could not get application settings !')settings={}foreachinret:settings['rhodecode_'+each.app_settings_name]=each.app_settings_valuereturnsettingsdefget_ldap_settings(self):""" Returns ldap settings from database :returns: ldap_active ldap_host ldap_port ldap_ldaps ldap_dn_user ldap_dn_pass ldap_base_dn """r=self.sa.query(RhodeCodeSettings)\
.filter(RhodeCodeSettings.app_settings_name\
.startswith('ldap_'))\
.all()fd={}forrowinr:v=row.app_settings_valueifvin['0','1']:v=v=='1'fd.update({row.app_settings_name:v})returnfd