Changeset - 042d38683d42
[Not reviewed]
beta
0 7 0
Marcin Kuzminski - 15 years ago 2010-12-29 10:39:46
marcin@python-works.com
implemented #89 google analytics code
7 files changed with 64 insertions and 6 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/admin/settings.py
Show inline comments
 
@@ -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.forms import UserFo
 
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 @@ class SettingsController(BaseController)
 
            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 @@ class SettingsController(BaseController)
 
                    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'),
rhodecode/lib/base.py
Show inline comments
 
@@ -16,11 +16,12 @@ class BaseController(WSGIController):
 

	
 
    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()
rhodecode/lib/db_manage.py
Show inline comments
 
@@ -166,6 +166,9 @@ class DbManage(object):
 
                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 @@ class DbManage(object):
 
            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 @@ class DbManage(object):
 

	
 
        hgsettings1 = RhodeCodeSettings('realm', 'RhodeCode authentication')
 
        hgsettings2 = RhodeCodeSettings('title', 'RhodeCode')
 
        hgsettings3 = RhodeCodeSettings('ga_code', '')
 

	
 

	
 
        try:
 
@@ -370,6 +384,7 @@ class DbManage(object):
 
            self.sa.add(paths)
 
            self.sa.add(hgsettings1)
 
            self.sa.add(hgsettings2)
 
            self.sa.add(hgsettings3)
 

	
 
            self.sa.commit()
 
        except:
rhodecode/model/forms.py
Show inline comments
 
@@ -438,6 +438,7 @@ def ApplicationSettingsForm():
 
        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
 

	
rhodecode/model/settings.py
Show inline comments
 
@@ -46,6 +46,11 @@ class SettingsModel(BaseModel):
 
        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()
rhodecode/templates/admin/settings/settings.html
Show inline comments
 
@@ -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")}
rhodecode/templates/base/base.html
Show inline comments
 
@@ -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 -->
0 comments (0 inline, 0 general)