Mercurial > kallithea
changeset 890:042d38683d42 beta
implemented #89 google analytics code
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 29 Dec 2010 10:39:46 +0100 |
parents | 79f42866bcbb |
children | cca7286401b3 |
files | rhodecode/controllers/admin/settings.py rhodecode/lib/base.py rhodecode/lib/db_manage.py rhodecode/model/forms.py rhodecode/model/settings.py rhodecode/templates/admin/settings/settings.html rhodecode/templates/base/base.html |
diffstat | 7 files changed, 64 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/settings.py Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/controllers/admin/settings.py Wed Dec 29 10:39:46 2010 +0100 @@ -25,11 +25,17 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. +import logging +import traceback +import formencode + +from operator import itemgetter from formencode import htmlfill from pylons import request, session, tmpl_context as c, url, app_globals as g, \ config from pylons.controllers.util import abort, redirect from pylons.i18n.translation import _ + from rhodecode.lib import helpers as h from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ HasPermissionAnyDecorator, NotAnonymous @@ -43,10 +49,9 @@ from rhodecode.model.scm import ScmModel from rhodecode.model.settings import SettingsModel from rhodecode.model.user import UserModel + from sqlalchemy import func -import formencode -import logging -import traceback + log = logging.getLogger(__name__) @@ -123,6 +128,7 @@ try: form_result = application_form.to_python(dict(request.POST)) settings_model = SettingsModel() + try: hgsettings1 = settings_model.get('title') hgsettings1.app_settings_value = form_result['rhodecode_title'] @@ -130,9 +136,14 @@ hgsettings2 = settings_model.get('realm') hgsettings2.app_settings_value = form_result['rhodecode_realm'] + hgsettings3 = settings_model.get('ga_code') + hgsettings3.app_settings_value = form_result['ga_code'] + + self.sa.add(hgsettings1) self.sa.add(hgsettings2) + self.sa.add(hgsettings3) self.sa.commit() set_rhodecode_config(config) h.flash(_('Updated application settings'),
--- a/rhodecode/lib/base.py Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/lib/base.py Wed Dec 29 10:39:46 2010 +0100 @@ -16,11 +16,12 @@ def __before__(self): c.rhodecode_version = __version__ - c.rhodecode_name = config['rhodecode_title'] + c.rhodecode_name = config.get('rhodecode_title') + c.ga_code = config.get('rhodeocode_ga_code') c.repo_name = get_repo_slug(request) c.cached_repo_list = ScmModel().get_repos() c.backends = BACKENDS.keys() - self.cut_off_limit = int(config['cut_off_limit']) + self.cut_off_limit = int(config.get('cut_off_limit')) self.sa = meta.Session() scm_model = ScmModel(self.sa) #c.unread_journal = scm_model.get_unread_journal()
--- a/rhodecode/lib/db_manage.py Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/lib/db_manage.py Wed Dec 29 10:39:46 2010 +0100 @@ -166,6 +166,9 @@ log.info('Changing ui settings') self.klass.create_ui_settings() + def step_3(self): + print ('Adding additional settings into RhodeCode db') + self.klass.fix_settings() upgrade_steps = [0] + range(curr_version + 1, __dbversion__ + 1) @@ -212,7 +215,17 @@ self.sa.rollback() raise + def fix_settings(self): + """Fixes rhodecode settings adds ga_code key for google analytics + """ + hgsettings3 = RhodeCodeSettings('ga_code', '') + try: + self.sa.add(hgsettings3) + self.sa.commit() + except: + self.sa.rollback() + raise def admin_prompt(self, second=False): if not self.tests: @@ -360,6 +373,7 @@ hgsettings1 = RhodeCodeSettings('realm', 'RhodeCode authentication') hgsettings2 = RhodeCodeSettings('title', 'RhodeCode') + hgsettings3 = RhodeCodeSettings('ga_code', '') try: @@ -370,6 +384,7 @@ self.sa.add(paths) self.sa.add(hgsettings1) self.sa.add(hgsettings2) + self.sa.add(hgsettings3) self.sa.commit() except:
--- a/rhodecode/model/forms.py Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/model/forms.py Wed Dec 29 10:39:46 2010 +0100 @@ -438,6 +438,7 @@ filter_extra_fields = False rhodecode_title = UnicodeString(strip=True, min=1, not_empty=True) rhodecode_realm = UnicodeString(strip=True, min=1, not_empty=True) + ga_code = UnicodeString(strip=True, min=1, not_empty=False) return _ApplicationSettingsForm
--- a/rhodecode/model/settings.py Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/model/settings.py Wed Dec 29 10:39:46 2010 +0100 @@ -46,6 +46,11 @@ return r def get_app_settings(self): + """Get's config from database, each config key is prefixed with + 'rhodecode_' prefix, than global pylons config is updated with such + keys + """ + ret = self.sa.query(RhodeCodeSettings)\ .options(FromCache("sql_cache_short", "get_hg_settings")).all()
--- a/rhodecode/templates/admin/settings/settings.html Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/templates/admin/settings/settings.html Wed Dec 29 10:39:46 2010 +0100 @@ -97,7 +97,16 @@ ${h.text('rhodecode_realm',size=30)} </div> </div> - + + <div class="field"> + <div class="label"> + <label for="ga_code">${_('Google analytics code')}:</label> + </div> + <div class="input"> + ${h.text('ga_code',size=30)} + </div> + </div> + <div class="buttons"> ${h.submit('save','Save settings',class_="ui-button")} ${h.reset('reset','Reset',class_="ui-button")}
--- a/rhodecode/templates/base/base.html Wed Dec 29 01:51:29 2010 +0100 +++ b/rhodecode/templates/base/base.html Wed Dec 29 10:39:46 2010 +0100 @@ -10,6 +10,22 @@ ${self.css()} <!-- scripts --> ${self.js()} +%if c.ga_code: +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', '${c.ga_code}']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + + +</script> +%endif </head> <body> <!-- header -->