Mercurial > kallithea
changeset 7781:574218777086
ssh: show ssh URL on summary page
Original change has been heavily modified by Mads Kiilerich.
author | domruf <dominikruf@gmail.com> |
---|---|
date | Wed, 27 Sep 2017 22:45:28 +0200 |
parents | 955bbbc29655 |
children | d850a58e6d5f |
files | kallithea/controllers/admin/settings.py kallithea/controllers/summary.py kallithea/lib/base.py kallithea/lib/db_manage.py kallithea/model/db.py kallithea/model/forms.py kallithea/templates/admin/settings/settings_visual.html kallithea/templates/summary/summary.html kallithea/tests/functional/test_summary.py |
diffstat | 9 files changed, 72 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/admin/settings.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/controllers/admin/settings.py Wed Sep 27 22:45:28 2017 +0200 @@ -271,6 +271,7 @@ ('use_gravatar', 'use_gravatar', 'bool'), ('gravatar_url', 'gravatar_url', 'unicode'), ('clone_uri_tmpl', 'clone_uri_tmpl', 'unicode'), + ('clone_ssh_tmpl', 'clone_ssh_tmpl', 'unicode'), ] for setting, form_key, type_ in settings: Setting.create_or_update(setting, form_result[form_key], type_)
--- a/kallithea/controllers/summary.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/controllers/summary.py Wed Sep 27 22:45:28 2017 +0200 @@ -119,6 +119,7 @@ username = request.authuser.username c.clone_repo_url = c.db_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl, with_id=False, username=username) c.clone_repo_url_id = c.db_repo.clone_url(clone_uri_tmpl=c.clone_uri_tmpl, with_id=True, username=username) + c.ssh_repo_url = c.db_repo.clone_url(clone_uri_tmpl=c.clone_ssh_tmpl) if c.db_repo.enable_statistics: c.show_stats = True
--- a/kallithea/lib/base.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/lib/base.py Wed Sep 27 22:45:28 2017 +0200 @@ -404,6 +404,7 @@ </script>''' % c.ga_code c.site_name = rc_config.get('title') c.clone_uri_tmpl = rc_config.get('clone_uri_tmpl') or Repository.DEFAULT_CLONE_URI + c.clone_ssh_tmpl = rc_config.get('clone_ssh_tmpl') or Repository.DEFAULT_CLONE_SSH ## INI stored c.visual.allow_repo_location_change = str2bool(config.get('allow_repo_location_change', True))
--- a/kallithea/lib/db_manage.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/lib/db_manage.py Wed Sep 27 22:45:28 2017 +0200 @@ -375,6 +375,7 @@ ('use_gravatar', True, 'bool'), ('gravatar_url', User.DEFAULT_GRAVATAR_URL, 'unicode'), ('clone_uri_tmpl', Repository.DEFAULT_CLONE_URI, 'unicode'), + ('clone_ssh_tmpl', Repository.DEFAULT_CLONE_SSH, 'unicode'), ('update_url', Setting.DEFAULT_UPDATE_URL, 'unicode'), ] for key, val, type_ in settings:
--- a/kallithea/model/db.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/model/db.py Wed Sep 27 22:45:28 2017 +0200 @@ -964,6 +964,7 @@ ) DEFAULT_CLONE_URI = '{scheme}://{user}@{netloc}/{repo}' + DEFAULT_CLONE_SSH = 'ssh://{system_user}@{hostname}/{repo}' STATE_CREATED = u'repo_state_created' STATE_PENDING = u'repo_state_pending'
--- a/kallithea/model/forms.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/model/forms.py Wed Sep 27 22:45:28 2017 +0200 @@ -371,6 +371,7 @@ use_gravatar = v.StringBoolean(if_missing=False) gravatar_url = v.UnicodeString(min=3) clone_uri_tmpl = v.UnicodeString(min=3) + clone_ssh_tmpl = v.UnicodeString() return _ApplicationVisualisationForm
--- a/kallithea/templates/admin/settings/settings_visual.html Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/templates/admin/settings/settings_visual.html Wed Sep 27 22:45:28 2017 +0200 @@ -37,7 +37,7 @@ </div> <div class="form-group"> - <label class="control-label">${_('Clone URL')}:</label> + <label class="control-label">${_('HTTP Clone URL')}:</label> <div> ${h.text('clone_uri_tmpl', size=80, class_='form-control')} <span class="help-block">${_('''Schema of clone URL construction eg. '{scheme}://{user}@{netloc}/{repo}'. @@ -52,6 +52,13 @@ ''')} </span> </div> + %if c.ssh_enabled: + <label class="control-label">${_('SSH Clone URL')}:</label> + <div> + ${h.text('clone_ssh_tmpl', size=80, class_='form-control')} + <span class="help-block">${_('''Schema for constructing SSH clone URL, eg. 'ssh://{system_user}@{hostname}/{repo}'.''')}</span> + </div> + %endif </div> <div class="form-group">
--- a/kallithea/templates/summary/summary.html Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/templates/summary/summary.html Wed Sep 27 22:45:28 2017 +0200 @@ -53,16 +53,33 @@ <div class="form-group form-inline"> <label>${_('Clone URL')}:</label> <div id="clone-url"> - <div id="clone_by_name" class="input-group"> + <div id="clone_by_name" class="input-group" + %if c.ssh_enabled: + style="display:none" + %endif + > <span class="input-group-addon">${self.repolabel(c.db_repo)}</span> <input class="form-control" size="80" readonly="readonly" value="${c.clone_repo_url}"/> - <span class="input-group-addon btn">${_('Show by ID')}</span> + <span class="input-group-addon btn use-id">${_('Use ID')}</span> + %if c.ssh_enabled: + <span class="input-group-addon btn use-ssh">${_('Use SSH')}</span> + %endif </div> <div id="clone_by_id" class="input-group" style="display:none"> <span class="input-group-addon">${self.repolabel(c.db_repo)}</span> <input class="form-control" size="80" readonly="readonly" value="${c.clone_repo_url_id}"/> - <span class="input-group-addon btn">${_('Show by Name')}</span> + <span class="input-group-addon btn use-name">${_('Use Name')}</span> + %if c.ssh_enabled: + <span class="input-group-addon btn use-ssh">${_('Use SSH')}</span> + %endif </div> + %if c.ssh_enabled: + <div id="clone_ssh" class="input-group"> + <span class="input-group-addon">${self.repolabel(c.db_repo)}</span> + <input id="ssh_url" class="form-control" size="80" readonly="readonly" value="${c.ssh_repo_url}"/> + <span class="input-group-addon btn use-name">${_('Use HTTP')}</span> + </div> + %endif </div> </div> @@ -233,15 +250,24 @@ } }); + var $clone_url = $('#clone-url'); var $clone_by_name = $('#clone_by_name'); var $clone_by_id = $('#clone_by_id'); - $clone_by_name.find('.btn').click(function(e){ - $clone_by_name.hide(); - $clone_by_id.show(); + var $clone_ssh = $('#clone_ssh'); + $clone_url.on('click', '.btn.use-name', function(e){ + $clone_by_name.show(); + $clone_by_id.hide(); + $clone_ssh.hide(); }); - $clone_by_id.find('.btn').click(function(e){ + $clone_url.on('click', '.btn.use-id', function(e){ + $clone_by_id.show(); + $clone_by_name.hide(); + $clone_ssh.hide(); + }); + $clone_url.on('click', '.btn.use-ssh', function(e){ $clone_by_id.hide(); - $clone_by_name.show(); + $clone_by_name.hide(); + $clone_ssh.show(); }); var cache = {}
--- a/kallithea/tests/functional/test_summary.py Mon Nov 17 14:42:45 2014 -0500 +++ b/kallithea/tests/functional/test_summary.py Wed Sep 27 22:45:28 2017 +0200 @@ -19,12 +19,21 @@ from kallithea.model.meta import Session from kallithea.model.scm import ScmModel +import pytest + fixture = Fixture() +@pytest.fixture +def custom_settings(set_test_settings): + # overwrite DEFAULT_CLONE_SSH = 'ssh://{system_user}@{hostname}/{repo}' + set_test_settings( + ('clone_ssh_tmpl', 'ssh://ssh_user@ssh_hostname/{repo}', 'unicode'), + ) + class TestSummaryController(TestController): - def test_index_hg(self): + def test_index_hg(self, custom_settings): self.log_user() ID = Repository.get_by_repo_name(HG_REPO).repo_id response = self.app.get(url(controller='summary', @@ -39,8 +48,7 @@ response.mustcontain( """<i class="icon-globe">""" ) - - # clone url... + # clone URLs response.mustcontain( '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/%s"/>''' % (TEST_USER_ADMIN_LOGIN, HG_REPO) @@ -49,8 +57,13 @@ '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/_%s"/>''' % (TEST_USER_ADMIN_LOGIN, ID) ) + response.mustcontain( + '''<input id="ssh_url" class="form-control" size="80" readonly="readonly" value="ssh://ssh_user@ssh_hostname/%s"/>''' % + (HG_REPO) + ) - def test_index_git(self): + + def test_index_git(self, custom_settings): self.log_user() ID = Repository.get_by_repo_name(GIT_REPO).repo_id response = self.app.get(url(controller='summary', @@ -65,15 +78,19 @@ response.mustcontain( """<i class="icon-globe">""" ) - - # clone url... + # clone URLs response.mustcontain( '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/%s"/>''' % - (TEST_USER_ADMIN_LOGIN, GIT_REPO)) + (TEST_USER_ADMIN_LOGIN, GIT_REPO) + ) response.mustcontain( '''<input class="form-control" size="80" readonly="readonly" value="http://%s@localhost:80/_%s"/>''' % (TEST_USER_ADMIN_LOGIN, ID) ) + response.mustcontain( + '''<input id="ssh_url" class="form-control" size="80" readonly="readonly" value="ssh://ssh_user@ssh_hostname/%s"/>''' % + (GIT_REPO) + ) def test_index_by_id_hg(self): self.log_user()