Mercurial > kallithea
diff pylons_app/controllers/repos.py @ 299:d303aacb3349
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes.
Added permission fetching for each request in AuthUser instance
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 28 Jun 2010 13:54:47 +0200 |
parents | 15e96b5a2685 |
children | fdf9f6ee5217 |
line wrap: on
line diff
--- a/pylons_app/controllers/repos.py Sat Jun 26 18:42:13 2010 +0200 +++ b/pylons_app/controllers/repos.py Mon Jun 28 13:54:47 2010 +0200 @@ -34,12 +34,9 @@ from pylons_app.model.hg_model import HgModel from pylons_app.model.forms import RepoForm from pylons_app.model.meta import Session -from datetime import datetime import formencode from formencode import htmlfill import logging -import os -import shutil log = logging.getLogger(__name__) class ReposController(BaseController): @@ -93,24 +90,24 @@ return render('admin/repos/repo_add.html') - def update(self, id): - """PUT /repos/id: Update an existing item""" + def update(self, repo_name): + """PUT /repos/repo_name: Update an existing item""" # Forms posted to this method should contain a hidden field: # <input type="hidden" name="_method" value="PUT" /> # Or using helpers: - # h.form(url('repo', id=ID), + # h.form(url('repo', repo_name=ID), # method='put') - # url('repo', id=ID) + # url('repo', repo_name=ID) repo_model = RepoModel() _form = RepoForm(edit=True)() try: form_result = _form.to_python(dict(request.POST)) - repo_model.update(id, form_result) + repo_model.update(repo_name, form_result) invalidate_cache('cached_repo_list') - h.flash(_('Repository %s updated succesfully' % id), category='success') + h.flash(_('Repository %s updated succesfully' % repo_name), category='success') except formencode.Invalid as errors: - c.repo_info = repo_model.get(id) + c.repo_info = repo_model.get(repo_name) c.users_array = repo_model.get_users_js() errors.value.update({'user':c.repo_info.user.username}) c.form_errors = errors.error_dict @@ -123,59 +120,72 @@ % form_result['repo_name'], category='error') return redirect(url('repos')) - def delete(self, id): - """DELETE /repos/id: Delete an existing item""" + def delete(self, repo_name): + """DELETE /repos/repo_name: Delete an existing item""" # Forms posted to this method should contain a hidden field: # <input type="hidden" name="_method" value="DELETE" /> # Or using helpers: - # h.form(url('repo', id=ID), + # h.form(url('repo', repo_name=ID), # method='delete') - # url('repo', id=ID) + # url('repo', repo_name=ID) repo_model = RepoModel() - repo = repo_model.get(id) + 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') % id, category='error') + ' in order to rescan repositories') % repo_name, category='error') return redirect(url('repos')) try: repo_model.delete(repo) invalidate_cache('cached_repo_list') - h.flash(_('deleted repository %s') % id, category='success') + h.flash(_('deleted repository %s') % repo_name, category='success') except Exception: - h.flash(_('An error occured during deletion of %s') % id, + h.flash(_('An error occured during deletion of %s') % repo_name, category='error') return redirect(url('repos')) - def show(self, id, format='html'): - """GET /repos/id: Show a specific item""" - # url('repo', id=ID) + def delete_perm_user(self, repo_name): + """ + DELETE an existing repository permission user + @param repo_name: + """ - def edit(self, id, format='html'): - """GET /repos/id/edit: Form to edit an existing item""" - # url('edit_repo', id=ID) + try: + repo_model = RepoModel() + repo_model.delete_perm_user(request.POST, repo_name) + except Exception as e: + h.flash(_('An error occured during deletion of repository user'), + category='error') + + + def show(self, repo_name, format='html'): + """GET /repos/repo_name: Show a specific item""" + # url('repo', repo_name=ID) + + def edit(self, repo_name, format='html'): + """GET /repos/repo_name/edit: Form to edit an existing item""" + # url('edit_repo', repo_name=ID) repo_model = RepoModel() - c.repo_info = repo = repo_model.get(id) + 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') % id, category='error') + ' in order to rescan repositories') % repo_name, category='error') return redirect(url('repos')) defaults = c.repo_info.__dict__ defaults.update({'user':c.repo_info.user.username}) - c.users_array = repo_model.get_users_js() for p in c.repo_info.repo2perm: defaults.update({'perm_%s' % p.user.username: p.permission.permission_name}) - + return htmlfill.render( render('admin/repos/repo_edit.html'), defaults=defaults,