##// END OF EJS Templates
made graphg ticker, and fixes a paging bug caused grapgh disaligment
made graphg ticker, and fixes a paging bug caused grapgh disaligment

File last commit:

r318:fdf9f6ee default
r322:46b7d108 default
Show More
repos.py
197 lines | 7.9 KiB | text/x-python | PythonLexer
licensing updates, code cleanups
r252 #!/usr/bin/env python
# encoding: utf-8
# repos controller for pylons
# Copyright (C) 2009-2010 Marcin Kuzminski <marcin@python-works.com>
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2
# of the License or (at your opinion) any later version of the license.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
"""
Created on April 7, 2010
admin controller for pylons
@author: marcink
"""
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 from formencode import htmlfill
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 from operator import itemgetter
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 from pylons import request, response, session, tmpl_context as c, url
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 from pylons.controllers.util import abort, redirect
Added support for repository located in subdirectories.
r248 from pylons.i18n.translation import _
from pylons_app.lib import helpers as h
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 from pylons_app.lib.auth import LoginRequired, HasPermissionAllDecorator
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 from pylons_app.lib.base import BaseController, render
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 from pylons_app.lib.utils import invalidate_cache
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 from pylons_app.model.forms import RepoForm
Fixed bug in repos, added dependencies and bumped version
r246 from pylons_app.model.hg_model import HgModel
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 from pylons_app.model.repo_model import RepoModel
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 import formencode
import logging
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 log = logging.getLogger(__name__)
class ReposController(BaseController):
"""REST Controller styled on the Atom Publishing Protocol"""
# To properly map this controller, ensure your config/routing.py
# file has a resource setup:
# map.resource('repo', 'repos')
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318
Fixed access to repos and users.
r235 @LoginRequired()
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 @HasPermissionAllDecorator('hg.admin')
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 def __before__(self):
c.admin_user = session.get('admin_user')
c.admin_username = session.get('admin_username')
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user....
r191 super(ReposController, self).__before__()
Marcin Kuzminski
Added sqlalchemy support...
r49
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 def index(self, format='html'):
"""GET /repos: All items in the collection"""
# url('repos')
Fixed bug in repos, added dependencies and bumped version
r246 cached_repo_list = HgModel().get_repos()
proper sorting fix
r247 c.repos_list = sorted(cached_repo_list, key=itemgetter('name_sort'))
Html changes and cleanups, made folders for html templates, implemented tags and branches pages
r127 return render('admin/repos/repos.html')
Marcin Kuzminski
Added rest controllers for repos and users,...
r47
def create(self):
"""POST /repos: Create a new item"""
# url('repos')
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 repo_model = RepoModel()
_form = RepoForm()()
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 try:
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 form_result = _form.to_python(dict(request.POST))
repo_model.create(form_result, c.hg_app_user)
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 invalidate_cache('cached_repo_list')
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 h.flash(_('created repository %s') % form_result['repo_name'],
category='success')
except formencode.Invalid as errors:
c.form_errors = errors.error_dict
c.new_repo = errors.value['repo_name']
return htmlfill.render(
render('admin/repos/repo_add.html'),
defaults=errors.value,
encoding="UTF-8")
except Exception:
h.flash(_('error occured during creation of repository %s') \
% form_result['repo_name'], category='error')
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 return redirect('repos')
Marcin Kuzminski
Added rest controllers for repos and users,...
r47
def new(self, format='html'):
"""GET /repos/new: Form to create a new item"""
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215 new_repo = request.GET.get('repo', '')
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 c.new_repo = h.repo_name_slug(new_repo)
Moved repo creation to admin/repos, as part of crud controller. Now repo creation is based on a form, which can be auto filled with data from 404 page. Fixed the error controller to properly give the repo name.
r215
return render('admin/repos/repo_add.html')
Marcin Kuzminski
Added rest controllers for repos and users,...
r47
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 def update(self, repo_name):
"""PUT /repos/repo_name: Update an existing item"""
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 # Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="PUT" />
# Or using helpers:
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 # h.form(url('repo', repo_name=ID),
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 # method='put')
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 # url('repo', repo_name=ID)
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 repo_model = RepoModel()
_form = RepoForm(edit=True)()
try:
form_result = _form.to_python(dict(request.POST))
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 repo_model.update(repo_name, form_result)
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 invalidate_cache('cached_repo_list')
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 h.flash(_('Repository %s updated succesfully' % repo_name),
category='success')
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265
except formencode.Invalid as errors:
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 c.repo_info = repo_model.get(repo_name)
autocomplete for repository managment of users
r298 c.users_array = repo_model.get_users_js()
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
r296 errors.value.update({'user':c.repo_info.user.username})
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 c.form_errors = errors.error_dict
return htmlfill.render(
render('admin/repos/repo_edit.html'),
defaults=errors.value,
encoding="UTF-8")
except Exception:
h.flash(_('error occured during update of repository %s') \
% form_result['repo_name'], category='error')
return redirect(url('repos'))
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 def delete(self, repo_name):
"""DELETE /repos/repo_name: Delete an existing item"""
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 # Forms posted to this method should contain a hidden field:
# <input type="hidden" name="_method" value="DELETE" />
# Or using helpers:
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 # h.form(url('repo', repo_name=ID),
Marcin Kuzminski
Added rest controllers for repos and users,...
r47 # method='delete')
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 # url('repo', repo_name=ID)
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265
repo_model = RepoModel()
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 repo = repo_model.get(repo_name)
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 if not repo:
h.flash(_('%s repository is not mapped to db perhaps'
added check for repo created outside of hg app
r266 ' it was moved or renamed from the filesystem'
' please run the application again'
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 ' in order to rescan repositories') % repo_name,
category='error')
moved cache invalidating to utils, as seperate function. Implemented invalidating in
r140
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 return redirect(url('repos'))
try:
repo_model.delete(repo)
invalidate_cache('cached_repo_list')
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 h.flash(_('deleted repository %s') % repo_name, category='success')
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 except Exception:
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 h.flash(_('An error occured during deletion of %s') % repo_name,
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 category='error')
Marcin Kuzminski
Added hg model,implemented removal of repos, added HgModel for fetching repos(with generator)
r58 return redirect(url('repos'))
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 def delete_perm_user(self, repo_name):
"""
DELETE an existing repository permission user
@param repo_name:
"""
repo edit
r220
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 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)
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 repo_model = RepoModel()
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299 c.repo_info = repo = repo_model.get(repo_name)
added check for repo created outside of hg app
r266 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'
Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
r318 ' in order to rescan repositories') % repo_name,
category='error')
added check for repo created outside of hg app
r266
return redirect(url('repos'))
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 defaults = c.repo_info.__dict__
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
r296 defaults.update({'user':c.repo_info.user.username})
autocomplete for repository managment of users
r298 c.users_array = repo_model.get_users_js()
first permissions commit: added permission managment on repository edit. Changed db rmissions, validators.
r296 for p in c.repo_info.repo2perm:
defaults.update({'perm_%s' % p.user.username:
p.permission.permission_name})
repos crud controllers - change id into repo_name for compatability, added ajax repo perm user function variuos html fixes, permissions forms and managment fixes....
r299
Implemented basic repository managment. Implemented repo2db mappings, model, helpers updates and code cleanups
r265 return htmlfill.render(
render('admin/repos/repo_edit.html'),
defaults=defaults,
encoding="UTF-8",
force_defaults=False
)