diff --git a/pylons_app/config/routing.py b/pylons_app/config/routing.py --- a/pylons_app/config/routing.py +++ b/pylons_app/config/routing.py @@ -108,7 +108,8 @@ def make_map(config): m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}', action='add_repo') #SEARCH - map.connect('search', '/_admin/search', controller='search') + map.connect('search', '/_admin/search', controller='search',) + map.connect('search_repo', '/_admin/search/{search_repo:.*}', controller='search') #LOGIN/LOGOUT/REGISTER/SIGN IN map.connect('login_home', '/_admin/login', controller='login') @@ -159,7 +160,10 @@ def make_map(config): conditions=dict(function=check_repo)) map.connect('files_archive_home', '/{repo_name:.*}/archive/{revision}/{fileformat}', controller='files', action='archivefile', revision='tip', - conditions=dict(function=check_repo)) + conditions=dict(function=check_repo)) + map.connect('repo_settings_delete', '/{repo_name:.*}/settings', + controller='settings', action="delete", + conditions=dict(method=["DELETE"], function=check_repo)) map.connect('repo_settings_update', '/{repo_name:.*}/settings', controller='settings', action="update", conditions=dict(method=["PUT"], function=check_repo)) @@ -167,5 +171,7 @@ def make_map(config): controller='settings', action='index', conditions=dict(function=check_repo)) - + map.connect('repo_fork_home', '/{repo_name:.*}/fork', + controller='settings', action='fork', + conditions=dict(function=check_repo)) return map diff --git a/pylons_app/controllers/search.py b/pylons_app/controllers/search.py --- a/pylons_app/controllers/search.py +++ b/pylons_app/controllers/search.py @@ -44,7 +44,8 @@ class SearchController(BaseController): def __before__(self): super(SearchController, self).__before__() - def index(self): + def index(self, search_repo=None): + c.repo_name = search_repo c.formated_results = [] c.runtime = '' c.cur_query = request.GET.get('q', None) @@ -59,6 +60,8 @@ class SearchController(BaseController): searcher = idx.searcher() qp = QueryParser("content", schema=SCHEMA) + if c.repo_name: + cur_query = u'repository:%s %s' % (c.repo_name, cur_query) try: query = qp.parse(unicode(cur_query)) diff --git a/pylons_app/controllers/settings.py b/pylons_app/controllers/settings.py --- a/pylons_app/controllers/settings.py +++ b/pylons_app/controllers/settings.py @@ -55,7 +55,7 @@ class SettingsController(BaseController) ' in order to rescan repositories') % repo_name, category='error') - return redirect(url('repos')) + return redirect(url('hg_home')) defaults = c.repo_info.__dict__ defaults.update({'user':c.repo_info.user.username}) c.users_array = repo_model.get_users_js() @@ -98,3 +98,47 @@ class SettingsController(BaseController) % repo_name, category='error') return redirect(url('repo_settings_home', repo_name=changed_name)) + + + + def delete(self, repo_name): + """DELETE /repos/repo_name: Delete an existing item""" + # Forms posted to this method should contain a hidden field: + # + # Or using helpers: + # h.form(url('repo_settings_delete', repo_name=ID), + # method='delete') + # url('repo_settings_delete', repo_name=ID) + + repo_model = RepoModel() + repo = repo_model.get(repo_name) + if not repo: + h.flash(_('%s repository is not mapped to db perhaps' + ' it was moved or renamed from the filesystem' + ' please run the application again' + ' in order to rescan repositories') % repo_name, + category='error') + + return redirect(url('hg_home')) + try: + repo_model.delete(repo) + invalidate_cache('cached_repo_list') + h.flash(_('deleted repository %s') % repo_name, category='success') + except Exception: + h.flash(_('An error occured during deletion of %s') % repo_name, + category='error') + + return redirect(url('hg_home')) + + def fork(self, repo_name): + repo_model = RepoModel() + c.repo_info = repo = repo_model.get(repo_name) + if not repo: + h.flash(_('%s repository is not mapped to db perhaps' + ' it was created or renamed from the filesystem' + ' please run the application again' + ' in order to rescan repositories') % repo_name, + category='error') + + return redirect(url('hg_home')) + return render('settings/repo_fork.html') diff --git a/pylons_app/templates/admin/users/user_edit_my_account.html b/pylons_app/templates/admin/users/user_edit_my_account.html --- a/pylons_app/templates/admin/users/user_edit_my_account.html +++ b/pylons_app/templates/admin/users/user_edit_my_account.html @@ -88,21 +88,33 @@
|
- %if repo.dbrepo.private:
- |
- ${_('revision')}: ${h.get_changeset_safe(repo,'tip').revision} | -${_('last changed')}: ${h.age(repo.last_change)} | -||
|
+ %if repo.dbrepo.private:
+ |
+ ${_('revision')}: ${h.get_changeset_safe(repo,'tip').revision} | +${_('last changed')}: ${h.age(repo.last_change)} | ++ ${h.form(url('repo_settings_delete', repo_name=repo.name),method='delete')} + ${h.submit('remove_%s' % repo.name,'delete',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")} + ${h.end_form()} + | +