# HG changeset patch # User Marcin Kuzminski # Date 1336325090 -7200 # Node ID b2a2868d7bec42a1f377ae6aac5c165c787f2ee0 # Parent 87664e60bbc05b0264cd107693b1616cfcfa68f3 Basic compare-view controller with ref parsing diff -r 87664e60bbc0 -r b2a2868d7bec rhodecode/config/routing.py --- a/rhodecode/config/routing.py Sat May 05 23:12:49 2012 +0200 +++ b/rhodecode/config/routing.py Sun May 06 19:24:50 2012 +0200 @@ -412,6 +412,11 @@ controller='changeset', action='raw_changeset', revision='tip', conditions=dict(function=check_repo)) + rmap.connect('compare_home', + '/{repo_name:.*}/compare/{ref:.*}', + controller='compare', action='index', + conditions=dict(function=check_repo)) + rmap.connect('summary_home', '/{repo_name:.*}/summary', controller='summary', conditions=dict(function=check_repo)) diff -r 87664e60bbc0 -r b2a2868d7bec rhodecode/controllers/compare.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/controllers/compare.py Sun May 06 19:24:50 2012 +0200 @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +""" + rhodecode.controllers.compare + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + compare controller for pylons showoing differences between two + repos, branches, bookmarks or tips + + :created_on: May 6, 2012 + :author: marcink + :copyright: (C) 2010-2012 Marcin Kuzminski + :license: GPLv3, see COPYING for more details. +""" +# 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. +# +# 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, see . +import logging +import traceback + +from pylons import request, response, session, tmpl_context as c, url +from pylons.controllers.util import abort, redirect + +from rhodecode.lib.base import BaseRepoController, render +from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator +from webob.exc import HTTPNotFound + +log = logging.getLogger(__name__) + + +class CompareController(BaseRepoController): + + @LoginRequired() + @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', + 'repository.admin') + def __before__(self): + super(CompareController, self).__before__() + + def _handle_ref(self, ref): + """ + Parse the org...other string + Possible formats are `(branch|book|tag):...(branch|book|tag):` + or using a repo ...(repo: + REPO: %s + REF: %s + + vs + + REPO: %s + REF: %s + + ''' % (org_repo, org_ref, other_repo, other_ref) diff -r 87664e60bbc0 -r b2a2868d7bec rhodecode/tests/functional/test_compare.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/tests/functional/test_compare.py Sun May 06 19:24:50 2012 +0200 @@ -0,0 +1,7 @@ +from rhodecode.tests import * + +class TestCompareController(TestController): + + def test_index(self): + response = self.app.get(url(controller='compare', action='index')) + # Test response...