[Pysvnmanager-svn] SF.net SVN: pysvnmanager:[55] trunk
Status: Alpha
Brought to you by:
jiangx
From: <ji...@us...> - 2008-08-30 09:41:58
|
Revision: 55 http://pysvnmanager.svn.sourceforge.net/pysvnmanager/?rev=55&view=rev Author: jiangx Date: 2008-08-30 09:42:05 +0000 (Sat, 30 Aug 2008) Log Message: ----------- ------------------------------------------------------------------------ r118 | jiangxin | 2008-08-30 16:57:18 +0800 (Sat, 30 Aug 2008) | 1 line if svn swig binding not exist, ignore testcase ------------------------------------------------------------------------ r117 | jiangxin | 2008-08-30 16:33:53 +0800 (Sat, 30 Aug 2008) | 1 line function tests passed for new routes ------------------------------------------------------------------------ r113 | jiangxin | 2008-08-30 15:47:39 +0800 (Sat, 30 Aug 2008) | 1 line upgrade to 0.3.0; add requires; ------------------------------------------------------------------------ r112 | jiangxin | 2008-08-30 14:38:00 +0800 (Sat, 30 Aug 2008) | 1 line link_to from webhelpers.html is different with link_to from webhelpers.rails ------------------------------------------------------------------------ r108 | jiangxin | 2008-08-30 14:02:36 +0800 (Sat, 30 Aug 2008) | 1 line do not check against authz file using svn swig bidings if ImportError ------------------------------------------------------------------------ r106 | jiangxin | 2008-08-30 13:15:05 +0800 (Sat, 30 Aug 2008) | 1 line Babel upgrade to 0.9.4 ------------------------------------------------------------------------ r104 | jiangxin | 2008-08-30 00:00:31 +0800 (Sat, 30 Aug 2008) | 1 line scriptaculous and prototype no longer maintain by pylons ------------------------------------------------------------------------ r103 | jiangxin | 2008-08-29 23:59:50 +0800 (Fri, 29 Aug 2008) | 1 line bugfix: wrong tuple for role_list_opts ------------------------------------------------------------------------ r102 | jiangxin | 2008-08-29 23:37:49 +0800 (Fri, 29 Aug 2008) | 1 line new routing format ------------------------------------------------------------------------ r101 | jiangxin | 2008-08-29 23:00:42 +0800 (Fri, 29 Aug 2008) | 1 line import literal ------------------------------------------------------------------------ r100 | jiangxin | 2008-08-29 22:53:08 +0800 (Fri, 29 Aug 2008) | 1 line update template for pylons 0.9.7 ------------------------------------------------------------------------ r99 | jiangxin | 2008-08-29 21:50:12 +0800 (Fri, 29 Aug 2008) | 1 line webhelpers upgrade from 0.3 to 0.6 ------------------------------------------------------------------------ Modified Paths: -------------- trunk/MANIFEST.in trunk/development.ini trunk/docs/index.txt trunk/pySvnManager.egg-info/SOURCES.txt trunk/pySvnManager.egg-info/paster_plugins.txt trunk/pySvnManager.egg-info/requires.txt trunk/pysvnmanager/config/environment.py trunk/pysvnmanager/config/middleware.py trunk/pysvnmanager/config/routing.py trunk/pysvnmanager/controllers/error.py trunk/pysvnmanager/controllers/logs.py trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po trunk/pysvnmanager/i18n/pysvnmanager.pot trunk/pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po trunk/pysvnmanager/lib/app_globals.py trunk/pysvnmanager/lib/base.py trunk/pysvnmanager/lib/helpers.py trunk/pysvnmanager/model/svnauthz.py trunk/pysvnmanager/templates/base.mako trunk/pysvnmanager/templates/check/index.mako trunk/pysvnmanager/templates/repos/create.mako trunk/pysvnmanager/templates/repos/hooks.mako trunk/pysvnmanager/templates/repos/remove.mako trunk/pysvnmanager/templates/role/index.mako trunk/pysvnmanager/tests/__init__.py trunk/pysvnmanager/tests/functional/test_authz.py trunk/pysvnmanager/tests/functional/test_check.py trunk/pysvnmanager/tests/functional/test_login.py trunk/pysvnmanager/tests/functional/test_repos.py trunk/pysvnmanager/tests/functional/test_role.py trunk/pysvnmanager/tests/test_repos.py trunk/pysvnmanager/websetup.py trunk/setup.cfg trunk/setup.py Added Paths: ----------- trunk/ez_setup.py trunk/pysvnmanager/public/javascripts/ trunk/pysvnmanager/public/javascripts/builder.js trunk/pysvnmanager/public/javascripts/controls.js trunk/pysvnmanager/public/javascripts/dragdrop.js trunk/pysvnmanager/public/javascripts/effects.js trunk/pysvnmanager/public/javascripts/prototype.js trunk/pysvnmanager/public/javascripts/scriptaculous.js trunk/pysvnmanager/public/javascripts/slider.js trunk/pysvnmanager/public/javascripts/sound.js trunk/pysvnmanager/public/javascripts/unittest.js Modified: trunk/MANIFEST.in =================================================================== --- trunk/MANIFEST.in 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/MANIFEST.in 2008-08-30 09:42:05 UTC (rev 55) @@ -1,4 +1,6 @@ recursive-include pysvnmanager/public * recursive-include pysvnmanager/templates * -recursive-include pysvnmanager/config * +recursive-include pysvnmanager/config *.py *.in recursive-include pysvnmanager/i18n * +recursive-include pysvnmanager/hooks *.py +recursive-include pysvnmanager/hooks/init/hook* * Modified: trunk/development.ini =================================================================== --- trunk/development.ini 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/development.ini 2008-08-30 09:42:05 UTC (rev 55) @@ -63,7 +63,7 @@ # Logging configuration [loggers] -keys = root, pysvnmanager +keys = root, routes, pysvnmanager [handlers] keys = console @@ -75,6 +75,12 @@ level = INFO handlers = console +[logger_routes] +level = INFO +handlers = +qualname = routes.middleware +# "level = DEBUG" logs the route matched and routing variables. + [logger_pysvnmanager] level = DEBUG handlers = Modified: trunk/docs/index.txt =================================================================== --- trunk/docs/index.txt 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/docs/index.txt 2008-08-30 09:42:05 UTC (rev 55) @@ -8,5 +8,12 @@ setup.py pudge -For this to work you will need to download and install ``buildutils`` and -``pudge``. +For this to work you will need to download and install `buildutils`_, +`pudge`_, and `pygments`_. The ``pudge`` command is disabled by +default; to ativate it in your project, run:: + + setup.py addcommand -p buildutils.pudge_command + +.. _buildutils: http://pypi.python.org/pypi/buildutils +.. _pudge: http://pudge.lesscode.org/ +.. _pygments: http://pygments.org/ Added: trunk/ez_setup.py =================================================================== --- trunk/ez_setup.py (rev 0) +++ trunk/ez_setup.py 2008-08-30 09:42:05 UTC (rev 55) @@ -0,0 +1,272 @@ +#!python +"""Bootstrap setuptools installation + +If you want to use setuptools in your package's setup.py, just include this +file in the same directory with it, and add this to the top of your setup.py:: + + from ez_setup import use_setuptools + use_setuptools() + +If you want to require a specific version of setuptools, set a download +mirror, or use an alternate download directory, you can do so by supplying +the appropriate options to ``use_setuptools()``. + +This file can also be run as a script to install or upgrade setuptools. +""" +import sys +DEFAULT_VERSION = "0.6c8" +DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] + +md5_data = { + 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', + 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb', + 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b', + 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a', + 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618', + 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac', + 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5', + 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4', + 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c', + 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b', + 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27', + 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277', + 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa', + 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e', + 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e', + 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f', + 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2', + 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc', + 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167', + 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64', + 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d', + 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20', + 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab', + 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53', + 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2', + 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e', + 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372', + 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902', + 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de', + 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b', +} + +import sys, os + +def _validate_md5(egg_name, data): + if egg_name in md5_data: + from md5 import md5 + digest = md5(data).hexdigest() + if digest != md5_data[egg_name]: + print >>sys.stderr, ( + "md5 validation of %s failed! (Possible download problem?)" + % egg_name + ) + sys.exit(2) + return data + + +def use_setuptools( + version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, + download_delay=15 +): + """Automatically find/download setuptools and make it available on sys.path + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end with + a '/'). `to_dir` is the directory where setuptools will be downloaded, if + it is not already available. If `download_delay` is specified, it should + be the number of seconds that will be paused before initiating a download, + should one be required. If an older version of setuptools is installed, + this routine will print a message to ``sys.stderr`` and raise SystemExit in + an attempt to abort the calling script. + """ + was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules + def do_download(): + egg = download_setuptools(version, download_base, to_dir, download_delay) + sys.path.insert(0, egg) + import setuptools; setuptools.bootstrap_install_from = egg + try: + import pkg_resources + except ImportError: + return do_download() + try: + pkg_resources.require("setuptools>="+version); return + except pkg_resources.VersionConflict, e: + if was_imported: + print >>sys.stderr, ( + "The required version of setuptools (>=%s) is not available, and\n" + "can't be installed while this script is running. Please install\n" + " a more recent version first, using 'easy_install -U setuptools'." + "\n\n(Currently using %r)" + ) % (version, e.args[0]) + sys.exit(2) + else: + del pkg_resources, sys.modules['pkg_resources'] # reload ok + return do_download() + except pkg_resources.DistributionNotFound: + return do_download() + +def download_setuptools( + version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, + delay = 15 +): + """Download setuptools from a specified location and return its filename + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end + with a '/'). `to_dir` is the directory where the egg will be downloaded. + `delay` is the number of seconds to pause before an actual download attempt. + """ + import urllib2, shutil + egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3]) + url = download_base + egg_name + saveto = os.path.join(to_dir, egg_name) + src = dst = None + if not os.path.exists(saveto): # Avoid repeated downloads + try: + from distutils import log + if delay: + log.warn(""" +--------------------------------------------------------------------------- +This script requires setuptools version %s to run (even to display +help). I will attempt to download it for you (from +%s), but +you may need to enable firewall access for this script first. +I will start the download in %d seconds. + +(Note: if this machine does not have network access, please obtain the file + + %s + +and place it in this directory before rerunning this script.) +---------------------------------------------------------------------------""", + version, download_base, delay, url + ); from time import sleep; sleep(delay) + log.warn("Downloading %s", url) + src = urllib2.urlopen(url) + # Read/write all in one block, so we don't create a corrupt file + # if the download is interrupted. + data = _validate_md5(egg_name, src.read()) + dst = open(saveto,"wb"); dst.write(data) + finally: + if src: src.close() + if dst: dst.close() + return os.path.realpath(saveto) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +def main(argv, version=DEFAULT_VERSION): + """Install or upgrade setuptools and EasyInstall""" + try: + import setuptools + except ImportError: + egg = None + try: + egg = download_setuptools(version, delay=0) + sys.path.insert(0,egg) + from setuptools.command.easy_install import main + return main(list(argv)+[egg]) # we're done here + finally: + if egg and os.path.exists(egg): + os.unlink(egg) + else: + if setuptools.__version__ == '0.0.1': + print >>sys.stderr, ( + "You have an obsolete version of setuptools installed. Please\n" + "remove it from your system entirely before rerunning this script." + ) + sys.exit(2) + + req = "setuptools>="+version + import pkg_resources + try: + pkg_resources.require(req) + except pkg_resources.VersionConflict: + try: + from setuptools.command.easy_install import main + except ImportError: + from easy_install import main + main(list(argv)+[download_setuptools(delay=0)]) + sys.exit(0) # try to force an exit + else: + if argv: + from setuptools.command.easy_install import main + main(argv) + else: + print "Setuptools version",version,"or greater has been installed." + print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' + +def update_md5(filenames): + """Update our built-in md5 registry""" + + import re + from md5 import md5 + + for name in filenames: + base = os.path.basename(name) + f = open(name,'rb') + md5_data[base] = md5(f.read()).hexdigest() + f.close() + + data = [" %r: %r,\n" % it for it in md5_data.items()] + data.sort() + repl = "".join(data) + + import inspect + srcfile = inspect.getsourcefile(sys.modules[__name__]) + f = open(srcfile, 'rb'); src = f.read(); f.close() + + match = re.search("\nmd5_data = {\n([^}]+)}", src) + if not match: + print >>sys.stderr, "Internal error!" + sys.exit(2) + + src = src[:match.start(1)] + repl + src[match.end(1):] + f = open(srcfile,'w') + f.write(src) + f.close() + + +if __name__=='__main__': + if len(sys.argv)>2 and sys.argv[1]=='--md5update': + update_md5(sys.argv[2:]) + else: + main(sys.argv[1:]) + + + + + Modified: trunk/pySvnManager.egg-info/SOURCES.txt =================================================================== --- trunk/pySvnManager.egg-info/SOURCES.txt 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pySvnManager.egg-info/SOURCES.txt 2008-08-30 09:42:05 UTC (rev 55) @@ -1,6 +1,7 @@ MANIFEST.in README.txt development.ini +ez_setup.py init.d setup.cfg setup.py @@ -135,6 +136,15 @@ pysvnmanager/public/img/attention.png pysvnmanager/public/img/icon-error.png pysvnmanager/public/img/icon-info.png +pysvnmanager/public/javascripts/builder.js +pysvnmanager/public/javascripts/controls.js +pysvnmanager/public/javascripts/dragdrop.js +pysvnmanager/public/javascripts/effects.js +pysvnmanager/public/javascripts/prototype.js +pysvnmanager/public/javascripts/scriptaculous.js +pysvnmanager/public/javascripts/slider.js +pysvnmanager/public/javascripts/sound.js +pysvnmanager/public/javascripts/unittest.js pysvnmanager/templates/auth_failed.mako pysvnmanager/templates/base.mako pysvnmanager/templates/authz/index.mako Modified: trunk/pySvnManager.egg-info/paster_plugins.txt =================================================================== --- trunk/pySvnManager.egg-info/paster_plugins.txt 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pySvnManager.egg-info/paster_plugins.txt 2008-08-30 09:42:05 UTC (rev 55) @@ -1,3 +1,2 @@ -Pylons -WebHelpers PasteScript +Pylons Modified: trunk/pySvnManager.egg-info/requires.txt =================================================================== --- trunk/pySvnManager.egg-info/requires.txt 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pySvnManager.egg-info/requires.txt 2008-08-30 09:42:05 UTC (rev 55) @@ -1,2 +1,3 @@ -Pylons>=0.9.6.2 -docutils \ No newline at end of file +Pylons>=0.9.7rc1 +docutils +Babel \ No newline at end of file Modified: trunk/pysvnmanager/config/environment.py =================================================================== --- trunk/pysvnmanager/config/environment.py 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/config/environment.py 2008-08-30 09:42:05 UTC (rev 55) @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import os +from mako.lookup import TemplateLookup from pylons import config import pysvnmanager.lib.app_globals as app_globals @@ -20,21 +21,20 @@ templates=[os.path.join(root, 'templates')]) # Initialize config with the basic options - config.init_app(global_conf, app_conf, package='pysvnmanager', - template_engine='mako', paths=paths) + config.init_app(global_conf, app_conf, package='pysvnmanager', paths=paths) config['routes.map'] = make_map() - config['pylons.g'] = app_globals.Globals() + config['pylons.app_globals'] = app_globals.Globals() config['pylons.h'] = pysvnmanager.lib.helpers - # Customize templating options via this variable - tmpl_options = config['buffet.template_options'] - - # 设置缺省编码为 utf8 - tmpl_options['mako.input_encoding'] = 'UTF-8' - tmpl_options['mako.output_encoding'] = 'UTF-8' - #tmpl_options['mako.default_filters'] = ['decode.utf8'] - - + # Create the Mako TemplateLookup, with the default auto-escaping + config['pylons.app_globals'].mako_lookup = TemplateLookup( + directories=paths['templates'], + module_directory=os.path.join(app_conf['cache_dir'], 'templates'), + input_encoding='utf-8', output_encoding='utf-8', + imports=['from webhelpers.html import escape'], + ) + #default_filters=['escape']) + # CONFIGURATION OPTIONS HERE (note: all config options will override # any Pylons config options) Modified: trunk/pysvnmanager/config/middleware.py =================================================================== --- trunk/pysvnmanager/config/middleware.py 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/config/middleware.py 2008-08-30 09:42:05 UTC (rev 55) @@ -1,14 +1,13 @@ """Pylons middleware initialization""" +from beaker.middleware import CacheMiddleware, SessionMiddleware from paste.cascade import Cascade from paste.registry import RegistryManager from paste.urlparser import StaticURLParser from paste.deploy.converters import asbool - from pylons import config -from pylons.error import error_template -from pylons.middleware import error_mapper, ErrorDocuments, ErrorHandler, \ - StaticJavascripts +from pylons.middleware import ErrorHandler, StatusCodeRedirect from pylons.wsgiapp import PylonsApp +from routes.middleware import RoutesMiddleware from pysvnmanager.config.environment import load_environment @@ -26,32 +25,40 @@ another WSGI middleware. ``app_conf`` - The application's local configuration. Normally specified in the - [app:<name>] section of the Paste ini file (where <name> + The application's local configuration. Normally specified in + the [app:<name>] section of the Paste ini file (where <name> defaults to main). + """ # Configure the Pylons environment load_environment(global_conf, app_conf) # The Pylons WSGI app app = PylonsApp() - + # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) - + + # Routing/Session/Cache Middleware + app = RoutesMiddleware(app, config['routes.map']) + app = SessionMiddleware(app, config) + app = CacheMiddleware(app, config) + if asbool(full_stack): # Handle Python exceptions - app = ErrorHandler(app, global_conf, error_template=error_template, - **config['pylons.errorware']) + app = ErrorHandler(app, global_conf, **config['pylons.errorware']) # Display error documents for 401, 403, 404 status codes (and # 500 when debug is disabled) - app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf) + if asbool(config['debug']): + app = StatusCodeRedirect(app) + else: + app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) # Establish the Registry for this application app = RegistryManager(app) - # Static files - javascripts_app = StaticJavascripts() + # Static files (If running in production, and Apache or another web + # server is handling this static content, remove the following 3 lines) static_app = StaticURLParser(config['pylons.paths']['static_files']) - app = Cascade([static_app, javascripts_app, app]) + app = Cascade([static_app, app]) return app Modified: trunk/pysvnmanager/config/routing.py =================================================================== --- trunk/pysvnmanager/config/routing.py 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/config/routing.py 2008-08-30 09:42:05 UTC (rev 55) @@ -11,17 +11,20 @@ """Create, configure and return the routes Mapper""" map = Mapper(directory=config['pylons.paths']['controllers'], always_scan=config['debug']) - + map.minimization = False + # The ErrorController route (handles 404/500 error pages); it should # likely stay at the top, ensuring it can always be resolved - map.connect('error/:action/:id', controller='error') + map.connect('/error/{action}', controller='error') + map.connect('/error/{action}/{id}', controller='error') # CUSTOM ROUTES HERE - map.connect('', controller='check', action='index') - map.connect('login', controller='security', action='index') - map.connect('logout', controller='security', action='logout') + map.connect('/', controller='check', action='index') + map.connect('/login', controller='security', action='index') + map.connect('/logout', controller='security', action='logout') - map.connect(':controller/:action/:id') - map.connect('*url', controller='template', action='view') + map.connect('/{controller}') + map.connect('/{controller}/{action}') + map.connect('/{controller}/{action}/{id}') return map Modified: trunk/pysvnmanager/controllers/error.py =================================================================== --- trunk/pysvnmanager/controllers/error.py 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/controllers/error.py 2008-08-30 09:42:05 UTC (rev 55) @@ -20,9 +20,12 @@ import os.path from paste.urlparser import StaticURLParser +from pylons import request +from pylons.controllers.util import forward from pylons.middleware import error_document_template, media_path +from webhelpers.html.builder import literal -from pysvnmanager.lib.base import * +from pysvnmanager.lib.base import BaseController class ErrorController(BaseController): """Generates error documents as and when they are required. @@ -36,10 +39,12 @@ """ def document(self): """Render the error document""" + resp = request.environ.get('pylons.original_response') + content = literal(resp.body) or cgi.escape(request.GET.get('message')) page = error_document_template % \ dict(prefix=request.environ.get('SCRIPT_NAME', ''), - code=cgi.escape(request.params.get('code', '')), - message=cgi.escape(request.params.get('message', ''))) + code=cgi.escape(request.GET.get('code', str(resp.status_int))), + message=content) return page def img(self, id): Modified: trunk/pysvnmanager/controllers/logs.py =================================================================== --- trunk/pysvnmanager/controllers/logs.py 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/controllers/logs.py 2008-08-30 09:42:05 UTC (rev 55) @@ -87,8 +87,8 @@ 'who' : logs[i].get('author',''), 'when': logs[i].get('date',''), 'why' : h.link_to(logs[i].get('log',''), \ - h.url(action='view', id=logs[i].get('revision','')), \ - popup=['view_logs'] + h.url_for(action='view', id=logs[i].get('revision','')), \ + onclick="window.open(this.href,'view_logs','location=0,toolbar=0,width=780,height=580');return false;" ), } @@ -181,4 +181,4 @@ c.msg = log_message return render('/logs/rollback.mako') - \ No newline at end of file + Modified: trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po =================================================================== --- trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po 2008-08-30 09:42:05 UTC (rev 55) @@ -9,35 +9,35 @@ "Project-Id-Version: pysvnmanager 0.0.0\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "POT-Creation-Date: 2008-07-03 22:14+0800\n" -"PO-Revision-Date: 2008-08-28 19:02+0800\n" +"PO-Revision-Date: 2008-08-30 13:12+0800\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: en <LL...@li...>\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.2\n" +"Generated-By: Babel 0.9.4\n" -#: pysvnmanager/controllers/authz.py:43 +#: pysvnmanager/controllers/authz.py:60 #: pysvnmanager/templates/authz/index.mako:152 #: pysvnmanager/templates/check/index.mako:10 msgid "All users(with anon)" msgstr "" -#: pysvnmanager/controllers/authz.py:44 +#: pysvnmanager/controllers/authz.py:61 #: pysvnmanager/templates/authz/index.mako:154 #: pysvnmanager/templates/check/index.mako:11 msgid "Known users" msgstr "" -#: pysvnmanager/controllers/authz.py:45 +#: pysvnmanager/controllers/authz.py:62 #: pysvnmanager/templates/authz/index.mako:156 #: pysvnmanager/templates/check/index.mako:12 msgid "Anonymous" msgstr "" -#: pysvnmanager/controllers/authz.py:50 pysvnmanager/controllers/role.py:50 -#: pysvnmanager/controllers/role.py:70 +#: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 +#: pysvnmanager/controllers/role.py:87 #: pysvnmanager/templates/authz/index.mako:148 #: pysvnmanager/templates/check/index.mako:17 #: pysvnmanager/templates/role/index.mako:18 @@ -47,8 +47,8 @@ msgid "Group:" msgstr "" -#: pysvnmanager/controllers/authz.py:53 pysvnmanager/controllers/role.py:55 -#: pysvnmanager/controllers/role.py:72 +#: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 +#: pysvnmanager/controllers/role.py:89 #: pysvnmanager/templates/authz/index.mako:150 #: pysvnmanager/templates/check/index.mako:19 #: pysvnmanager/templates/role/index.mako:23 @@ -58,9 +58,9 @@ msgid "Alias:" msgstr "" -#: pysvnmanager/controllers/authz.py:68 pysvnmanager/controllers/authz.py:99 -#: pysvnmanager/controllers/check.py:89 pysvnmanager/controllers/repos.py:40 -#: pysvnmanager/controllers/repos.py:59 pysvnmanager/controllers/role.py:43 +#: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 +#: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 +#: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 #: pysvnmanager/templates/check/index.mako:9 #: pysvnmanager/templates/check/index.mako:23 #: pysvnmanager/templates/role/index.mako:12 @@ -68,231 +68,231 @@ msgid "Please choose..." msgstr "" -#: pysvnmanager/controllers/authz.py:160 +#: pysvnmanager/controllers/authz.py:177 #, python-format msgid "User %(user)s changed authz rules. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/authz.py:173 +#: pysvnmanager/controllers/authz.py:190 #, python-format msgid "Repository %s not exist." msgstr "" -#: pysvnmanager/controllers/authz.py:181 +#: pysvnmanager/controllers/authz.py:198 #, python-format msgid "Module %s not exist." msgstr "" -#: pysvnmanager/controllers/authz.py:187 +#: pysvnmanager/controllers/authz.py:204 msgid "You can not delete yourself from admin list." msgstr "" -#: pysvnmanager/controllers/authz.py:212 +#: pysvnmanager/controllers/authz.py:229 #, python-format msgid "User %(user)s delete authz rules. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/check.py:69 +#: pysvnmanager/controllers/check.py:86 #: pysvnmanager/templates/auth_failed.mako:3 msgid "Permission denied." msgstr "" -#: pysvnmanager/controllers/logs.py:50 +#: pysvnmanager/controllers/logs.py:68 msgid "Rev" msgstr "" -#: pysvnmanager/controllers/logs.py:51 +#: pysvnmanager/controllers/logs.py:69 msgid "Who" msgstr "" -#: pysvnmanager/controllers/logs.py:52 +#: pysvnmanager/controllers/logs.py:70 msgid "When" msgstr "" -#: pysvnmanager/controllers/logs.py:53 +#: pysvnmanager/controllers/logs.py:71 msgid "Why" msgstr "" -#: pysvnmanager/controllers/logs.py:54 +#: pysvnmanager/controllers/logs.py:72 msgid "Compare" msgstr "" -#: pysvnmanager/controllers/logs.py:97 +#: pysvnmanager/controllers/logs.py:115 msgid "Page: " msgstr "" -#: pysvnmanager/controllers/logs.py:133 +#: pysvnmanager/controllers/logs.py:151 msgid "Compares between" msgstr "" -#: pysvnmanager/controllers/logs.py:152 +#: pysvnmanager/controllers/logs.py:170 #, python-format msgid "Rollback successfully to revision: %s" msgstr "" -#: pysvnmanager/controllers/logs.py:161 +#: pysvnmanager/controllers/logs.py:179 #, python-format msgid "Rollback failed: %s" msgstr "" -#: pysvnmanager/controllers/repos.py:74 +#: pysvnmanager/controllers/repos.py:91 msgid "Installed hooks:" msgstr "" -#: pysvnmanager/controllers/repos.py:80 +#: pysvnmanager/controllers/repos.py:97 msgid "Id" msgstr "" -#: pysvnmanager/controllers/repos.py:81 +#: pysvnmanager/controllers/repos.py:98 msgid "Plugin name" msgstr "" -#: pysvnmanager/controllers/repos.py:82 -#: pysvnmanager/hooks/plugins/__init__.py:314 +#: pysvnmanager/controllers/repos.py:99 +#: pysvnmanager/hooks/plugins/__init__.py:330 msgid "Type" msgstr "" -#: pysvnmanager/controllers/repos.py:96 +#: pysvnmanager/controllers/repos.py:113 msgid "Remove selected hooks" msgstr "" -#: pysvnmanager/controllers/repos.py:119 +#: pysvnmanager/controllers/repos.py:136 #, python-format msgid "" "Apply plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:122 +#: pysvnmanager/controllers/repos.py:139 #, python-format msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:143 +#: pysvnmanager/controllers/repos.py:160 #, python-format msgid "" "Delete plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:146 +#: pysvnmanager/controllers/repos.py:163 #, python-format msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:149 +#: pysvnmanager/controllers/repos.py:166 #, python-format msgid "No plugin has been deleted for '%(repos)s'." msgstr "" -#: pysvnmanager/controllers/repos.py:158 +#: pysvnmanager/controllers/repos.py:175 #, python-format msgid "" "Create repository '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:161 +#: pysvnmanager/controllers/repos.py:178 #, python-format msgid "Create repository '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:174 +#: pysvnmanager/controllers/repos.py:191 #, python-format msgid "" "Delete repository '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:177 +#: pysvnmanager/controllers/repos.py:194 #, python-format msgid "Delete blank repository '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/role.py:103 +#: pysvnmanager/controllers/role.py:120 #, python-format msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:123 +#: pysvnmanager/controllers/role.py:140 #, python-format msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:145 +#: pysvnmanager/controllers/role.py:162 #, python-format msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:165 +#: pysvnmanager/controllers/role.py:182 #, python-format msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" msgstr "" -#: pysvnmanager/controllers/security.py:34 +#: pysvnmanager/controllers/security.py:52 #, python-format msgid "User %s logged in" msgstr "" -#: pysvnmanager/controllers/security.py:45 +#: pysvnmanager/controllers/security.py:63 #, python-format msgid "Login failed for user: %s" msgstr "" -#: pysvnmanager/controllers/security.py:53 +#: pysvnmanager/controllers/security.py:71 #, python-format msgid "User %s logged out" msgstr "" -#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:10 +#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:26 msgid "Allow revprop change" msgstr "" -#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:16 +#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:32 msgid "Allow user change commit-log or other rev-properties." msgstr "" -#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:19 +#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:35 msgid "" "Commit-log is the only rev-prop we allow to change. Because the changes " "of rev-prop can not be reverted back, administrator must setup email " "notification to record this irreversible action." msgstr "" -#: pysvnmanager/hooks/plugins/BugtrackMantis.py:10 +#: pysvnmanager/hooks/plugins/BugtrackMantis.py:26 msgid "Mantis bugtracking integration" msgstr "" -#: pysvnmanager/hooks/plugins/BugtrackMantis.py:16 +#: pysvnmanager/hooks/plugins/BugtrackMantis.py:32 msgid "" "Integration Subversion with Mantis bugtracking. If commit-log has proper " "format (contains bugid), it will change bug status and append commint-log" " and code differ as comment of bug status change." msgstr "" -#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:10 +#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:26 msgid "Subversion client version check (>1.5.0)" msgstr "" -#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:16 +#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:32 msgid "Check subversion client version. if version below 1.5.0, checkin denied." msgstr "" -#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:19 +#: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:35 msgid "" "SVN below 1.5.0 can not handle mergeinfo properly.It can mess up our " "automated merge tracking!" msgstr "" -#: pysvnmanager/hooks/plugins/CaseInsensitive.py:10 +#: pysvnmanager/hooks/plugins/CaseInsensitive.py:26 msgid "Detect case-insensitive filename clashes" msgstr "" -#: pysvnmanager/hooks/plugins/CaseInsensitive.py:16 +#: pysvnmanager/hooks/plugins/CaseInsensitive.py:32 msgid "A pre-commit hook to detect case-insensitive filename clashes." msgstr "" -#: pysvnmanager/hooks/plugins/CaseInsensitive.py:19 +#: pysvnmanager/hooks/plugins/CaseInsensitive.py:35 msgid "" "Subversion services may host on a filename case-sensitive OS,\n" "while client **may not** (Windows is case-insensitive). This may cause " @@ -304,83 +304,83 @@ " are detected.\n" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:27 msgid "Check commit log message" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:17 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:33 msgid "User must provide commit-log message when checkin." msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:50 -#: pysvnmanager/hooks/plugins/EmailNotify.py:73 -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:49 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:66 +#: pysvnmanager/hooks/plugins/EmailNotify.py:89 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 msgid "Current configuration" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:52 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:68 msgid "Commit log check is enabled." msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:54 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:70 msgid "Commit log check is disabled." msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:56 -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:95 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 msgid "Minimal size of commit log: " msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:61 -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:101 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 msgid "Pattern which commit log must match against: " msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:64 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:80 msgid "Pattern which commit log must **NOT** match against: " msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:83 -#: pysvnmanager/hooks/plugins/EmailNotify.py:97 -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 +#: pysvnmanager/hooks/plugins/EmailNotify.py:113 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 msgid "Fill this form" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:87 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:103 msgid "Enable commit log check: " msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:90 -#: pysvnmanager/hooks/plugins/EmailNotify.py:104 -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:80 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 +#: pysvnmanager/hooks/plugins/EmailNotify.py:120 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 msgid "Enable" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:92 -#: pysvnmanager/hooks/plugins/EmailNotify.py:106 -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:82 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 +#: pysvnmanager/hooks/plugins/EmailNotify.py:122 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 msgid "Disable" msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:107 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 msgid "Pattern which commit log must <b>NOT</b> match against: " msgstr "" -#: pysvnmanager/hooks/plugins/CommitLogCheck.py:140 +#: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 msgid "Commit log size must > 0." msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:11 +#: pysvnmanager/hooks/plugins/EmailNotify.py:27 msgid "Send email notify for commit event" msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:17 +#: pysvnmanager/hooks/plugins/EmailNotify.py:33 msgid "" "Send a notification email describing either a commit or a revprop-change " "action on a Subversion repository." msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:21 +#: pysvnmanager/hooks/plugins/EmailNotify.py:37 msgid "" "\n" "You must provide proper options to commit-email.pl using the\n" @@ -406,188 +406,188 @@ "--diff n Do not include diff in message (default: y)\n" msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:75 +#: pysvnmanager/hooks/plugins/EmailNotify.py:91 msgid "Email notify enabled." msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:77 +#: pysvnmanager/hooks/plugins/EmailNotify.py:93 msgid "Email notify disabled." msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:79 +#: pysvnmanager/hooks/plugins/EmailNotify.py:95 msgid "Parameters: " msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:101 +#: pysvnmanager/hooks/plugins/EmailNotify.py:117 msgid "Enable email notify." msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:109 +#: pysvnmanager/hooks/plugins/EmailNotify.py:125 msgid "Input email notify configurations: " msgstr "" -#: pysvnmanager/hooks/plugins/EmailNotify.py:139 -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:115 +#: pysvnmanager/hooks/plugins/EmailNotify.py:155 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 msgid "Wrong configuration." msgstr "" -#: pysvnmanager/hooks/plugins/EolStyleCheck.py:10 +#: pysvnmanager/hooks/plugins/EolStyleCheck.py:26 msgid "mime-type and eol-style check" msgstr "" -#: pysvnmanager/hooks/plugins/EolStyleCheck.py:16 +#: pysvnmanager/hooks/plugins/EolStyleCheck.py:32 msgid "New file must provide svn:eol-style if not binary file." msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:10 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:26 msgid "Subversion readonly mirror" msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:16 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:32 msgid "" "This subversion repository is a svnsync readonly mirror. Nobody can " "checkin, except the svnsync admin user." msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:20 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:36 msgid "" "Commit to the remote svn server, this repository is a readonly svn " "mirror.It is the svnsync admin's duty to synchronize svnsync server and " "mirror." msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:51 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:67 msgid "Readonly mirror enabled." msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:53 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:69 msgid "Readonly mirror disabled." msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:55 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 msgid "Admin user: " msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:77 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 msgid "Enable readonly mirror: " msgstr "" -#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:85 +#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 msgid "Svnsync administrator: " msgstr "" -#: pysvnmanager/hooks/plugins/__init__.py:95 +#: pysvnmanager/hooks/plugins/__init__.py:111 #, python-format msgid "repos '%s' not exist!" msgstr "" -#: pysvnmanager/hooks/plugins/__init__.py:152 +#: pysvnmanager/hooks/plugins/__init__.py:168 #, python-format msgid "Conflict: plugin '%s' is modified by others." msgstr "" -#: pysvnmanager/hooks/plugins/__init__.py:182 -#: pysvnmanager/hooks/plugins/__init__.py:209 -#: pysvnmanager/hooks/plugins/__init__.py:215 -#: pysvnmanager/hooks/plugins/__init__.py:234 -#: pysvnmanager/hooks/plugins/__init__.py:332 -#: pysvnmanager/hooks/plugins/__init__.py:339 +#: pysvnmanager/hooks/plugins/__init__.py:198 +#: pysvnmanager/hooks/plugins/__init__.py:225 +#: pysvnmanager/hooks/plugins/__init__.py:231 +#: pysvnmanager/hooks/plugins/__init__.py:250 #: pysvnmanager/hooks/plugins/__init__.py:348 +#: pysvnmanager/hooks/plugins/__init__.py:355 +#: pysvnmanager/hooks/plugins/__init__.py:364 msgid "Plugin not fully implemented." msgstr "" -#: pysvnmanager/hooks/plugins/__init__.py:313 +#: pysvnmanager/hooks/plugins/__init__.py:329 msgid "Name" msgstr "" -#: pysvnmanager/hooks/plugins/__init__.py:315 +#: pysvnmanager/hooks/plugins/__init__.py:331 msgid "Description" msgstr "" -#: pysvnmanager/model/repos.py:39 +#: pysvnmanager/model/repos.py:55 #, python-format msgid "Repos root does not exist: %s" msgstr "" -#: pysvnmanager/model/repos.py:68 +#: pysvnmanager/model/repos.py:84 #, python-format msgid "Repos %s already exists." msgstr "" -#: pysvnmanager/model/repos.py:139 +#: pysvnmanager/model/repos.py:166 #, python-format msgid "Repos %s is not a blank repository." msgstr "" -#: pysvnmanager/model/svnauthz.py:61 +#: pysvnmanager/model/svnauthz.py:77 msgid "Name is not given." msgstr "" -#: pysvnmanager/model/svnauthz.py:63 +#: pysvnmanager/model/svnauthz.py:79 msgid "Name is not string." msgstr "" -#: pysvnmanager/model/svnauthz.py:67 +#: pysvnmanager/model/svnauthz.py:83 #, python-format msgid "Name (%s) contains invalid characters." msgstr "" -#: pysvnmanager/model/svnauthz.py:475 +#: pysvnmanager/model/svnauthz.py:491 #, python-format msgid "Recursive group membership for %s" msgstr "" -#: pysvnmanager/model/svnauthz.py:569 +#: pysvnmanager/model/svnauthz.py:585 #, python-format msgid "Not a valid username: %s" msgstr "" -#: pysvnmanager/model/svnauthz.py:686 +#: pysvnmanager/model/svnauthz.py:702 #, python-format msgid "Group %s is referenced by group %s." msgstr "" -#: pysvnmanager/model/svnauthz.py:1232 +#: pysvnmanager/model/svnauthz.py:1248 msgid "Update failed! You are working on a out-of-date revision." msgstr "" -#: pysvnmanager/model/svnauthz.py:1486 pysvnmanager/model/svnauthz.py:1493 -#: pysvnmanager/model/svnauthz.py:1497 +#: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 +#: pysvnmanager/model/svnauthz.py:1513 #, python-format msgid "Unknown rule format: %s" msgstr "" -#: pysvnmanager/model/svnauthz.py:1511 +#: pysvnmanager/model/svnauthz.py:1527 #, python-format msgid "No module exist for %s:%s" msgstr "" -#: pysvnmanager/model/svnauthz.py:1621 +#: pysvnmanager/model/svnauthz.py:1637 #, python-format msgid "Alias %s is referenced by group %s." msgstr "" -#: pysvnmanager/model/svnauthz.py:1633 +#: pysvnmanager/model/svnauthz.py:1649 #, python-format msgid "%s is referenced by [%s]." msgstr "" -#: pysvnmanager/model/svnauthz.py:1769 +#: pysvnmanager/model/svnauthz.py:1785 #, python-format msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" msgstr "" -#: pysvnmanager/model/svnauthz.py:1771 +#: pysvnmanager/model/svnauthz.py:1787 #, python-format msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" msgstr "" -#: pysvnmanager/model/svnauthz.py:1773 +#: pysvnmanager/model/svnauthz.py:1789 #, python-format msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" msgstr "" -#: pysvnmanager/model/svnauthz.py:1813 +#: pysvnmanager/model/svnauthz.py:1829 #, python-format msgid "" "\n" @@ -599,7 +599,7 @@ "\n" msgstr "" -#: pysvnmanager/model/svnauthz.py:1832 +#: pysvnmanager/model/svnauthz.py:1848 #, python-format msgid "" "\n" @@ -763,23 +763,23 @@ msgstr "" #: pysvnmanager/templates/authz/index.mako:678 -#: pysvnmanager/templates/role/index.mako:711 +#: pysvnmanager/templates/role/index.mako:708 msgid "Save" msgstr "" #: pysvnmanager/templates/authz/index.mako:679 -#: pysvnmanager/templates/role/index.mako:712 +#: pysvnmanager/templates/role/index.mako:709 msgid "Delete" msgstr "" #: pysvnmanager/templates/authz/index.mako:680 -#: pysvnmanager/templates/role/index.mako:713 +#: pysvnmanager/templates/role/index.mako:710 msgid "Cancel" msgstr "" #: pysvnmanager/templates/check/index.mako:5 #: pysvnmanager/templates/check/index.mako:106 -#: pysvnmanager/templates/check/index.mako:176 +#: pysvnmanager/templates/check/index.mako:173 msgid "Check Permissions" msgstr "" @@ -811,17 +811,17 @@ msgid "Select username" msgstr "" -#: pysvnmanager/templates/check/index.mako:139 -#: pysvnmanager/templates/check/index.mako:152 -#: pysvnmanager/templates/check/index.mako:164 +#: pysvnmanager/templates/check/index.mako:138 +#: pysvnmanager/templates/check/index.mako:149 +#: pysvnmanager/templates/check/index.mako:161 msgid "Manual input" msgstr "" -#: pysvnmanager/templates/check/index.mako:146 +#: pysvnmanager/templates/check/index.mako:145 msgid "Select repository" msgstr "" -#: pysvnmanager/templates/check/index.mako:160 +#: pysvnmanager/templates/check/index.mako:157 msgid "Select module" msgstr "" @@ -949,47 +949,35 @@ msgid "Select a role name:" msgstr "" -#: pysvnmanager/templates/role/index.mako:636 +#: pysvnmanager/templates/role/index.mako:634 msgid "New Group" msgstr "" -#: pysvnmanager/templates/role/index.mako:637 +#: pysvnmanager/templates/role/index.mako:635 msgid "New Alias" msgstr "" -#: pysvnmanager/templates/role/index.mako:641 +#: pysvnmanager/templates/role/index.mako:639 msgid "New group name:" msgstr "" -#: pysvnmanager/templates/role/index.mako:645 +#: pysvnmanager/templates/role/index.mako:643 msgid "New alias name:" msgstr "" -#: pysvnmanager/templates/role/index.mako:657 +#: pysvnmanager/templates/role/index.mako:655 msgid "Members list" msgstr "" -#: pysvnmanager/templates/role/index.mako:662 +#: pysvnmanager/templates/role/index.mako:660 msgid "Other users" msgstr "" -#: pysvnmanager/templates/role/index.mako:681 +#: pysvnmanager/templates/role/index.mako:679 msgid "Ignore recursive" msgstr "" -#: pysvnmanager/templates/role/index.mako:693 +#: pysvnmanager/templates/role/index.mako:691 msgid "User name:" msgstr "" -#~ msgid "" -#~ "Subversion services may host on a filename case-sensitive OS,\n" -#~ "while client **may not** (Windows is " -#~ "case-insensitive). This may cause " -#~ "'clash'.\n" -#~ " \n" -#~ "- Detects new paths that 'clash' with existing, or other new, paths.\n" -#~ "- Ignores existings paths that already 'clash'\n" -#~ "- Exits with an error code, and a diagnostic on stderr, if 'clashes'\n" -#~ " are detected.\n" -#~ msgstr "" - Modified: trunk/pysvnmanager/i18n/pysvnmanager.pot =================================================================== --- trunk/pysvnmanager/i18n/pysvnmanager.pot 2008-08-30 09:29:41 UTC (rev 54) +++ trunk/pysvnmanager/i18n/pysvnmanager.pot 2008-08-30 09:42:05 UTC (rev 55) @@ -6,34 +6,34 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: pySvnManager 0.2.0\n" +"Project-Id-Version: pySvnManager 0.2.1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2008-08-28 19:02+0800\n" +"POT-Creation-Date: 2008-08-30 13:12+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 0.9.2\n" +"Generated-By: Babel 0.9.4\n" -#: pysvnmanager/controllers/authz.py:43 pysvnmanager/templates/authz/index.mako:152 +#: pysvnmanager/controllers/authz.py:60 pysvnmanager/templates/authz/index.mako:152 #: pysvnmanager/templates/check/index.mako:10 msgid "All users(with anon)" msgstr "" -#: pysvnmanager/controllers/authz.py:44 pysvnmanager/templates/authz/index.mako:154 +#: pysvnmanager/controllers/authz.py:61 pysvnmanager/templates/authz/index.mako:154 #: pysvnmanager/templates/check/index.mako:11 msgid "Known users" msgstr "" -#: pysvnmanager/controllers/authz.py:45 pysvnmanager/templates/authz/index.mako:156 +#: pysvnmanager/controllers/authz.py:62 pysvnmanager/templates/authz/index.mako:156 #: pysvnmanager/templates/check/index.mako:12 msgid "Anonymous" msgstr "" -#: pysvnmanager/controllers/authz.py:50 pysvnmanager/controllers/role.py:50 -#: pysvnmanager/controllers/role.py:70 pysvnmanager/templates/authz/index.mako:148 +#: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 +#: pysvnmanager/controllers/role.py:87 pysvnmanager/templates/authz/index.mako:148 #: pysvnmanager/templates/check/index.mako:17 #: pysvnmanager/templates/role/index.mako:18 #: pysvnmanager/templates/role/index.mako:37 @@ -42,8 +42,8 @@ msgid "Group:" msgstr "" -#: pysvnmanager/controllers/authz.py:53 pysvnmanager/controllers/role.py:55 -#: pysvnmanager/controllers/role.py:72 pysvnmanager/templates/authz/index.mako:150 +#: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 +#: pysvnmanager/controllers/role.py:89 pysvnmanager/templates/authz/index.mako:150 #: pysvnmanager/templates/check/index.mako:19 #: pysvnmanager/templates/role/index.mako:23 #: pysvnmanager/templates/role/index.mako:42 @@ -52,9 +52,9 @@ msgid "Alias:" msgstr "" -#: pysvnmanager/controllers/authz.py:68 pysvnmanager/controllers/authz.py:99 -#: pysvnmanager/controllers/check.py:89 pysvnmanager/controllers/repos.py:40 -#: pysvnmanager/controllers/repos.py:59 pysvnmanager/controllers/role.py:43 +#: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 +#: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 +#: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 #: pysvnmanager/templates/check/index.mako:9 #: pysvnmanager/templates/check/index.mako:23 #: pysvnmanager/templates/role/index.mako:12 @@ -62,229 +62,229 @@ msgid "Please choose..." msgstr "" -#: pysvnmanager/controllers/authz.py:160 +#: pysvnmanager/controllers/authz.py:177 #, python-format msgid "User %(user)s changed authz rules. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/authz.py:173 +#: pysvnmanager/controllers/authz.py:190 #, python-format msgid "Repository %s not exist." msgstr "" -#: pysvnmanager/controllers/authz.py:181 +#: pysvnmanager/controllers/authz.py:198 #, python-format msgid "Module %s not exist." msgstr "" -#: pysvnmanager/controllers/authz.py:187 +#: pysvnmanager/controllers/authz.py:204 msgid "You can not delete yourself from admin list." msgstr "" -#: pysvnmanager/controllers/authz.py:212 +#: pysvnmanager/controllers/authz.py:229 #, python-format msgid "User %(user)s delete authz rules. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/check.py:69 pysvnmanager/templates/auth_failed.mako:3 +#: pysvnmanager/controllers/check.py:86 pysvnmanager/templates/auth_failed.mako:3 msgid "Permission denied." msgstr "" -#: pysvnmanager/controllers/logs.py:50 +#: pysvnmanager/controllers/logs.py:68 msgid "Rev" msgstr "" -#: pysvnmanager/controllers/logs.py:51 +#: pysvnmanager/controllers/logs.py:69 msgid "Who" msgstr "" -#: pysvnmanager/controllers/logs.py:52 +#: pysvnmanager/controllers/logs.py:70 msgid "When" msgstr "" -#: pysvnmanager/controllers/logs.py:53 +#: pysvnmanager/controllers/logs.py:71 msgid "Why" msgstr "" -#: pysvnmanager/controllers/logs.py:54 +#: pysvnmanager/controllers/logs.py:72 msgid "Compare" msgstr "" -#: pysvnmanager/controllers/logs.py:97 +#: pysvnmanager/controllers/logs.py:115 msgid "Page: " msgstr "" -#: pysvnmanager/controllers/logs.py:133 +#: pysvnmanager/controllers/logs.py:151 msgid "Compares between" msgstr "" -#: pysvnmanager/controllers/logs.py:152 +#: pysvnmanager/controllers/logs.py:170 #, python-format msgid "Rollback successfully to revision: %s" msgstr "" -#: pysvnmanager/controllers/logs.py:161 +#: pysvnmanager/controllers/logs.py:179 #, python-format msgid "Rollback failed: %s" msgstr "" -#: pysvnmanager/controllers/repos.py:74 +#: pysvnmanager/controllers/repos.py:91 msgid "Installed hooks:" msgstr "" -#: pysvnmanager/controllers/repos.py:80 +#: pysvnmanager/controllers/repos.py:97 msgid "Id" msgstr "" -#: pysvnmanager/controllers/repos.py:81 +#: pysvnmanager/controllers/repos.py:98 msgid "Plugin name" msgstr "" -#: pysvnmanager/controllers/repos.py:82 pysvnmanager/hooks/plugins/__init__.py:314 +#: pysvnmanager/controllers/repos.py:99 pysvnmanager/hooks/plugins/__init__.py:330 msgid "Type" msgstr "" -#: pysvnmanager/controllers/repos.py:96 +#: pysvnmanager/controllers/repos.py:113 msgid "Remove selected hooks" msgstr "" -#: pysvnmanager/controllers/repos.py:119 +#: pysvnmanager/controllers/repos.py:136 #, python-format msgid "" "Apply plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:122 +#: pysvnmanager/controllers/repos.py:139 #, python-format msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:143 +#: pysvnmanager/controllers/repos.py:160 #, python-format msgid "" "Delete plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:146 +#: pysvnmanager/controllers/repos.py:163 #, python-format msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:149 +#: pysvnmanager/controllers/repos.py:166 #, python-format msgid "No plugin has been deleted for '%(repos)s'." msgstr "" -#: pysvnmanager/controllers/repos.py:158 +#: pysvnmanager/controllers/repos.py:175 #, python-format msgid "" "Create repository '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:161 +#: pysvnmanager/controllers/repos.py:178 #, python-format msgid "Create repository '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/repos.py:174 +#: pysvnmanager/controllers/repos.py:191 #, python-format msgid "" "Delete repository '%(repos)s' Failed. Error message:<br>\n" "%(msg)s" msgstr "" -#: pysvnmanager/controllers/repos.py:177 +#: pysvnmanager/controllers/repos.py:194 #, python-format msgid "Delete blank repository '%(repos)s' success." msgstr "" -#: pysvnmanager/controllers/role.py:103 +#: pysvnmanager/controllers/role.py:120 #, python-format msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:123 +#: pysvnmanager/controllers/role.py:140 #, python-format msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:145 +#: pysvnmanager/controllers/role.py:162 #, python-format msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" msgstr "" -#: pysvnmanager/controllers/role.py:165 +#: pysvnmanager/controllers/role.py:182 #, python-format msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" msgstr "" -#: pysvnmanager/controllers/security.py:34 +#: pysvnmanager/controllers/security.py:52 #, python-format msgid "User %s logged in" msgstr "" -#: pysvnmanager/controllers/security.py:45 +#: pysvnmanager/controllers/security.py:63 #, python-format msgid "Login failed for user: %s" msgstr "" -#: pysvnmanager/controllers/security.py:53 +#: pysvnmanager/controllers/security.py:71 #, python-format msgid "User %s logged out" msgstr "" -#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:10 +#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:26 msgid "Allow revprop change" msgstr "" -#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:16 +#: pysvnmanager/hooks/plugins/AllowRevpropChange.py:32 msgid "Allow us... [truncated message content] |