Changeset - 9bce679a3f49
[Not reviewed]
beta
0 7 0
Marcin Kuzminski - 13 years ago 2012-08-08 23:30:55
marcin@python-works.com
Added form for controlling mercurial extensions
added hggit also for future
7 files changed with 80 insertions and 45 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/admin/settings.py
Show inline comments
 
@@ -79,7 +79,7 @@ class SettingsController(BaseController)
 
        # url('admin_settings')
 

	
 
        defaults = RhodeCodeSetting.get_app_settings()
 
        defaults.update(self.get_hg_ui_settings())
 
        defaults.update(self._get_hg_ui_settings())
 

	
 
        return htmlfill.render(
 
            render('admin/settings/settings.html'),
 
@@ -123,7 +123,7 @@ class SettingsController(BaseController)
 
                      category='success')
 

	
 
        if setting_id == 'whoosh':
 
            repo_location = self.get_hg_ui_settings()['paths_root_path']
 
            repo_location = self._get_hg_ui_settings()['paths_root_path']
 
            full_index = request.POST.get('full_index', False)
 
            run_task(tasks.whoosh_index, repo_location, full_index)
 
            h.flash(_('Whoosh reindex task scheduled'), category='success')
 
@@ -220,51 +220,55 @@ class SettingsController(BaseController)
 
                )
 

	
 
            try:
 
                # fix namespaces for hooks
 
                # fix namespaces for hooks and extensions
 
                _f = lambda s: s.replace('.', '_')
 

	
 
                sett1 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == 'push_ssl').one()
 
                sett1.ui_value = form_result['web_push_ssl']
 
                sett = RhodeCodeUi.get_by_key('push_ssl')
 
                sett.ui_value = form_result['web_push_ssl']
 
                Session().add(sett)
 

	
 
                sett2 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == '/').one()
 
                sett2.ui_value = form_result['paths_root_path']
 
                sett = RhodeCodeUi.get_by_key('/')
 
                sett.ui_value = form_result['paths_root_path']
 
                Session().add(sett)
 

	
 
                #HOOKS
 
                sett3 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_UPDATE)\
 
                        .one()
 
                sett3.ui_active = bool(form_result[_f('hooks_%s' %
 
                                        RhodeCodeUi.HOOK_UPDATE)])
 
                sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_UPDATE)
 
                sett.ui_active = form_result[_f('hooks_%s' %
 
                                                RhodeCodeUi.HOOK_UPDATE)]
 
                Session().add(sett)
 

	
 
                sett4 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_REPO_SIZE)\
 
                        .one()
 
                sett4.ui_active = bool(form_result[_f('hooks_%s' %
 
                                             RhodeCodeUi.HOOK_REPO_SIZE)])
 
                sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_REPO_SIZE)
 
                sett.ui_active = form_result[_f('hooks_%s' %
 
                                                RhodeCodeUi.HOOK_REPO_SIZE)]
 
                Session().add(sett)
 

	
 
                sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PUSH)
 
                sett.ui_active = form_result[_f('hooks_%s' %
 
                                                RhodeCodeUi.HOOK_PUSH)]
 
                Session().add(sett)
 

	
 
                sett5 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PUSH)\
 
                        .one()
 
                sett5.ui_active = bool(form_result[_f('hooks_%s' %
 
                                             RhodeCodeUi.HOOK_PUSH)])
 
                sett = RhodeCodeUi.get_by_key(RhodeCodeUi.HOOK_PULL)
 
                sett.ui_active = form_result[_f('hooks_%s' %
 
                                                 RhodeCodeUi.HOOK_PULL)]
 

	
 
                Session().add(sett)
 

	
 
                sett6 = RhodeCodeUi.query()\
 
                        .filter(RhodeCodeUi.ui_key == RhodeCodeUi.HOOK_PULL)\
 
                        .one()
 
                sett6.ui_active = bool(form_result[_f('hooks_%s' %
 
                                             RhodeCodeUi.HOOK_PULL)])
 
                ## EXTENSIONS
 
                sett = RhodeCodeUi.get_by_key('largefiles')
 
                sett.ui_active = form_result[_f('extensions_largefiles')]
 
                Session().add(sett)
 

	
 
                Session().add(sett1)
 
                Session().add(sett2)
 
                Session().add(sett3)
 
                Session().add(sett4)
 
                Session().add(sett5)
 
                Session().add(sett6)
 
                sett = RhodeCodeUi.get_by_key('hgsubversion')
 
                sett.ui_active = form_result[_f('extensions_hgsubversion')]
 
                Session().add(sett)
 

	
 
#                sett = RhodeCodeUi.get_by_key('hggit')
 
#                sett.ui_active = form_result[_f('extensions_hggit')]
 
#                Session().add(sett)
 

	
 
                Session().commit()
 

	
 
                h.flash(_('Updated mercurial settings'), category='success')
 
                h.flash(_('Updated VCS settings'), category='success')
 

	
 
            except Exception:
 
                log.error(traceback.format_exc())
 
@@ -455,8 +459,7 @@ class SettingsController(BaseController)
 

	
 
        return render('admin/repos/repo_add_create_repository.html')
 

	
 
    @NotAnonymous()
 
    def get_hg_ui_settings(self):
 
    def _get_hg_ui_settings(self):
 
        ret = RhodeCodeUi.query().all()
 

	
 
        if not ret:
 
@@ -471,7 +474,7 @@ class SettingsController(BaseController)
 
            if k.find('.') != -1:
 
                k = k.replace('.', '_')
 

	
 
            if each.ui_section == 'hooks':
 
            if each.ui_section in ['hooks', 'extensions']:
 
                v = each.ui_active
 

	
 
            settings[each.ui_section + '_' + k] = v
rhodecode/lib/base.py
Show inline comments
 
@@ -152,8 +152,7 @@ class BaseVCSController(object):
 
        """
 
        org_proto = environ['wsgi._org_proto']
 
        #check if we have SSL required  ! if not it's a bad request !
 
        require_ssl = str2bool(RhodeCodeUi.get_by_key('push_ssl')\
 
                               .scalar().ui_value)
 
        require_ssl = str2bool(RhodeCodeUi.get_by_key('push_ssl').ui_value)
 
        if require_ssl and org_proto == 'http':
 
            log.debug('proto is %s and SSL is required BAD REQUEST !'
 
                      % org_proto)
rhodecode/lib/db_manage.py
Show inline comments
 
@@ -346,12 +346,20 @@ class DbManage(object):
 
        hgsubversion.ui_value = ''
 
        hgsubversion.ui_active = False
 

	
 
        # enable hggit disabled by default
 
        hggit = RhodeCodeUi()
 
        hggit.ui_section = 'extensions'
 
        hggit.ui_key = 'hggit'
 
        hggit.ui_value = ''
 
        hggit.ui_active = False
 

	
 
        self.sa.add(hooks1)
 
        self.sa.add(hooks2)
 
        self.sa.add(hooks3)
 
        self.sa.add(hooks4)
 
        self.sa.add(largefiles)
 
        self.sa.add(hgsubversion)
 
        self.sa.add(hggit)
 

	
 
    def create_ldap_options(self, skip_existing=False):
 
        """Creates ldap settings"""
rhodecode/model/db.py
Show inline comments
 
@@ -242,7 +242,7 @@ class RhodeCodeUi(Base, BaseModel):
 

	
 
    @classmethod
 
    def get_by_key(cls, key):
 
        return cls.query().filter(cls.ui_key == key)
 
        return cls.query().filter(cls.ui_key == key).scalar()
 

	
 
    @classmethod
 
    def get_builtin_hooks(cls):
 
@@ -263,11 +263,11 @@ class RhodeCodeUi(Base, BaseModel):
 

	
 
    @classmethod
 
    def get_repos_location(cls):
 
        return cls.get_by_key('/').one().ui_value
 
        return cls.get_by_key('/').ui_value
 

	
 
    @classmethod
 
    def create_or_update_hook(cls, key, val):
 
        new_ui = cls.get_by_key(key).scalar() or cls()
 
        new_ui = cls.get_by_key(key) or cls()
 
        new_ui.ui_section = 'hooks'
 
        new_ui.ui_active = True
 
        new_ui.ui_key = key
rhodecode/model/forms.py
Show inline comments
 
@@ -267,6 +267,10 @@ def ApplicationUiSettingsForm():
 
        hooks_changegroup_push_logger = v.StringBoolean(if_missing=False)
 
        hooks_preoutgoing_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
 

	
 

	
rhodecode/model/repos_group.py
Show inline comments
 
@@ -55,7 +55,7 @@ class ReposGroupModel(BaseModel):
 
        Get's the repositories root path from database
 
        """
 

	
 
        q = RhodeCodeUi.get_by_key('/').one()
 
        q = RhodeCodeUi.get_by_key('/')
 
        return q.ui_value
 

	
 
    def _create_default_perms(self, new_group):
rhodecode/templates/admin/settings/settings.html
Show inline comments
 
@@ -219,6 +219,27 @@
 
                    ${h.link_to(_('advanced setup'),url('admin_edit_setting',setting_id='hooks'),class_="ui-btn")}
 
                </div>
 
             </div>
 
             <div class="field">
 
                <div class="label label-checkbox">
 
                    <label>${_('Mercurial Extensions')}:</label>
 
                </div>
 
                <div class="checkboxes">
 
                    <div class="checkbox">
 
                        ${h.checkbox('extensions_largefiles','True')}
 
                        <label for="extensions_hgsubversion">${_('largefiles extensions')}</label>
 
                    </div>
 
                    <div class="checkbox">
 
                        ${h.checkbox('extensions_hgsubversion','True')}
 
                        <label for="extensions_hgsubversion">${_('hgsubversion extensions')}</label>
 
                    </div>
 
                    <span class="help-block">${_('Requires hgsubversion library installed. Allows clonning from svn remote locations')}</span>
 
                    ##<div class="checkbox">
 
                    ##    ${h.checkbox('extensions_hggit','True')}
 
                    ##    <label for="extensions_hggit">${_('hg-git extensions')}</label>
 
                    ##</div>
 
                    ##<span class="help-block">${_('Requires hg-git library installed. Allows clonning from git remote locations')}</span>                    
 
                </div>
 
             </div>             
 
            <div class="field">
 
                <div class="label">
 
                    <label for="paths_root_path">${_('Repositories location')}:</label>
0 comments (0 inline, 0 general)