##// END OF EJS Templates
moved permission management into separate entity....
moved permission management into separate entity. - this solves issues when whole form submision could influence permission management particular case is that when repo group permission is revoked and user is no longer able to update repository settings

File last commit:

r3573:881ae12b beta
r3628:c734686b beta
Show More
changelog.py
125 lines | 4.6 KiB | text/x-python | PythonLexer
updated docs on every controller
r861 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.changelog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
changelog controller for rhodecode
fixed some limits in changesets and changelogs
r1130
updated docs on every controller
r861 :created_on: Apr 21, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
updated docs on every controller
r861 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # 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, either version 3 of the License, or
# (at your option) any later version.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # 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.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
updated docs on every controller
r861
import logging
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 import traceback
#37 fixed json imports for python2.5...
r592
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 from pylons import request, url, session, tmpl_context as c
from pylons.controllers.util import redirect
from pylons.i18n.translation import _
updated docs on every controller
r861
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 import rhodecode.lib.helpers as h
renamed project to rhodecode
r547 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
another major codes rewrite:...
r1045 from rhodecode.lib.base import BaseRepoController, render
Added dedicated repo pager to support reversed new way slicing method of vcs and get_changesets method
r1098 from rhodecode.lib.helpers import RepoPage
fixed issues with python2.5...
r1514 from rhodecode.lib.compat import json
Unified DAG generation for hg and git...
r2380 from rhodecode.lib.graphmod import _colored, _dagwalker
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 from rhodecode.lib.vcs.exceptions import RepositoryError, ChangesetDoesNotExistError
failsafe the GET `page` argument
r2845 from rhodecode.lib.utils2 import safe_int
implemented #44 - branch filtering in changelog, aka branch browser...
r1656
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
pep8ify
r1212
another major codes rewrite:...
r1045 class ChangelogController(BaseRepoController):
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 @LoginRequired()
@HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
Fixes for raw_id, needed for git...
r636 'repository.admin')
renamed project to rhodecode
r547 def __before__(self):
super(ChangelogController, self).__before__()
fixed some limits in changesets and changelogs
r1130 c.affected_files_cut_off = 60
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 def index(self):
limit = 100
revert default to 20, for large repositories it's better to go less and have it faster....
r1864 default = 20
renamed project to rhodecode
r547 if request.params.get('size'):
try:
int_size = int(request.params.get('size'))
except ValueError:
int_size = default
H Waldo G
Compressed some assignments and evaluations into a single assignment.
r2632 c.size = max(min(int_size, limit), 1)
renamed project to rhodecode
r547 session['changelog_size'] = c.size
session.save()
else:
c.size = int(session.get('changelog_size', default))
fixes issue #502, float division error on setting maxsize of changelog to 0
r2628 # min size must be 1
c.size = max(c.size, 1)
failsafe the GET `page` argument
r2845 p = safe_int(request.params.get('page', 1), 1)
fixed percentage indicator of build stats,added branch filter to changelog controller
r1106 branch_name = request.params.get('branch', None)
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 try:
if branch_name:
auto white-space removal
r1818 collection = [z for z in
c.rhodecode_repo.get_changesets(start=0,
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 branch_name=branch_name)]
c.total_cs = len(collection)
else:
Added number of comments in changelog for each changeset...
r1884 collection = c.rhodecode_repo
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 c.total_cs = len(c.rhodecode_repo)
Fixes for raw_id, needed for git...
r636
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 c.pagination = RepoPage(collection, page=p, item_count=c.total_cs,
items_per_page=c.size, branch=branch_name)
Added number of comments in changelog for each changeset...
r1884 collection = list(c.pagination)
page_revisions = [x.raw_id for x in collection]
Fixed calls to Session in db model...
r2520 c.comments = c.rhodecode_db_repo.get_comments(page_revisions)
code-review initial
r2215 c.statuses = c.rhodecode_db_repo.statuses(page_revisions)
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
log.error(traceback.format_exc())
Mads Kiilerich
report ChangesetDoesNotExistError as an error but don't lose the repo context
r3573 h.flash(str(e), category='error')
return redirect(url('changelog_home', repo_name=c.repo_name))
implemented #44 - branch filtering in changelog, aka branch browser...
r1656
self._graph(c.rhodecode_repo, collection, c.total_cs, c.size, p)
c.branch_name = branch_name
Added number of comments in changelog for each changeset...
r1884 c.branch_filters = [('', _('All Branches'))] + \
[(k, k) for k in c.rhodecode_repo.branches.keys()]
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 return render('changelog/changelog.html')
changelog uses lazy loading of affected files details, in some scenarios this can improve speed...
r1431 def changelog_details(self, cs):
if request.environ.get('HTTP_X_PARTIAL_XHR'):
c.cs = c.rhodecode_repo.get_changeset(cs)
return render('changelog/changelog_details.html')
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 def _graph(self, repo, collection, repo_size, size, p):
DAG fixes for vcs 0.2.0
r1083 """
Generates a DAG graph for mercurial
source code cleanup: remove trailing white space, normalize file endings
r1203
DAG fixes for vcs 0.2.0
r1083 :param repo: repo instance
:param size: number of commits to show
:param p: page number
"""
implemented #44 - branch filtering in changelog, aka branch browser...
r1656 if not collection:
Code refactor for auth func, preparing for ldap support...
r699 c.jsdata = json.dumps([])
return
Fixes for raw_id, needed for git...
r636
renamed project to rhodecode
r547 data = []
Added number of comments in changelog for each changeset...
r1884 revs = [x.revision for x in collection]
fixes issues with new dag graph for mercurial 1.9
r1434
Unified DAG generation for hg and git...
r2380 dag = _dagwalker(repo, revs, repo.alias)
dag = _colored(dag)
for (id, type, ctx, vtx, edges) in dag:
data.append(['', vtx, edges])
renamed project to rhodecode
r547
Fixes for raw_id, needed for git...
r636 c.jsdata = json.dumps(data)