diff --git a/docs/contributing.rst b/docs/contributing.rst --- a/docs/contributing.rst +++ b/docs/contributing.rst @@ -112,7 +112,7 @@ following list, modules may only depend everything and has a huge dependency chain, so it should not be used for anything else. TODO. -``controlles/base.py`` +``controllers/base.py`` The base class of controllers, with lots of model knowledge. ``lib/auth.py`` diff --git a/kallithea/config/middleware/simplegit.py b/kallithea/config/middleware/simplegit.py --- a/kallithea/config/middleware/simplegit.py +++ b/kallithea/config/middleware/simplegit.py @@ -32,8 +32,8 @@ import logging import re from kallithea.config.middleware.pygrack import make_wsgi_app +from kallithea.controllers import base from kallithea.lib import hooks -from kallithea.lib.base import BaseVCSController, get_path_info log = logging.getLogger(__name__) @@ -48,13 +48,13 @@ cmd_mapping = { } -class SimpleGit(BaseVCSController): +class SimpleGit(base.BaseVCSController): scm_alias = 'git' @classmethod def parse_request(cls, environ): - path_info = get_path_info(environ) + path_info = base.get_path_info(environ) m = GIT_PROTO_PAT.match(path_info) if m is None: return None diff --git a/kallithea/config/middleware/simplehg.py b/kallithea/config/middleware/simplehg.py --- a/kallithea/config/middleware/simplehg.py +++ b/kallithea/config/middleware/simplehg.py @@ -34,7 +34,7 @@ import urllib.parse import mercurial.hgweb -from kallithea.lib.base import BaseVCSController, get_path_info +from kallithea.controllers import base from kallithea.lib.utils import make_ui from kallithea.lib.utils2 import safe_bytes @@ -91,7 +91,7 @@ cmd_mapping = { } -class SimpleHg(BaseVCSController): +class SimpleHg(base.BaseVCSController): scm_alias = 'hg' @@ -100,7 +100,7 @@ class SimpleHg(BaseVCSController): http_accept = environ.get('HTTP_ACCEPT', '') if not http_accept.startswith('application/mercurial'): return None - path_info = get_path_info(environ) + path_info = base.get_path_info(environ) if not path_info.startswith('/'): # it must! return None diff --git a/kallithea/config/middleware/wrapper.py b/kallithea/config/middleware/wrapper.py --- a/kallithea/config/middleware/wrapper.py +++ b/kallithea/config/middleware/wrapper.py @@ -29,7 +29,7 @@ Original author and date, and relevant c import logging import time -from kallithea.lib.base import get_ip_addr, get_path_info +from kallithea.controllers import base log = logging.getLogger(__name__) @@ -91,8 +91,8 @@ class RequestWrapper(object): def __call__(self, environ, start_response): meter = Meter(start_response) description = "Request from %s for %s" % ( - get_ip_addr(environ), - get_path_info(environ), + base.get_ip_addr(environ), + base.get_path_info(environ), ) log.info("%s received", description) try: diff --git a/kallithea/controllers/admin/admin.py b/kallithea/controllers/admin/admin.py --- a/kallithea/controllers/admin/admin.py +++ b/kallithea/controllers/admin/admin.py @@ -36,8 +36,8 @@ from whoosh import query from whoosh.qparser.dateparse import DateParserPlugin from whoosh.qparser.default import QueryParser +from kallithea.controllers import base from kallithea.lib.auth import HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.indexers import JOURNAL_SCHEMA from kallithea.lib.page import Page from kallithea.lib.utils2 import remove_prefix, remove_suffix, safe_int @@ -118,7 +118,7 @@ def _journal_filter(user_log, search_ter return user_log -class AdminController(BaseController): +class AdminController(base.BaseController): @LoginRequired(allow_default_user=True) def _before(self, *args, **kwargs): @@ -142,6 +142,6 @@ class AdminController(BaseController): filter=c.search_term) if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('admin/admin_log.html') + return base.render('admin/admin_log.html') - return render('admin/admin.html') + return base.render('admin/admin.html') diff --git a/kallithea/controllers/admin/auth_settings.py b/kallithea/controllers/admin/auth_settings.py --- a/kallithea/controllers/admin/auth_settings.py +++ b/kallithea/controllers/admin/auth_settings.py @@ -32,9 +32,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPFound +from kallithea.controllers import base from kallithea.lib import auth_modules, webutils from kallithea.lib.auth import HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.webutils import url from kallithea.model import db, meta from kallithea.model.forms import AuthSettingsForm @@ -43,7 +43,7 @@ from kallithea.model.forms import AuthSe log = logging.getLogger(__name__) -class AuthSettingsController(BaseController): +class AuthSettingsController(base.BaseController): @LoginRequired() @HasPermissionAnyDecorator('hg.admin') @@ -86,7 +86,7 @@ class AuthSettingsController(BaseControl log.debug('defaults: %s', defaults) return formencode.htmlfill.render( - render('admin/auth/auth_settings.html'), + base.render('admin/auth/auth_settings.html'), defaults=c.defaults, errors=errors, prefix_error=False, diff --git a/kallithea/controllers/admin/defaults.py b/kallithea/controllers/admin/defaults.py --- a/kallithea/controllers/admin/defaults.py +++ b/kallithea/controllers/admin/defaults.py @@ -34,9 +34,9 @@ from tg import request from tg.i18n import ugettext as _ from webob.exc import HTTPFound +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.webutils import url from kallithea.model import db, meta from kallithea.model.forms import DefaultsForm @@ -45,7 +45,7 @@ from kallithea.model.forms import Defaul log = logging.getLogger(__name__) -class DefaultsController(BaseController): +class DefaultsController(base.BaseController): @LoginRequired() @HasPermissionAnyDecorator('hg.admin') @@ -56,7 +56,7 @@ class DefaultsController(BaseController) defaults = db.Setting.get_default_repo_settings() return htmlfill.render( - render('admin/defaults/defaults.html'), + base.render('admin/defaults/defaults.html'), defaults=defaults, encoding="UTF-8", force_defaults=False @@ -77,7 +77,7 @@ class DefaultsController(BaseController) defaults = errors.value return htmlfill.render( - render('admin/defaults/defaults.html'), + base.render('admin/defaults/defaults.html'), defaults=defaults, errors=errors.error_dict or {}, prefix_error=False, diff --git a/kallithea/controllers/admin/gists.py b/kallithea/controllers/admin/gists.py --- a/kallithea/controllers/admin/gists.py +++ b/kallithea/controllers/admin/gists.py @@ -35,9 +35,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPForbidden, HTTPFound, HTTPNotFound +from kallithea.controllers import base from kallithea.lib import auth, webutils from kallithea.lib.auth import LoginRequired -from kallithea.lib.base import BaseController, jsonify, render from kallithea.lib.page import Page from kallithea.lib.utils2 import safe_int, safe_str, time_to_datetime from kallithea.lib.vcs.exceptions import NodeNotChangedError, VCSError @@ -50,7 +50,7 @@ from kallithea.model.gist import GistMod log = logging.getLogger(__name__) -class GistsController(BaseController): +class GistsController(base.BaseController): def __load_defaults(self, extra_values=None): c.lifetime_values = [ @@ -102,7 +102,7 @@ class GistsController(BaseController): p = safe_int(request.GET.get('page'), 1) c.gists_pager = Page(c.gists, page=p, items_per_page=10, **url_params) - return render('admin/gists/index.html') + return base.render('admin/gists/index.html') @LoginRequired() def create(self): @@ -134,7 +134,7 @@ class GistsController(BaseController): defaults = errors.value return formencode.htmlfill.render( - render('admin/gists/new.html'), + base.render('admin/gists/new.html'), defaults=defaults, errors=errors.error_dict or {}, prefix_error=False, @@ -150,7 +150,7 @@ class GistsController(BaseController): @LoginRequired() def new(self, format='html'): self.__load_defaults() - return render('admin/gists/new.html') + return base.render('admin/gists/new.html') @LoginRequired() def delete(self, gist_id): @@ -186,7 +186,7 @@ class GistsController(BaseController): ) response.content_type = 'text/plain' return content - return render('admin/gists/show.html') + return base.render('admin/gists/show.html') @LoginRequired() def edit(self, gist_id, format='html'): @@ -203,7 +203,7 @@ class GistsController(BaseController): raise HTTPNotFound() self.__load_defaults(extra_values=('0', _('Unmodified'))) - rendered = render('admin/gists/edit.html') + rendered = base.render('admin/gists/edit.html') if request.POST: rpost = request.POST @@ -248,7 +248,7 @@ class GistsController(BaseController): return rendered @LoginRequired() - @jsonify + @base.jsonify def check_revision(self, gist_id): c.gist = db.Gist.get_or_404(gist_id) last_rev = c.gist.scm_instance.get_changeset() diff --git a/kallithea/controllers/admin/my_account.py b/kallithea/controllers/admin/my_account.py --- a/kallithea/controllers/admin/my_account.py +++ b/kallithea/controllers/admin/my_account.py @@ -35,9 +35,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPFound +from kallithea.controllers import base from kallithea.lib import auth_modules, webutils from kallithea.lib.auth import AuthUser, LoginRequired -from kallithea.lib.base import BaseController, IfSshEnabled, render from kallithea.lib.utils2 import generate_api_key, safe_int from kallithea.lib.webutils import url from kallithea.model import db, meta @@ -51,7 +51,7 @@ from kallithea.model.user import UserMod log = logging.getLogger(__name__) -class MyAccountController(BaseController): +class MyAccountController(base.BaseController): @LoginRequired() def _before(self, *args, **kwargs): @@ -116,7 +116,7 @@ class MyAccountController(BaseController except formencode.Invalid as errors: return htmlfill.render( - render('admin/my_account/my_account.html'), + base.render('admin/my_account/my_account.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -129,7 +129,7 @@ class MyAccountController(BaseController if update: raise HTTPFound(location='my_account') return htmlfill.render( - render('admin/my_account/my_account.html'), + base.render('admin/my_account/my_account.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -150,7 +150,7 @@ class MyAccountController(BaseController webutils.flash(_("Successfully updated password"), category='success') except formencode.Invalid as errors: return htmlfill.render( - render('admin/my_account/my_account.html'), + base.render('admin/my_account/my_account.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -160,7 +160,7 @@ class MyAccountController(BaseController log.error(traceback.format_exc()) webutils.flash(_('Error occurred during update of user password'), category='error') - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_repos(self): c.active = 'repos' @@ -168,7 +168,7 @@ class MyAccountController(BaseController # data used to render the grid c.data = self._load_my_repos_data() - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_watched(self): c.active = 'watched' @@ -176,14 +176,14 @@ class MyAccountController(BaseController # data used to render the grid c.data = self._load_my_repos_data(watched=True) - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_perms(self): c.active = 'perms' self.__load_data() c.perm_user = AuthUser(user_id=request.authuser.user_id) - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_emails(self): c.active = 'emails' @@ -191,7 +191,7 @@ class MyAccountController(BaseController c.user_email_map = db.UserEmailMap.query() \ .filter(db.UserEmailMap.user == c.user).all() - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_emails_add(self): email = request.POST.get('new_email') @@ -231,7 +231,7 @@ class MyAccountController(BaseController c.lifetime_options = [(c.lifetime_values, _("Lifetime"))] c.user_api_keys = ApiKeyModel().get_api_keys(request.authuser.user_id, show_expired=show_expired) - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') def my_account_api_keys_add(self): lifetime = safe_int(request.POST.get('lifetime'), -1) @@ -255,14 +255,14 @@ class MyAccountController(BaseController raise HTTPFound(location=url('my_account_api_keys')) - @IfSshEnabled + @base.IfSshEnabled def my_account_ssh_keys(self): c.active = 'ssh_keys' self.__load_data() c.user_ssh_keys = SshKeyModel().get_ssh_keys(request.authuser.user_id) - return render('admin/my_account/my_account.html') + return base.render('admin/my_account/my_account.html') - @IfSshEnabled + @base.IfSshEnabled def my_account_ssh_keys_add(self): description = request.POST.get('description') public_key = request.POST.get('public_key') @@ -276,7 +276,7 @@ class MyAccountController(BaseController webutils.flash(e.args[0], category='error') raise HTTPFound(location=url('my_account_ssh_keys')) - @IfSshEnabled + @base.IfSshEnabled def my_account_ssh_keys_delete(self): fingerprint = request.POST.get('del_public_key_fingerprint') try: diff --git a/kallithea/controllers/admin/permissions.py b/kallithea/controllers/admin/permissions.py --- a/kallithea/controllers/admin/permissions.py +++ b/kallithea/controllers/admin/permissions.py @@ -36,9 +36,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPFound +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import AuthUser, HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.webutils import url from kallithea.model import db, meta from kallithea.model.forms import DefaultPermissionsForm @@ -48,7 +48,7 @@ from kallithea.model.permission import P log = logging.getLogger(__name__) -class PermissionsController(BaseController): +class PermissionsController(base.BaseController): @LoginRequired() @HasPermissionAnyDecorator('hg.admin') @@ -120,7 +120,7 @@ class PermissionsController(BaseControll defaults = errors.value return htmlfill.render( - render('admin/permissions/permissions.html'), + base.render('admin/permissions/permissions.html'), defaults=defaults, errors=errors.error_dict or {}, prefix_error=False, @@ -162,7 +162,7 @@ class PermissionsController(BaseControll defaults['default_fork'] = p.permission.permission_name return htmlfill.render( - render('admin/permissions/permissions.html'), + base.render('admin/permissions/permissions.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -173,10 +173,10 @@ class PermissionsController(BaseControll c.user_ip_map = db.UserIpMap.query() \ .filter(db.UserIpMap.user == c.user).all() - return render('admin/permissions/permissions.html') + return base.render('admin/permissions/permissions.html') def permission_perms(self): c.active = 'perms' c.user = db.User.get_default_user() c.perm_user = AuthUser(dbuser=c.user) - return render('admin/permissions/permissions.html') + return base.render('admin/permissions/permissions.html') diff --git a/kallithea/controllers/admin/repo_groups.py b/kallithea/controllers/admin/repo_groups.py --- a/kallithea/controllers/admin/repo_groups.py +++ b/kallithea/controllers/admin/repo_groups.py @@ -37,9 +37,9 @@ from tg.i18n import ungettext from webob.exc import HTTPForbidden, HTTPFound, HTTPInternalServerError, HTTPNotFound import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasPermissionAny, HasRepoGroupPermissionLevel, HasRepoGroupPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.utils2 import safe_int from kallithea.lib.webutils import url from kallithea.model import db, meta @@ -52,7 +52,7 @@ from kallithea.model.scm import Availabl log = logging.getLogger(__name__) -class RepoGroupsController(BaseController): +class RepoGroupsController(base.BaseController): @LoginRequired(allow_default_user=True) def _before(self, *args, **kwargs): @@ -132,7 +132,7 @@ class RepoGroupsController(BaseControlle "records": repo_groups_data } - return render('admin/repo_groups/repo_groups.html') + return base.render('admin/repo_groups/repo_groups.html') def create(self): self.__load_defaults() @@ -154,7 +154,7 @@ class RepoGroupsController(BaseControlle # TODO: in future action_logger(, '', '', '') except formencode.Invalid as errors: return htmlfill.render( - render('admin/repo_groups/repo_group_add.html'), + base.render('admin/repo_groups/repo_group_add.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -190,7 +190,7 @@ class RepoGroupsController(BaseControlle self.__load_defaults() return htmlfill.render( - render('admin/repo_groups/repo_group_add.html'), + base.render('admin/repo_groups/repo_group_add.html'), defaults={'parent_group_id': parent_group_id}, errors={}, prefix_error=False, @@ -230,7 +230,7 @@ class RepoGroupsController(BaseControlle except formencode.Invalid as errors: c.active = 'settings' return htmlfill.render( - render('admin/repo_groups/repo_group_edit.html'), + base.render('admin/repo_groups/repo_group_edit.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -298,7 +298,7 @@ class RepoGroupsController(BaseControlle repo_groups_list=repo_groups_list, short_name=True) - return render('admin/repo_groups/repo_group_show.html') + return base.render('admin/repo_groups/repo_group_show.html') @HasRepoGroupPermissionLevelDecorator('admin') def edit(self, group_name): @@ -310,7 +310,7 @@ class RepoGroupsController(BaseControlle defaults = self.__load_data(c.repo_group.group_id) return htmlfill.render( - render('admin/repo_groups/repo_group_edit.html'), + base.render('admin/repo_groups/repo_group_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False @@ -321,7 +321,7 @@ class RepoGroupsController(BaseControlle c.active = 'advanced' c.repo_group = db.RepoGroup.guess_instance(group_name) - return render('admin/repo_groups/repo_group_edit.html') + return base.render('admin/repo_groups/repo_group_edit.html') @HasRepoGroupPermissionLevelDecorator('admin') def edit_repo_group_perms(self, group_name): @@ -331,7 +331,7 @@ class RepoGroupsController(BaseControlle defaults = self.__load_data(c.repo_group.group_id) return htmlfill.render( - render('admin/repo_groups/repo_group_edit.html'), + base.render('admin/repo_groups/repo_group_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False diff --git a/kallithea/controllers/admin/repos.py b/kallithea/controllers/admin/repos.py --- a/kallithea/controllers/admin/repos.py +++ b/kallithea/controllers/admin/repos.py @@ -36,9 +36,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPForbidden, HTTPFound, HTTPInternalServerError, HTTPNotFound import kallithea +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired, NotAnonymous -from kallithea.lib.base import BaseRepoController, jsonify, render from kallithea.lib.exceptions import AttachedForksError from kallithea.lib.utils2 import safe_int from kallithea.lib.vcs import RepositoryError @@ -52,7 +52,7 @@ from kallithea.model.scm import Availabl log = logging.getLogger(__name__) -class ReposController(BaseRepoController): +class ReposController(base.BaseRepoController): @LoginRequired(allow_default_user=True) def _before(self, *args, **kwargs): @@ -93,7 +93,7 @@ class ReposController(BaseRepoController # data used to render the grid c.data = repos_data - return render('admin/repos/repos.html') + return base.render('admin/repos/repos.html') @NotAnonymous() def create(self): @@ -106,7 +106,7 @@ class ReposController(BaseRepoController except formencode.Invalid as errors: log.info(errors) return htmlfill.render( - render('admin/repos/repo_add.html'), + base.render('admin/repos/repo_add.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -148,7 +148,7 @@ class ReposController(BaseRepoController defaults.update({'repo_group': parent_group}) return htmlfill.render( - render('admin/repos/repo_add.html'), + base.render('admin/repos/repo_add.html'), defaults=defaults, errors={}, prefix_error=False, @@ -161,10 +161,10 @@ class ReposController(BaseRepoController c.task_id = request.GET.get('task_id') if not c.repo: raise HTTPNotFound() - return render('admin/repos/repo_creating.html') + return base.render('admin/repos/repo_creating.html') @LoginRequired() - @jsonify + @base.jsonify def repo_check(self, repo_name): c.repo = repo_name task_id = request.GET.get('task_id') @@ -230,7 +230,7 @@ class ReposController(BaseRepoController defaults = self.__load_data() defaults.update(errors.value) return htmlfill.render( - render('admin/repos/repo_edit.html'), + base.render('admin/repos/repo_edit.html'), defaults=defaults, errors=errors.error_dict or {}, prefix_error=False, @@ -286,7 +286,7 @@ class ReposController(BaseRepoController .filter(db.RepositoryField.repository == c.repo_info).all() c.active = 'settings' return htmlfill.render( - render('admin/repos/repo_edit.html'), + base.render('admin/repos/repo_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -298,7 +298,7 @@ class ReposController(BaseRepoController defaults = RepoModel()._get_defaults(repo_name) return htmlfill.render( - render('admin/repos/repo_edit.html'), + base.render('admin/repos/repo_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -355,7 +355,7 @@ class ReposController(BaseRepoController if request.POST: raise HTTPFound(location=url('repo_edit_fields')) - return render('admin/repos/repo_edit.html') + return base.render('admin/repos/repo_edit.html') @HasRepoPermissionLevelDecorator('admin') def create_repo_field(self, repo_name): @@ -413,7 +413,7 @@ class ReposController(BaseRepoController if request.POST: raise HTTPFound(location=url('repo_edit_advanced')) return htmlfill.render( - render('admin/repos/repo_edit.html'), + base.render('admin/repos/repo_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -478,7 +478,7 @@ class ReposController(BaseRepoController webutils.flash(_('An error occurred during pull from remote location'), category='error') raise HTTPFound(location=url('edit_repo_remote', repo_name=c.repo_name)) - return render('admin/repos/repo_edit.html') + return base.render('admin/repos/repo_edit.html') @HasRepoPermissionLevelDecorator('admin') def edit_statistics(self, repo_name): @@ -510,4 +510,4 @@ class ReposController(BaseRepoController category='error') raise HTTPFound(location=url('edit_repo_statistics', repo_name=c.repo_name)) - return render('admin/repos/repo_edit.html') + return base.render('admin/repos/repo_edit.html') diff --git a/kallithea/controllers/admin/settings.py b/kallithea/controllers/admin/settings.py --- a/kallithea/controllers/admin/settings.py +++ b/kallithea/controllers/admin/settings.py @@ -36,9 +36,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPFound import kallithea +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.utils import repo2db_mapper, set_app_settings from kallithea.lib.utils2 import safe_str from kallithea.lib.vcs import VCSError @@ -52,7 +52,7 @@ from kallithea.model.scm import ScmModel log = logging.getLogger(__name__) -class SettingsController(BaseController): +class SettingsController(base.BaseController): @LoginRequired(allow_default_user=True) def _before(self, *args, **kwargs): @@ -85,7 +85,7 @@ class SettingsController(BaseController) form_result = application_form.to_python(dict(request.POST)) except formencode.Invalid as errors: return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -124,7 +124,7 @@ class SettingsController(BaseController) defaults.update(self._get_hg_ui_settings()) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -172,7 +172,7 @@ class SettingsController(BaseController) defaults.update(self._get_hg_ui_settings()) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -186,7 +186,7 @@ class SettingsController(BaseController) form_result = application_form.to_python(dict(request.POST)) except formencode.Invalid as errors: return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -219,7 +219,7 @@ class SettingsController(BaseController) defaults.update(self._get_hg_ui_settings()) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -233,7 +233,7 @@ class SettingsController(BaseController) form_result = application_form.to_python(dict(request.POST)) except formencode.Invalid as errors: return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -274,7 +274,7 @@ class SettingsController(BaseController) defaults.update(self._get_hg_ui_settings()) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -312,7 +312,7 @@ class SettingsController(BaseController) c.ini = kallithea.CONFIG return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -367,7 +367,7 @@ class SettingsController(BaseController) c.custom_hooks = db.Ui.get_custom_hooks() return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -386,7 +386,7 @@ class SettingsController(BaseController) defaults.update(self._get_hg_ui_settings()) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -404,7 +404,7 @@ class SettingsController(BaseController) setattr(c, key, val) return htmlfill.render( - render('admin/settings/settings.html'), + base.render('admin/settings/settings.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) diff --git a/kallithea/controllers/admin/user_groups.py b/kallithea/controllers/admin/user_groups.py --- a/kallithea/controllers/admin/user_groups.py +++ b/kallithea/controllers/admin/user_groups.py @@ -38,9 +38,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPFound, HTTPInternalServerError import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasPermissionAnyDecorator, HasUserGroupPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.exceptions import RepoGroupAssignmentError, UserGroupsAssignedException from kallithea.lib.utils2 import safe_int, safe_str from kallithea.lib.webutils import url @@ -53,7 +53,7 @@ from kallithea.model.user_group import U log = logging.getLogger(__name__) -class UserGroupsController(BaseController): +class UserGroupsController(base.BaseController): @LoginRequired(allow_default_user=True) def _before(self, *args, **kwargs): @@ -113,7 +113,7 @@ class UserGroupsController(BaseControlle "records": user_groups_data } - return render('admin/user_groups/user_groups.html') + return base.render('admin/user_groups/user_groups.html') @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true') def create(self): @@ -134,7 +134,7 @@ class UserGroupsController(BaseControlle meta.Session().commit() except formencode.Invalid as errors: return htmlfill.render( - render('admin/user_groups/user_group_add.html'), + base.render('admin/user_groups/user_group_add.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -149,7 +149,7 @@ class UserGroupsController(BaseControlle @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true') def new(self, format='html'): - return render('admin/user_groups/user_group_add.html') + return base.render('admin/user_groups/user_group_add.html') @HasUserGroupPermissionLevelDecorator('admin') def update(self, id): @@ -184,7 +184,7 @@ class UserGroupsController(BaseControlle }) return htmlfill.render( - render('admin/user_groups/user_group_edit.html'), + base.render('admin/user_groups/user_group_edit.html'), defaults=defaults, errors=e, prefix_error=False, @@ -221,7 +221,7 @@ class UserGroupsController(BaseControlle defaults = self.__load_defaults(id) return htmlfill.render( - render('admin/user_groups/user_group_edit.html'), + base.render('admin/user_groups/user_group_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False @@ -243,7 +243,7 @@ class UserGroupsController(BaseControlle p.permission.permission_name}) return htmlfill.render( - render('admin/user_groups/user_group_edit.html'), + base.render('admin/user_groups/user_group_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False @@ -344,7 +344,7 @@ class UserGroupsController(BaseControlle }) return htmlfill.render( - render('admin/user_groups/user_group_edit.html'), + base.render('admin/user_groups/user_group_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False @@ -394,7 +394,7 @@ class UserGroupsController(BaseControlle c.active = 'advanced' c.group_members_obj = sorted((x.user for x in c.user_group.members), key=lambda u: u.username.lower()) - return render('admin/user_groups/user_group_edit.html') + return base.render('admin/user_groups/user_group_edit.html') @HasUserGroupPermissionLevelDecorator('admin') def edit_members(self, id): @@ -404,4 +404,4 @@ class UserGroupsController(BaseControlle key=lambda u: u.username.lower()) c.group_members = [(x.user_id, x.username) for x in c.group_members_obj] - return render('admin/user_groups/user_group_edit.html') + return base.render('admin/user_groups/user_group_edit.html') diff --git a/kallithea/controllers/admin/users.py b/kallithea/controllers/admin/users.py --- a/kallithea/controllers/admin/users.py +++ b/kallithea/controllers/admin/users.py @@ -38,9 +38,9 @@ from webob.exc import HTTPFound, HTTPNot import kallithea import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import auth_modules, webutils from kallithea.lib.auth import AuthUser, HasPermissionAnyDecorator, LoginRequired -from kallithea.lib.base import BaseController, IfSshEnabled, render from kallithea.lib.exceptions import DefaultUserException, UserCreationError, UserOwnsReposException from kallithea.lib.utils2 import datetime_to_time, fmt_date, generate_api_key, safe_int from kallithea.lib.webutils import url @@ -54,7 +54,7 @@ from kallithea.model.user import UserMod log = logging.getLogger(__name__) -class UsersController(BaseController): +class UsersController(base.BaseController): @LoginRequired() @HasPermissionAnyDecorator('hg.admin') @@ -103,7 +103,7 @@ class UsersController(BaseController): "records": users_data } - return render('admin/users/users.html') + return base.render('admin/users/users.html') def create(self): c.default_extern_type = db.User.DEFAULT_AUTH_TYPE @@ -120,7 +120,7 @@ class UsersController(BaseController): meta.Session().commit() except formencode.Invalid as errors: return htmlfill.render( - render('admin/users/user_add.html'), + base.render('admin/users/user_add.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -137,7 +137,7 @@ class UsersController(BaseController): def new(self, format='html'): c.default_extern_type = db.User.DEFAULT_AUTH_TYPE c.default_extern_name = '' - return render('admin/users/user_add.html') + return base.render('admin/users/user_add.html') def update(self, id): user_model = UserModel() @@ -208,7 +208,7 @@ class UsersController(BaseController): c.perm_user = AuthUser(dbuser=user) managed_fields = auth_modules.get_managed_fields(user) c.readonly = lambda n: 'readonly' if n in managed_fields else None - return render('admin/users/user_edit.html') + return base.render('admin/users/user_edit.html') def edit(self, id, format='html'): user = self._get_user_or_raise_if_default(id) @@ -234,7 +234,7 @@ class UsersController(BaseController): 'fork_repo_perm': umodel.has_perm(c.user, 'hg.fork.repository'), }) return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -255,7 +255,7 @@ class UsersController(BaseController): show_expired=show_expired) defaults = c.user.get_dict() return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -302,7 +302,7 @@ class UsersController(BaseController): 'fork_repo_perm': umodel.has_perm(c.user, 'hg.fork.repository'), }) return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -350,7 +350,7 @@ class UsersController(BaseController): defaults = c.user.get_dict() return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -393,7 +393,7 @@ class UsersController(BaseController): defaults = c.user.get_dict() return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -429,19 +429,19 @@ class UsersController(BaseController): raise HTTPFound(location=url('admin_permissions_ips')) raise HTTPFound(location=url('edit_user_ips', id=id)) - @IfSshEnabled + @base.IfSshEnabled def edit_ssh_keys(self, id): c.user = self._get_user_or_raise_if_default(id) c.active = 'ssh_keys' c.user_ssh_keys = SshKeyModel().get_ssh_keys(c.user.user_id) defaults = c.user.get_dict() return htmlfill.render( - render('admin/users/user_edit.html'), + base.render('admin/users/user_edit.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) - @IfSshEnabled + @base.IfSshEnabled def ssh_keys_add(self, id): c.user = self._get_user_or_raise_if_default(id) @@ -457,7 +457,7 @@ class UsersController(BaseController): webutils.flash(e.args[0], category='error') raise HTTPFound(location=url('edit_user_ssh_keys', id=c.user.user_id)) - @IfSshEnabled + @base.IfSshEnabled def ssh_keys_delete(self, id): c.user = self._get_user_or_raise_if_default(id) diff --git a/kallithea/controllers/api/__init__.py b/kallithea/controllers/api/__init__.py --- a/kallithea/controllers/api/__init__.py +++ b/kallithea/controllers/api/__init__.py @@ -35,9 +35,9 @@ import types from tg import Response, TGController, request, response from webob.exc import HTTPError, HTTPException +from kallithea.controllers import base from kallithea.lib import ext_json from kallithea.lib.auth import AuthUser -from kallithea.lib.base import get_ip_addr, get_path_info from kallithea.lib.utils2 import ascii_bytes from kallithea.model import db @@ -99,7 +99,7 @@ class JSONRPCController(TGController): environ = state.request.environ start = time.time() - ip_addr = get_ip_addr(environ) + ip_addr = base.get_ip_addr(environ) self._req_id = None if 'CONTENT_LENGTH' not in environ: log.debug("No Content-Length") @@ -204,8 +204,8 @@ class JSONRPCController(TGController): self._rpc_args['environ'] = environ log.info('IP: %s Request to %s time: %.3fs' % ( - get_ip_addr(environ), - get_path_info(environ), time.time() - start) + base.get_ip_addr(environ), + base.get_path_info(environ), time.time() - start) ) state.set_action(self._rpc_call, []) diff --git a/kallithea/lib/base.py b/kallithea/controllers/base.py rename from kallithea/lib/base.py rename to kallithea/controllers/base.py --- a/kallithea/lib/base.py +++ b/kallithea/controllers/base.py @@ -13,8 +13,8 @@ # along with this program. If not, see . """ -kallithea.lib.base -~~~~~~~~~~~~~~~~~~ +kallithea.controllers.base +~~~~~~~~~~~~~~~~~~~~~~~~~~ The base Controller API Provides the BaseController class for subclassing. And usage in different diff --git a/kallithea/controllers/changelog.py b/kallithea/controllers/changelog.py --- a/kallithea/controllers/changelog.py +++ b/kallithea/controllers/changelog.py @@ -33,9 +33,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest, HTTPFound, HTTPNotFound +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, render from kallithea.lib.graphmod import graph_data from kallithea.lib.page import Page from kallithea.lib.utils2 import safe_int @@ -46,7 +46,7 @@ from kallithea.lib.webutils import url log = logging.getLogger(__name__) -class ChangelogController(BaseRepoController): +class ChangelogController(base.BaseRepoController): def _before(self, *args, **kwargs): super(ChangelogController, self)._before(*args, **kwargs) @@ -146,12 +146,12 @@ class ChangelogController(BaseRepoContro c.revision = revision # requested revision ref c.first_revision = c.cs_pagination[0] # pagination is never empty here! - return render('changelog/changelog.html') + return base.render('changelog/changelog.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') def changelog_details(self, cs): if request.environ.get('HTTP_X_PARTIAL_XHR'): c.cs = c.db_repo_scm_instance.get_changeset(cs) - return render('changelog/changelog_details.html') + return base.render('changelog/changelog_details.html') raise HTTPNotFound() diff --git a/kallithea/controllers/changeset.py b/kallithea/controllers/changeset.py --- a/kallithea/controllers/changeset.py +++ b/kallithea/controllers/changeset.py @@ -36,9 +36,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest, HTTPForbidden, HTTPNotFound import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import auth, diffs, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, jsonify, render from kallithea.lib.graphmod import graph_data from kallithea.lib.utils2 import ascii_str, safe_str from kallithea.lib.vcs.backends.base import EmptyChangeset @@ -148,7 +148,7 @@ def create_cs_pr_comment(repo_name, revi c.comment = comment data.update(comment.get_dict()) data.update({'rendered_text': - render('changeset/changeset_comment_block.html')}) + base.render('changeset/changeset_comment_block.html')}) return data @@ -170,7 +170,7 @@ def delete_cs_pr_comment(repo_name, comm else: raise HTTPForbidden() -class ChangesetController(BaseRepoController): +class ChangesetController(base.BaseRepoController): def _before(self, *args, **kwargs): super(ChangesetController, self)._before(*args, **kwargs) @@ -285,19 +285,19 @@ class ChangesetController(BaseRepoContro elif method == 'patch': response.content_type = 'text/plain' c.diff = safe_str(raw_diff) - return render('changeset/patch_changeset.html') + return base.render('changeset/patch_changeset.html') elif method == 'raw': response.content_type = 'text/plain' return raw_diff elif method == 'show': if len(c.cs_ranges) == 1: - return render('changeset/changeset.html') + return base.render('changeset/changeset.html') else: c.cs_ranges_org = None c.cs_comments = {} revs = [ctx.revision for ctx in reversed(c.cs_ranges)] c.jsdata = graph_data(c.db_repo_scm_instance, revs) - return render('changeset/changeset_range.html') + return base.render('changeset/changeset_range.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -321,19 +321,19 @@ class ChangesetController(BaseRepoContro @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def comment(self, repo_name, revision): return create_cs_pr_comment(repo_name, revision=revision) @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def delete_comment(self, repo_name, comment_id): return delete_cs_pr_comment(repo_name, comment_id) @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def changeset_info(self, repo_name, revision): if request.is_xhr: try: @@ -345,7 +345,7 @@ class ChangesetController(BaseRepoContro @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def changeset_children(self, repo_name, revision): if request.is_xhr: changeset = c.db_repo_scm_instance.get_changeset(revision) @@ -358,7 +358,7 @@ class ChangesetController(BaseRepoContro @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def changeset_parents(self, repo_name, revision): if request.is_xhr: changeset = c.db_repo_scm_instance.get_changeset(revision) diff --git a/kallithea/controllers/compare.py b/kallithea/controllers/compare.py --- a/kallithea/controllers/compare.py +++ b/kallithea/controllers/compare.py @@ -35,9 +35,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest, HTTPFound, HTTPNotFound import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import diffs, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, render from kallithea.lib.graphmod import graph_data from kallithea.lib.webutils import url from kallithea.model import db @@ -46,7 +46,7 @@ from kallithea.model import db log = logging.getLogger(__name__) -class CompareController(BaseRepoController): +class CompareController(base.BaseRepoController): def _before(self, *args, **kwargs): super(CompareController, self)._before(*args, **kwargs) @@ -76,7 +76,7 @@ class CompareController(BaseRepoControll def index(self, repo_name): c.compare_home = True c.a_ref_name = c.cs_ref_name = None - return render('compare/compare_diff.html') + return base.render('compare/compare_diff.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -129,7 +129,7 @@ class CompareController(BaseRepoControll c.jsdata = graph_data(c.cs_repo.scm_instance, revs) if partial: - return render('compare/compare_cs.html') + return base.render('compare/compare_cs.html') org_repo = c.a_repo other_repo = c.cs_repo @@ -185,4 +185,4 @@ class CompareController(BaseRepoControll html_diff = diffs.as_html(parsed_lines=[f]) c.file_diff_data.append((fid, None, f['operation'], f['old_filename'], filename, html_diff, st)) - return render('compare/compare_diff.html') + return base.render('compare/compare_diff.html') diff --git a/kallithea/controllers/error.py b/kallithea/controllers/error.py --- a/kallithea/controllers/error.py +++ b/kallithea/controllers/error.py @@ -32,13 +32,13 @@ from tg import config, expose, request from tg import tmpl_context as c from tg.i18n import ugettext as _ -from kallithea.lib.base import BaseController +from kallithea.controllers import base log = logging.getLogger(__name__) -class ErrorController(BaseController): +class ErrorController(base.BaseController): """Generates error documents as and when they are required. The errorpage middleware renders /error/document when error diff --git a/kallithea/controllers/feed.py b/kallithea/controllers/feed.py --- a/kallithea/controllers/feed.py +++ b/kallithea/controllers/feed.py @@ -35,9 +35,9 @@ from tg.i18n import ugettext as _ import kallithea import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import feeds, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController from kallithea.lib.diffs import DiffProcessor from kallithea.lib.utils2 import asbool, fmt_date, safe_int, safe_str, shorter @@ -45,7 +45,7 @@ from kallithea.lib.utils2 import asbool, log = logging.getLogger(__name__) -class FeedController(BaseRepoController): +class FeedController(base.BaseRepoController): @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') diff --git a/kallithea/controllers/files.py b/kallithea/controllers/files.py --- a/kallithea/controllers/files.py +++ b/kallithea/controllers/files.py @@ -40,9 +40,9 @@ from webob.exc import HTTPFound, HTTPNot import kallithea import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib import diffs, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, jsonify, render from kallithea.lib.exceptions import NonRelativePathError from kallithea.lib.utils2 import asbool, convert_line_endings, detect_mode, safe_str from kallithea.lib.vcs.backends.base import EmptyChangeset @@ -60,7 +60,7 @@ from kallithea.model.scm import ScmModel log = logging.getLogger(__name__) -class FilesController(BaseRepoController): +class FilesController(base.BaseRepoController): def _before(self, *args, **kwargs): super(FilesController, self)._before(*args, **kwargs) @@ -179,7 +179,7 @@ class FilesController(BaseRepoController raise HTTPNotFound() if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('files/files_ypjax.html') + return base.render('files/files_ypjax.html') # TODO: tags and bookmarks? c.revision_options = [(c.changeset.raw_id, @@ -190,11 +190,11 @@ class FilesController(BaseRepoController c.revision_options += [('-', '-')] + \ [(n, prefix + b) for b, n in c.db_repo_scm_instance.closed_branches.items()] - return render('files/files.html') + return base.render('files/files.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def history(self, repo_name, revision, f_path): changeset = self.__get_cs(revision) _file = changeset.get_node(f_path) @@ -224,7 +224,7 @@ class FilesController(BaseRepoController c.authors = [] for a in set([x.author for x in _hist]): c.authors.append((author_email(a), h.person(a))) - return render('files/files_history_box.html') + return base.render('files/files_history_box.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -335,7 +335,7 @@ class FilesController(BaseRepoController raise HTTPFound(location=url('changeset_home', repo_name=c.repo_name, revision='tip')) - return render('files/files_delete.html') + return base.render('files/files_delete.html') @LoginRequired() @HasRepoPermissionLevelDecorator('write') @@ -393,7 +393,7 @@ class FilesController(BaseRepoController raise HTTPFound(location=url('changeset_home', repo_name=c.repo_name, revision='tip')) - return render('files/files_edit.html') + return base.render('files/files_edit.html') @LoginRequired() @HasRepoPermissionLevelDecorator('write') @@ -468,7 +468,7 @@ class FilesController(BaseRepoController raise HTTPFound(location=url('changeset_home', repo_name=c.repo_name, revision='tip')) - return render('files/files_add.html') + return base.render('files/files_add.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -645,7 +645,7 @@ class FilesController(BaseRepoController ignore_whitespace=ignore_whitespace_diff, line_context=diff_context_size) c.file_diff_data = [(fid, fid, op, a_path, node2.path, diff, st)] - return render('files/file_diff.html') + return base.render('files/file_diff.html') @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -693,7 +693,7 @@ class FilesController(BaseRepoController c.cs1 = c.changeset_1 c.cs2 = c.changeset_2 - return render('files/diff_2way.html') + return base.render('files/diff_2way.html') def _get_node_history(self, cs, f_path, changesets=None): """ @@ -736,7 +736,7 @@ class FilesController(BaseRepoController @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def nodelist(self, repo_name, revision, f_path): if request.environ.get('HTTP_X_PARTIAL_XHR'): cs = self.__get_cs(revision) diff --git a/kallithea/controllers/followers.py b/kallithea/controllers/followers.py --- a/kallithea/controllers/followers.py +++ b/kallithea/controllers/followers.py @@ -30,8 +30,8 @@ import logging from tg import request from tg import tmpl_context as c +from kallithea.controllers import base from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, render from kallithea.lib.page import Page from kallithea.lib.utils2 import safe_int from kallithea.model import db @@ -40,7 +40,7 @@ from kallithea.model import db log = logging.getLogger(__name__) -class FollowersController(BaseRepoController): +class FollowersController(base.BaseRepoController): @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') @@ -52,6 +52,6 @@ class FollowersController(BaseRepoContro c.followers_pager = Page(d, page=p, items_per_page=20) if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('/followers/followers_data.html') + return base.render('/followers/followers_data.html') - return render('/followers/followers.html') + return base.render('/followers/followers.html') diff --git a/kallithea/controllers/forks.py b/kallithea/controllers/forks.py --- a/kallithea/controllers/forks.py +++ b/kallithea/controllers/forks.py @@ -36,9 +36,9 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPFound, HTTPNotFound import kallithea +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import HasPermissionAnyDecorator, HasRepoPermissionLevel, HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, render from kallithea.lib.page import Page from kallithea.lib.utils2 import safe_int from kallithea.model import db @@ -50,7 +50,7 @@ from kallithea.model.scm import Availabl log = logging.getLogger(__name__) -class ForksController(BaseRepoController): +class ForksController(base.BaseRepoController): def __load_defaults(self): c.repo_groups = AvailableRepoGroupChoices('write') @@ -113,9 +113,9 @@ class ForksController(BaseRepoController c.forks_pager = Page(d, page=p, items_per_page=20) if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('/forks/forks_data.html') + return base.render('/forks/forks_data.html') - return render('/forks/forks.html') + return base.render('/forks/forks.html') @LoginRequired() @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository') @@ -128,7 +128,7 @@ class ForksController(BaseRepoController defaults = self.__load_data() return htmlfill.render( - render('forks/fork.html'), + base.render('forks/fork.html'), defaults=defaults, encoding="UTF-8", force_defaults=False) @@ -157,7 +157,7 @@ class ForksController(BaseRepoController task_id = task.task_id except formencode.Invalid as errors: return htmlfill.render( - render('forks/fork.html'), + base.render('forks/fork.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, diff --git a/kallithea/controllers/home.py b/kallithea/controllers/home.py --- a/kallithea/controllers/home.py +++ b/kallithea/controllers/home.py @@ -35,8 +35,8 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseController, jsonify, render from kallithea.lib.utils2 import safe_str from kallithea.model import db from kallithea.model.repo import RepoModel @@ -46,10 +46,10 @@ from kallithea.model.scm import UserGrou log = logging.getLogger(__name__) -class HomeController(BaseController): +class HomeController(base.BaseController): def about(self): - return render('/about.html') + return base.render('/about.html') @LoginRequired(allow_default_user=True) def index(self): @@ -62,10 +62,10 @@ class HomeController(BaseController): repo_groups_list=repo_groups_list, short_name=True) - return render('/index.html') + return base.render('/index.html') @LoginRequired(allow_default_user=True) - @jsonify + @base.jsonify def repo_switcher_data(self): if request.is_xhr: all_repos = db.Repository.query(sorted=True).all() @@ -109,7 +109,7 @@ class HomeController(BaseController): @LoginRequired(allow_default_user=True) @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def repo_refs_data(self, repo_name): repo = db.Repository.get_by_repo_name(repo_name).scm_instance res = [] @@ -144,7 +144,7 @@ class HomeController(BaseController): return data @LoginRequired() - @jsonify + @base.jsonify def users_and_groups_data(self): """ Returns 'results' with a list of users and user groups. diff --git a/kallithea/controllers/journal.py b/kallithea/controllers/journal.py --- a/kallithea/controllers/journal.py +++ b/kallithea/controllers/journal.py @@ -37,10 +37,10 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.controllers.admin.admin import _journal_filter from kallithea.lib import feeds, webutils from kallithea.lib.auth import LoginRequired -from kallithea.lib.base import BaseController, render from kallithea.lib.page import Page from kallithea.lib.utils2 import AttributeDict, safe_int from kallithea.model import db, meta @@ -55,7 +55,7 @@ ttl = "5" feed_nr = 20 -class JournalController(BaseController): +class JournalController(base.BaseController): def _before(self, *args, **kwargs): super(JournalController, self)._before(*args, **kwargs) @@ -178,7 +178,7 @@ class JournalController(BaseController): c.journal_day_aggregate = self._get_daily_aggregate(c.journal_pager) if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('journal/journal_data.html') + return base.render('journal/journal_data.html') repos_list = db.Repository.query(sorted=True) \ .filter_by(owner_id=request.authuser.user_id).all() @@ -187,7 +187,7 @@ class JournalController(BaseController): # data used to render the grid c.data = repos_data - return render('journal/journal.html') + return base.render('journal/journal.html') @LoginRequired() def journal_atom(self): @@ -250,9 +250,9 @@ class JournalController(BaseController): c.journal_day_aggregate = self._get_daily_aggregate(c.journal_pager) if request.environ.get('HTTP_X_PARTIAL_XHR'): - return render('journal/journal_data.html') + return base.render('journal/journal_data.html') - return render('journal/public_journal.html') + return base.render('journal/public_journal.html') @LoginRequired(allow_default_user=True) def public_journal_atom(self): diff --git a/kallithea/controllers/login.py b/kallithea/controllers/login.py --- a/kallithea/controllers/login.py +++ b/kallithea/controllers/login.py @@ -36,9 +36,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest, HTTPFound +from kallithea.controllers import base from kallithea.lib import webutils from kallithea.lib.auth import AuthUser, HasPermissionAnyDecorator -from kallithea.lib.base import BaseController, log_in_user, render from kallithea.lib.exceptions import UserCreationError from kallithea.lib.recaptcha import submit from kallithea.lib.webutils import url @@ -50,7 +50,7 @@ from kallithea.model.user import UserMod log = logging.getLogger(__name__) -class LoginController(BaseController): +class LoginController(base.BaseController): def _validate_came_from(self, came_from, _re=re.compile(r"/(?!/)[-!#$%&'()*+,./:;=?@_~0-9A-Za-z]*$")): @@ -89,7 +89,7 @@ class LoginController(BaseController): # remove password from filling in form again defaults.pop('password', None) return htmlfill.render( - render('/login.html'), + base.render('/login.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -103,7 +103,7 @@ class LoginController(BaseController): webutils.flash(e, 'error') else: # login_form already validated the password - now set the session cookie accordingly - auth_user = log_in_user(user, c.form_result['remember'], is_external_auth=False, ip_addr=request.ip_addr) + auth_user = base.log_in_user(user, c.form_result['remember'], is_external_auth=False, ip_addr=request.ip_addr) if auth_user: raise HTTPFound(location=c.came_from) webutils.flash(_('Authentication failed.'), 'error') @@ -113,7 +113,7 @@ class LoginController(BaseController): raise HTTPFound(location=c.came_from) # continue to show login to default user - return render('/login.html') + return base.render('/login.html') @HasPermissionAnyDecorator('hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate') @@ -151,7 +151,7 @@ class LoginController(BaseController): except formencode.Invalid as errors: return htmlfill.render( - render('/register.html'), + base.render('/register.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -164,7 +164,7 @@ class LoginController(BaseController): # Exception itself webutils.flash(e, 'error') - return render('/register.html') + return base.render('/register.html') def password_reset(self): settings = db.Setting.get_app_settings() @@ -193,14 +193,14 @@ class LoginController(BaseController): except formencode.Invalid as errors: return htmlfill.render( - render('/password_reset.html'), + base.render('/password_reset.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, encoding="UTF-8", force_defaults=False) - return render('/password_reset.html') + return base.render('/password_reset.html') def password_reset_confirmation(self): # This controller handles both GET and POST requests, though we @@ -213,14 +213,14 @@ class LoginController(BaseController): c.timestamp = request.params.get('timestamp') or '' c.token = request.params.get('token') or '' if not request.POST: - return render('/password_reset_confirmation.html') + return base.render('/password_reset_confirmation.html') form = PasswordResetConfirmationForm()() try: form_result = form.to_python(dict(request.POST)) except formencode.Invalid as errors: return htmlfill.render( - render('/password_reset_confirmation.html'), + base.render('/password_reset_confirmation.html'), defaults=errors.value, errors=errors.error_dict or {}, prefix_error=False, @@ -232,7 +232,7 @@ class LoginController(BaseController): form_result['token'], ): return htmlfill.render( - render('/password_reset_confirmation.html'), + base.render('/password_reset_confirmation.html'), defaults=form_result, errors={'token': _('Invalid password reset token')}, prefix_error=False, diff --git a/kallithea/controllers/pullrequests.py b/kallithea/controllers/pullrequests.py --- a/kallithea/controllers/pullrequests.py +++ b/kallithea/controllers/pullrequests.py @@ -36,10 +36,10 @@ from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest, HTTPForbidden, HTTPFound, HTTPNotFound import kallithea.lib.helpers as h +from kallithea.controllers import base from kallithea.controllers.changeset import create_cs_pr_comment, delete_cs_pr_comment from kallithea.lib import auth, diffs, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, jsonify, render from kallithea.lib.graphmod import graph_data from kallithea.lib.page import Page from kallithea.lib.utils2 import ascii_bytes, safe_bytes, safe_int @@ -69,7 +69,7 @@ def _get_reviewer(user_id): return user -class PullrequestsController(BaseRepoController): +class PullrequestsController(base.BaseRepoController): def _get_repo_refs(self, repo, rev=None, branch=None, branch_rev=None): """return a structure with scm repo's interesting changesets, suitable for @@ -211,7 +211,7 @@ class PullrequestsController(BaseRepoCon c.pullrequests_pager = Page(c.pull_requests, page=p, items_per_page=100, **url_params) - return render('/pullrequests/pullrequest_show_all.html') + return base.render('/pullrequests/pullrequest_show_all.html') @LoginRequired() def show_my(self): @@ -236,7 +236,7 @@ class PullrequestsController(BaseRepoCon else: c.participate_in_pull_requests_todo.append(pr) - return render('/pullrequests/pullrequest_show_my.html') + return base.render('/pullrequests/pullrequest_show_my.html') @LoginRequired() @HasRepoPermissionLevelDecorator('read') @@ -291,11 +291,11 @@ class PullrequestsController(BaseRepoCon for fork in org_repo.forks: c.a_repos.append((fork.repo_name, fork.repo_name)) - return render('/pullrequests/pullrequest.html') + return base.render('/pullrequests/pullrequest.html') @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def repo_info(self, repo_name): repo = c.db_repo refs, selected_ref = self._get_repo_refs(repo.scm_instance) @@ -432,7 +432,7 @@ class PullrequestsController(BaseRepoCon @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def delete(self, repo_name, pull_request_id): pull_request = db.PullRequest.get_or_404(pull_request_id) # only owner can delete it ! @@ -620,11 +620,11 @@ class PullrequestsController(BaseRepoCon c.is_ajax_preview = False c.ancestors = None # [c.a_rev] ... but that is shown in an other way - return render('/pullrequests/pullrequest_show.html') + return base.render('/pullrequests/pullrequest_show.html') @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def comment(self, repo_name, pull_request_id): pull_request = db.PullRequest.get_or_404(pull_request_id) allowed_to_change_status = self._is_allowed_to_change_status(pull_request) @@ -633,6 +633,6 @@ class PullrequestsController(BaseRepoCon @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def delete_comment(self, repo_name, comment_id): return delete_cs_pr_comment(repo_name, comment_id) diff --git a/kallithea/controllers/root.py b/kallithea/controllers/root.py --- a/kallithea/controllers/root.py +++ b/kallithea/controllers/root.py @@ -14,9 +14,9 @@ from tg import config from tgext.routes import RoutedController +from kallithea.controllers import base from kallithea.controllers.error import ErrorController from kallithea.controllers.routing import make_map -from kallithea.lib.base import BaseController # This is the main Kallithea entry point; TurboGears will forward all requests @@ -26,7 +26,7 @@ from kallithea.lib.base import BaseContr # The mapper is configured using routes defined in routing.py. This use of the # 'mapper' attribute is a feature of tgext.routes, which is activated by # inheriting from its RoutedController class. -class RootController(RoutedController, BaseController): +class RootController(RoutedController, base.BaseController): def __init__(self): self.mapper = make_map(config) diff --git a/kallithea/controllers/search.py b/kallithea/controllers/search.py --- a/kallithea/controllers/search.py +++ b/kallithea/controllers/search.py @@ -35,8 +35,8 @@ from whoosh.index import EmptyIndexError from whoosh.qparser import QueryParser, QueryParserError from whoosh.query import Phrase, Prefix +from kallithea.controllers import base from kallithea.lib.auth import LoginRequired -from kallithea.lib.base import BaseRepoController, render from kallithea.lib.indexers import CHGSET_IDX_NAME, CHGSETS_SCHEMA, IDX_NAME, SCHEMA, WhooshResultWrapper from kallithea.lib.page import Page from kallithea.lib.utils2 import safe_int @@ -46,7 +46,7 @@ from kallithea.model.repo import RepoMod log = logging.getLogger(__name__) -class SearchController(BaseRepoController): +class SearchController(base.BaseRepoController): @LoginRequired(allow_default_user=True) def index(self, repo_name=None): @@ -139,4 +139,4 @@ class SearchController(BaseRepoControlle c.runtime = _('An error occurred during search operation.') # Return a rendered template - return render('/search/search.html') + return base.render('/search/search.html') diff --git a/kallithea/controllers/summary.py b/kallithea/controllers/summary.py --- a/kallithea/controllers/summary.py +++ b/kallithea/controllers/summary.py @@ -38,9 +38,9 @@ from tg import tmpl_context as c from tg.i18n import ugettext as _ from webob.exc import HTTPBadRequest +from kallithea.controllers import base from kallithea.lib import ext_json, webutils from kallithea.lib.auth import HasRepoPermissionLevelDecorator, LoginRequired -from kallithea.lib.base import BaseRepoController, jsonify, render from kallithea.lib.conf import ALL_EXTS, ALL_READMES, LANGUAGES_EXTENSIONS_MAP from kallithea.lib.markup_renderer import MarkupRenderer from kallithea.lib.page import Page @@ -58,7 +58,7 @@ README_FILES = [''.join([x[0][0], x[1][0 key=lambda y:y[0][1] + y[1][1])] -class SummaryController(BaseRepoController): +class SummaryController(base.BaseRepoController): def __get_readme_data(self, db_repo): repo_name = db_repo.repo_name @@ -148,11 +148,11 @@ class SummaryController(BaseRepoControll c.enable_downloads = c.db_repo.enable_downloads c.readme_data, c.readme_file = \ self.__get_readme_data(c.db_repo) - return render('summary/summary.html') + return base.render('summary/summary.html') @LoginRequired() @HasRepoPermissionLevelDecorator('read') - @jsonify + @base.jsonify def repo_size(self, repo_name): if request.is_xhr: return c.db_repo._repo_size() @@ -209,4 +209,4 @@ class SummaryController(BaseRepoControll recurse_limit = 500 # don't recurse more than 500 times when parsing async_tasks.get_commits_stats(c.db_repo.repo_name, ts_min_y, ts_max_y, recurse_limit) - return render('summary/statistics.html') + return base.render('summary/statistics.html') diff --git a/scripts/deps.py b/scripts/deps.py --- a/scripts/deps.py +++ b/scripts/deps.py @@ -131,10 +131,10 @@ conftest normal_modules = set(''' kallithea +kallithea.controllers.base kallithea.lib kallithea.lib.auth kallithea.lib.auth_modules -kallithea.lib.base kallithea.lib.celerylib kallithea.lib.db_manage kallithea.lib.helpers