Changeset 55
- Timestamp:
- 2008年08月30日 17时42分05秒 (4 years ago)
- Location:
- trunk
- Files:
-
- 11 added
- 34 modified
-
MANIFEST.in (modified) (1 diff)
-
development.ini (modified) (2 diffs)
-
docs/index.txt (modified) (1 diff)
-
ez_setup.py (added)
-
pySvnManager.egg-info/SOURCES.txt (modified) (2 diffs)
-
pySvnManager.egg-info/paster_plugins.txt (modified) (1 diff)
-
pySvnManager.egg-info/requires.txt (modified) (1 diff)
-
pysvnmanager/config/environment.py (modified) (2 diffs)
-
pysvnmanager/config/middleware.py (modified) (3 diffs)
-
pysvnmanager/config/routing.py (modified) (1 diff)
-
pysvnmanager/controllers/error.py (modified) (2 diffs)
-
pysvnmanager/controllers/logs.py (modified) (1 diff)
-
pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po (modified) (25 diffs)
-
pysvnmanager/i18n/pysvnmanager.pot (modified) (22 diffs)
-
pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po (modified) (24 diffs)
-
pysvnmanager/lib/app_globals.py (modified) (1 diff)
-
pysvnmanager/lib/base.py (modified) (2 diffs)
-
pysvnmanager/lib/helpers.py (modified) (1 diff)
-
pysvnmanager/model/svnauthz.py (modified) (1 diff)
-
pysvnmanager/public/javascripts (added)
-
pysvnmanager/public/javascripts/builder.js (added)
-
pysvnmanager/public/javascripts/controls.js (added)
-
pysvnmanager/public/javascripts/dragdrop.js (added)
-
pysvnmanager/public/javascripts/effects.js (added)
-
pysvnmanager/public/javascripts/prototype.js (added)
-
pysvnmanager/public/javascripts/scriptaculous.js (added)
-
pysvnmanager/public/javascripts/slider.js (added)
-
pysvnmanager/public/javascripts/sound.js (added)
-
pysvnmanager/public/javascripts/unittest.js (added)
-
pysvnmanager/templates/base.mako (modified) (1 diff)
-
pysvnmanager/templates/check/index.mako (modified) (5 diffs)
-
pysvnmanager/templates/repos/create.mako (modified) (1 diff)
-
pysvnmanager/templates/repos/hooks.mako (modified) (3 diffs)
-
pysvnmanager/templates/repos/remove.mako (modified) (1 diff)
-
pysvnmanager/templates/role/index.mako (modified) (4 diffs)
-
pysvnmanager/tests/__init__.py (modified) (3 diffs)
-
pysvnmanager/tests/functional/test_authz.py (modified) (12 diffs)
-
pysvnmanager/tests/functional/test_check.py (modified) (6 diffs)
-
pysvnmanager/tests/functional/test_login.py (modified) (2 diffs)
-
pysvnmanager/tests/functional/test_repos.py (modified) (3 diffs)
-
pysvnmanager/tests/functional/test_role.py (modified) (13 diffs)
-
pysvnmanager/tests/test_repos.py (modified) (1 diff)
-
pysvnmanager/websetup.py (modified) (1 diff)
-
setup.cfg (modified) (1 diff)
-
setup.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/MANIFEST.in
r4 r55 1 1 recursive-include pysvnmanager/public * 2 2 recursive-include pysvnmanager/templates * 3 recursive-include pysvnmanager/config * 3 recursive-include pysvnmanager/config *.py *.in 4 4 recursive-include pysvnmanager/i18n * 5 recursive-include pysvnmanager/hooks *.py 6 recursive-include pysvnmanager/hooks/init/hook* * -
trunk/development.ini
r45 r55 64 64 # Logging configuration 65 65 [loggers] 66 keys = root, pysvnmanager66 keys = root, routes, pysvnmanager 67 67 68 68 [handlers] … … 75 75 level = INFO 76 76 handlers = console 77 78 [logger_routes] 79 level = INFO 80 handlers = 81 qualname = routes.middleware 82 # "level = DEBUG" logs the route matched and routing variables. 77 83 78 84 [logger_pysvnmanager] -
trunk/docs/index.txt
r4 r55 9 9 setup.py pudge 10 10 11 For this to work you will need to download and install ``buildutils`` and 12 ``pudge``. 11 For this to work you will need to download and install `buildutils`_, 12 `pudge`_, and `pygments`_. The ``pudge`` command is disabled by 13 default; to ativate it in your project, run:: 14 15 setup.py addcommand -p buildutils.pudge_command 16 17 .. _buildutils: http://pypi.python.org/pypi/buildutils 18 .. _pudge: http://pudge.lesscode.org/ 19 .. _pygments: http://pygments.org/ -
trunk/pySvnManager.egg-info/SOURCES.txt
r48 r55 2 2 README.txt 3 3 development.ini 4 ez_setup.py 4 5 init.d 5 6 setup.cfg … … 136 137 pysvnmanager/public/img/icon-error.png 137 138 pysvnmanager/public/img/icon-info.png 139 pysvnmanager/public/javascripts/builder.js 140 pysvnmanager/public/javascripts/controls.js 141 pysvnmanager/public/javascripts/dragdrop.js 142 pysvnmanager/public/javascripts/effects.js 143 pysvnmanager/public/javascripts/prototype.js 144 pysvnmanager/public/javascripts/scriptaculous.js 145 pysvnmanager/public/javascripts/slider.js 146 pysvnmanager/public/javascripts/sound.js 147 pysvnmanager/public/javascripts/unittest.js 138 148 pysvnmanager/templates/auth_failed.mako 139 149 pysvnmanager/templates/base.mako -
trunk/pySvnManager.egg-info/paster_plugins.txt
r6 r55 1 PasteScript 1 2 Pylons 2 WebHelpers3 PasteScript -
trunk/pySvnManager.egg-info/requires.txt
r49 r55 1 Pylons>=0.9. 6.21 Pylons>=0.9.7rc1 2 2 docutils 3 Babel -
trunk/pysvnmanager/config/environment.py
r4 r55 3 3 import os 4 4 5 from mako.lookup import TemplateLookup 5 6 from pylons import config 6 7 … … 21 22 22 23 # Initialize config with the basic options 23 config.init_app(global_conf, app_conf, package='pysvnmanager', 24 template_engine='mako', paths=paths) 24 config.init_app(global_conf, app_conf, package='pysvnmanager', paths=paths) 25 25 26 26 config['routes.map'] = make_map() 27 config['pylons. g'] = app_globals.Globals()27 config['pylons.app_globals'] = app_globals.Globals() 28 28 config['pylons.h'] = pysvnmanager.lib.helpers 29 29 30 # C ustomize templating options via this variable31 tmpl_options = config['buffet.template_options']32 33 # 设置缺省编码为 utf834 tmpl_options['mako.input_encoding'] = 'UTF-8'35 tmpl_options['mako.output_encoding'] = 'UTF-8'36 #tmpl_options['mako.default_filters'] = ['decode.utf8']37 38 30 # Create the Mako TemplateLookup, with the default auto-escaping 31 config['pylons.app_globals'].mako_lookup = TemplateLookup( 32 directories=paths['templates'], 33 module_directory=os.path.join(app_conf['cache_dir'], 'templates'), 34 input_encoding='utf-8', output_encoding='utf-8', 35 imports=['from webhelpers.html import escape'], 36 ) 37 #default_filters=['escape']) 38 39 39 # CONFIGURATION OPTIONS HERE (note: all config options will override 40 40 # any Pylons config options) -
trunk/pysvnmanager/config/middleware.py
r4 r55 1 1 """Pylons middleware initialization""" 2 from beaker.middleware import CacheMiddleware, SessionMiddleware 2 3 from paste.cascade import Cascade 3 4 from paste.registry import RegistryManager 4 5 from paste.urlparser import StaticURLParser 5 6 from paste.deploy.converters import asbool 6 7 7 from pylons import config 8 from pylons.error import error_template 9 from pylons.middleware import error_mapper, ErrorDocuments, ErrorHandler, \ 10 StaticJavascripts 8 from pylons.middleware import ErrorHandler, StatusCodeRedirect 11 9 from pylons.wsgiapp import PylonsApp 10 from routes.middleware import RoutesMiddleware 12 11 13 12 from pysvnmanager.config.environment import load_environment … … 27 26 28 27 ``app_conf`` 29 The application's local configuration. Normally specified in the30 [app:<name>] section of the Paste ini file (where <name>28 The application's local configuration. Normally specified in 29 the [app:<name>] section of the Paste ini file (where <name> 31 30 defaults to main). 31 32 32 """ 33 33 # Configure the Pylons environment … … 36 36 # The Pylons WSGI app 37 37 app = PylonsApp() 38 38 39 39 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) 40 40 41 # Routing/Session/Cache Middleware 42 app = RoutesMiddleware(app, config['routes.map']) 43 app = SessionMiddleware(app, config) 44 app = CacheMiddleware(app, config) 45 41 46 if asbool(full_stack): 42 47 # Handle Python exceptions 43 app = ErrorHandler(app, global_conf, error_template=error_template, 44 **config['pylons.errorware']) 48 app = ErrorHandler(app, global_conf, **config['pylons.errorware']) 45 49 46 50 # Display error documents for 401, 403, 404 status codes (and 47 51 # 500 when debug is disabled) 48 app = ErrorDocuments(app, global_conf, mapper=error_mapper, **app_conf) 52 if asbool(config['debug']): 53 app = StatusCodeRedirect(app) 54 else: 55 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) 49 56 50 57 # Establish the Registry for this application 51 58 app = RegistryManager(app) 52 59 53 # Static files 54 javascripts_app = StaticJavascripts()60 # Static files (If running in production, and Apache or another web 61 # server is handling this static content, remove the following 3 lines) 55 62 static_app = StaticURLParser(config['pylons.paths']['static_files']) 56 app = Cascade([static_app, javascripts_app,app])63 app = Cascade([static_app, app]) 57 64 return app -
trunk/pysvnmanager/config/routing.py
r2 r55 12 12 map = Mapper(directory=config['pylons.paths']['controllers'], 13 13 always_scan=config['debug']) 14 14 map.minimization = False 15 15 16 # The ErrorController route (handles 404/500 error pages); it should 16 17 # likely stay at the top, ensuring it can always be resolved 17 map.connect('error/:action/:id', controller='error') 18 map.connect('/error/{action}', controller='error') 19 map.connect('/error/{action}/{id}', controller='error') 18 20 19 21 # CUSTOM ROUTES HERE 20 map.connect(' ', controller='check', action='index')21 map.connect(' login', controller='security', action='index')22 map.connect(' logout', controller='security', action='logout')22 map.connect('/', controller='check', action='index') 23 map.connect('/login', controller='security', action='index') 24 map.connect('/logout', controller='security', action='logout') 23 25 24 map.connect(':controller/:action/:id') 25 map.connect('*url', controller='template', action='view') 26 map.connect('/{controller}') 27 map.connect('/{controller}/{action}') 28 map.connect('/{controller}/{action}/{id}') 26 29 27 30 return map -
trunk/pysvnmanager/controllers/error.py
r50 r55 21 21 22 22 from paste.urlparser import StaticURLParser 23 from pylons import request 24 from pylons.controllers.util import forward 23 25 from pylons.middleware import error_document_template, media_path 26 from webhelpers.html.builder import literal 24 27 25 from pysvnmanager.lib.base import *28 from pysvnmanager.lib.base import BaseController 26 29 27 30 class ErrorController(BaseController): … … 37 40 def document(self): 38 41 """Render the error document""" 42 resp = request.environ.get('pylons.original_response') 43 content = literal(resp.body) or cgi.escape(request.GET.get('message')) 39 44 page = error_document_template % \ 40 45 dict(prefix=request.environ.get('SCRIPT_NAME', ''), 41 code=cgi.escape(request. params.get('code', '')),42 message=c gi.escape(request.params.get('message', '')))46 code=cgi.escape(request.GET.get('code', str(resp.status_int))), 47 message=content) 43 48 return page 44 49 -
trunk/pysvnmanager/controllers/logs.py
r50 r55 88 88 'when': logs[i].get('date',''), 89 89 'why' : h.link_to(logs[i].get('log',''), \ 90 h.url (action='view', id=logs[i].get('revision','')), \91 popup=['view_logs']90 h.url_for(action='view', id=logs[i].get('revision','')), \ 91 onclick="window.open(this.href,'view_logs','location=0,toolbar=0,width=780,height=580');return false;" 92 92 ), 93 93 } -
trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po
r47 r55 10 10 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 11 11 "POT-Creation-Date: 2008-07-03 22:14+0800\n" 12 "PO-Revision-Date: 2008-08- 28 19:02+0800\n"12 "PO-Revision-Date: 2008-08-30 13:12+0800\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 14 "Language-Team: en <LL@li.org>\n" … … 17 17 "Content-Type: text/plain; charset=utf-8\n" 18 18 "Content-Transfer-Encoding: 8bit\n" 19 "Generated-By: Babel 0.9. 2\n"20 21 #: pysvnmanager/controllers/authz.py: 4319 "Generated-By: Babel 0.9.4\n" 20 21 #: pysvnmanager/controllers/authz.py:60 22 22 #: pysvnmanager/templates/authz/index.mako:152 23 23 #: pysvnmanager/templates/check/index.mako:10 … … 25 25 msgstr "" 26 26 27 #: pysvnmanager/controllers/authz.py: 4427 #: pysvnmanager/controllers/authz.py:61 28 28 #: pysvnmanager/templates/authz/index.mako:154 29 29 #: pysvnmanager/templates/check/index.mako:11 … … 31 31 msgstr "" 32 32 33 #: pysvnmanager/controllers/authz.py: 4533 #: pysvnmanager/controllers/authz.py:62 34 34 #: pysvnmanager/templates/authz/index.mako:156 35 35 #: pysvnmanager/templates/check/index.mako:12 … … 37 37 msgstr "" 38 38 39 #: pysvnmanager/controllers/authz.py: 50 pysvnmanager/controllers/role.py:5040 #: pysvnmanager/controllers/role.py: 7039 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 40 #: pysvnmanager/controllers/role.py:87 41 41 #: pysvnmanager/templates/authz/index.mako:148 42 42 #: pysvnmanager/templates/check/index.mako:17 … … 48 48 msgstr "" 49 49 50 #: pysvnmanager/controllers/authz.py: 53 pysvnmanager/controllers/role.py:5551 #: pysvnmanager/controllers/role.py: 7250 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 51 #: pysvnmanager/controllers/role.py:89 52 52 #: pysvnmanager/templates/authz/index.mako:150 53 53 #: pysvnmanager/templates/check/index.mako:19 … … 59 59 msgstr "" 60 60 61 #: pysvnmanager/controllers/authz.py: 68 pysvnmanager/controllers/authz.py:9962 #: pysvnmanager/controllers/check.py: 89 pysvnmanager/controllers/repos.py:4063 #: pysvnmanager/controllers/repos.py: 59 pysvnmanager/controllers/role.py:4361 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 62 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 63 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 64 64 #: pysvnmanager/templates/check/index.mako:9 65 65 #: pysvnmanager/templates/check/index.mako:23 … … 69 69 msgstr "" 70 70 71 #: pysvnmanager/controllers/authz.py:1 6071 #: pysvnmanager/controllers/authz.py:177 72 72 #, python-format 73 73 msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 74 74 msgstr "" 75 75 76 #: pysvnmanager/controllers/authz.py:1 7376 #: pysvnmanager/controllers/authz.py:190 77 77 #, python-format 78 78 msgid "Repository %s not exist." 79 79 msgstr "" 80 80 81 #: pysvnmanager/controllers/authz.py:1 8181 #: pysvnmanager/controllers/authz.py:198 82 82 #, python-format 83 83 msgid "Module %s not exist." 84 84 msgstr "" 85 85 86 #: pysvnmanager/controllers/authz.py: 18786 #: pysvnmanager/controllers/authz.py:204 87 87 msgid "You can not delete yourself from admin list." 88 88 msgstr "" 89 89 90 #: pysvnmanager/controllers/authz.py:2 1290 #: pysvnmanager/controllers/authz.py:229 91 91 #, python-format 92 92 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 93 93 msgstr "" 94 94 95 #: pysvnmanager/controllers/check.py: 6995 #: pysvnmanager/controllers/check.py:86 96 96 #: pysvnmanager/templates/auth_failed.mako:3 97 97 msgid "Permission denied." 98 98 msgstr "" 99 99 100 #: pysvnmanager/controllers/logs.py: 50100 #: pysvnmanager/controllers/logs.py:68 101 101 msgid "Rev" 102 102 msgstr "" 103 103 104 #: pysvnmanager/controllers/logs.py: 51104 #: pysvnmanager/controllers/logs.py:69 105 105 msgid "Who" 106 106 msgstr "" 107 107 108 #: pysvnmanager/controllers/logs.py: 52108 #: pysvnmanager/controllers/logs.py:70 109 109 msgid "When" 110 110 msgstr "" 111 111 112 #: pysvnmanager/controllers/logs.py: 53112 #: pysvnmanager/controllers/logs.py:71 113 113 msgid "Why" 114 114 msgstr "" 115 115 116 #: pysvnmanager/controllers/logs.py: 54116 #: pysvnmanager/controllers/logs.py:72 117 117 msgid "Compare" 118 118 msgstr "" 119 119 120 #: pysvnmanager/controllers/logs.py: 97120 #: pysvnmanager/controllers/logs.py:115 121 121 msgid "Page: " 122 122 msgstr "" 123 123 124 #: pysvnmanager/controllers/logs.py:1 33124 #: pysvnmanager/controllers/logs.py:151 125 125 msgid "Compares between" 126 126 msgstr "" 127 127 128 #: pysvnmanager/controllers/logs.py:1 52128 #: pysvnmanager/controllers/logs.py:170 129 129 #, python-format 130 130 msgid "Rollback successfully to revision: %s" 131 131 msgstr "" 132 132 133 #: pysvnmanager/controllers/logs.py:1 61133 #: pysvnmanager/controllers/logs.py:179 134 134 #, python-format 135 135 msgid "Rollback failed: %s" 136 136 msgstr "" 137 137 138 #: pysvnmanager/controllers/repos.py: 74138 #: pysvnmanager/controllers/repos.py:91 139 139 msgid "Installed hooks:" 140 140 msgstr "" 141 141 142 #: pysvnmanager/controllers/repos.py: 80142 #: pysvnmanager/controllers/repos.py:97 143 143 msgid "Id" 144 144 msgstr "" 145 145 146 #: pysvnmanager/controllers/repos.py: 81146 #: pysvnmanager/controllers/repos.py:98 147 147 msgid "Plugin name" 148 148 msgstr "" 149 149 150 #: pysvnmanager/controllers/repos.py: 82151 #: pysvnmanager/hooks/plugins/__init__.py:3 14150 #: pysvnmanager/controllers/repos.py:99 151 #: pysvnmanager/hooks/plugins/__init__.py:330 152 152 msgid "Type" 153 153 msgstr "" 154 154 155 #: pysvnmanager/controllers/repos.py: 96155 #: pysvnmanager/controllers/repos.py:113 156 156 msgid "Remove selected hooks" 157 157 msgstr "" 158 158 159 #: pysvnmanager/controllers/repos.py:1 19159 #: pysvnmanager/controllers/repos.py:136 160 160 #, python-format 161 161 msgid "" … … 164 164 msgstr "" 165 165 166 #: pysvnmanager/controllers/repos.py:1 22166 #: pysvnmanager/controllers/repos.py:139 167 167 #, python-format 168 168 msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 169 169 msgstr "" 170 170 171 #: pysvnmanager/controllers/repos.py:1 43171 #: pysvnmanager/controllers/repos.py:160 172 172 #, python-format 173 173 msgid "" … … 176 176 msgstr "" 177 177 178 #: pysvnmanager/controllers/repos.py:1 46178 #: pysvnmanager/controllers/repos.py:163 179 179 #, python-format 180 180 msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 181 181 msgstr "" 182 182 183 #: pysvnmanager/controllers/repos.py:1 49183 #: pysvnmanager/controllers/repos.py:166 184 184 #, python-format 185 185 msgid "No plugin has been deleted for '%(repos)s'." 186 186 msgstr "" 187 187 188 #: pysvnmanager/controllers/repos.py:1 58188 #: pysvnmanager/controllers/repos.py:175 189 189 #, python-format 190 190 msgid "" … … 193 193 msgstr "" 194 194 195 #: pysvnmanager/controllers/repos.py:1 61195 #: pysvnmanager/controllers/repos.py:178 196 196 #, python-format 197 197 msgid "Create repository '%(repos)s' success." 198 198 msgstr "" 199 199 200 #: pysvnmanager/controllers/repos.py:1 74200 #: pysvnmanager/controllers/repos.py:191 201 201 #, python-format 202 202 msgid "" … … 205 205 msgstr "" 206 206 207 #: pysvnmanager/controllers/repos.py:1 77207 #: pysvnmanager/controllers/repos.py:194 208 208 #, python-format 209 209 msgid "Delete blank repository '%(repos)s' success." 210 210 msgstr "" 211 211 212 #: pysvnmanager/controllers/role.py:1 03212 #: pysvnmanager/controllers/role.py:120 213 213 #, python-format 214 214 msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 215 215 msgstr "" 216 216 217 #: pysvnmanager/controllers/role.py:1 23217 #: pysvnmanager/controllers/role.py:140 218 218 #, python-format 219 219 msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 220 220 msgstr "" 221 221 222 #: pysvnmanager/controllers/role.py:1 45222 #: pysvnmanager/controllers/role.py:162 223 223 #, python-format 224 224 msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 225 225 msgstr "" 226 226 227 #: pysvnmanager/controllers/role.py:1 65227 #: pysvnmanager/controllers/role.py:182 228 228 #, python-format 229 229 msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 230 230 msgstr "" 231 231 232 #: pysvnmanager/controllers/security.py: 34232 #: pysvnmanager/controllers/security.py:52 233 233 #, python-format 234 234 msgid "User %s logged in" 235 235 msgstr "" 236 236 237 #: pysvnmanager/controllers/security.py: 45237 #: pysvnmanager/controllers/security.py:63 238 238 #, python-format 239 239 msgid "Login failed for user: %s" 240 240 msgstr "" 241 241 242 #: pysvnmanager/controllers/security.py: 53242 #: pysvnmanager/controllers/security.py:71 243 243 #, python-format 244 244 msgid "User %s logged out" 245 245 msgstr "" 246 246 247 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 10247 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:26 248 248 msgid "Allow revprop change" 249 249 msgstr "" 250 250 251 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 16251 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:32 252 252 msgid "Allow user change commit-log or other rev-properties." 253 253 msgstr "" 254 254 255 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 19255 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:35 256 256 msgid "" 257 257 "Commit-log is the only rev-prop we allow to change. Because the changes " … … 260 260 msgstr "" 261 261 262 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 10262 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:26 263 263 msgid "Mantis bugtracking integration" 264 264 msgstr "" 265 265 266 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 16266 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:32 267 267 msgid "" 268 268 "Integration Subversion with Mantis bugtracking. If commit-log has proper " … … 271 271 msgstr "" 272 272 273 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 10273 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:26 274 274 msgid "Subversion client version check (>1.5.0)" 275 275 msgstr "" 276 276 277 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 16277 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:32 278 278 msgid "Check subversion client version. if version below 1.5.0, checkin denied." 279 279 msgstr "" 280 280 281 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 19281 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:35 282 282 msgid "" 283 283 "SVN below 1.5.0 can not handle mergeinfo properly.It can mess up our " … … 285 285 msgstr "" 286 286 287 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 10287 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:26 288 288 msgid "Detect case-insensitive filename clashes" 289 289 msgstr "" 290 290 291 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 16291 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:32 292 292 msgid "A pre-commit hook to detect case-insensitive filename clashes." 293 293 msgstr "" 294 294 295 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 19295 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:35 296 296 msgid "" 297 297 "Subversion services may host on a filename case-sensitive OS,\n" … … 305 305 msgstr "" 306 306 307 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 11307 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:27 308 308 msgid "Check commit log message" 309 309 msgstr "" 310 310 311 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 17311 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:33 312 312 msgid "User must provide commit-log message when checkin." 313 313 msgstr "" 314 314 315 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 50316 #: pysvnmanager/hooks/plugins/EmailNotify.py: 73317 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 49315 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:66 316 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 317 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 318 318 msgid "Current configuration" 319 319 msgstr "" 320 320 321 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 52321 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:68 322 322 msgid "Commit log check is enabled." 323 323 msgstr "" 324 324 325 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 54325 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:70 326 326 msgid "Commit log check is disabled." 327 327 msgstr "" 328 328 329 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 56330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 95329 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 331 331 msgid "Minimal size of commit log: " 332 332 msgstr "" 333 333 334 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 61335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 01334 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 336 336 msgid "Pattern which commit log must match against: " 337 337 msgstr "" 338 338 339 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 64339 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:80 340 340 msgid "Pattern which commit log must **NOT** match against: " 341 341 msgstr "" 342 342 343 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 83344 #: pysvnmanager/hooks/plugins/EmailNotify.py: 97345 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 73343 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 344 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 345 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 346 346 msgid "Fill this form" 347 347 msgstr "" 348 348 349 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 87349 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:103 350 350 msgid "Enable commit log check: " 351 351 msgstr "" 352 352 353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 90354 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 04355 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 80353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 354 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 355 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 356 356 msgid "Enable" 357 357 msgstr "" 358 358 359 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 92360 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 06361 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 82359 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 360 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 361 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 362 362 msgid "Disable" 363 363 msgstr "" 364 364 365 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 07365 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 366 366 msgid "Pattern which commit log must <b>NOT</b> match against: " 367 367 msgstr "" 368 368 369 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 40369 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 370 370 msgid "Commit log size must > 0." 371 371 msgstr "" 372 372 373 #: pysvnmanager/hooks/plugins/EmailNotify.py: 11373 #: pysvnmanager/hooks/plugins/EmailNotify.py:27 374 374 msgid "Send email notify for commit event" 375 375 msgstr "" 376 376 377 #: pysvnmanager/hooks/plugins/EmailNotify.py: 17377 #: pysvnmanager/hooks/plugins/EmailNotify.py:33 378 378 msgid "" 379 379 "Send a notification email describing either a commit or a revprop-change " … … 381 381 msgstr "" 382 382 383 #: pysvnmanager/hooks/plugins/EmailNotify.py: 21383 #: pysvnmanager/hooks/plugins/EmailNotify.py:37 384 384 msgid "" 385 385 "\n" … … 407 407 msgstr "" 408 408 409 #: pysvnmanager/hooks/plugins/EmailNotify.py: 75409 #: pysvnmanager/hooks/plugins/EmailNotify.py:91 410 410 msgid "Email notify enabled." 411 411 msgstr "" 412 412 413 #: pysvnmanager/hooks/plugins/EmailNotify.py: 77413 #: pysvnmanager/hooks/plugins/EmailNotify.py:93 414 414 msgid "Email notify disabled." 415 415 msgstr "" 416 416 417 #: pysvnmanager/hooks/plugins/EmailNotify.py: 79417 #: pysvnmanager/hooks/plugins/EmailNotify.py:95 418 418 msgid "Parameters: " 419 419 msgstr "" 420 420 421 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 01421 #: pysvnmanager/hooks/plugins/EmailNotify.py:117 422 422 msgid "Enable email notify." 423 423 msgstr "" 424 424 425 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 09425 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 426 426 msgid "Input email notify configurations: " 427 427 msgstr "" 428 428 429 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 39430 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:1 15429 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 430 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 431 431 msgid "Wrong configuration." 432 432 msgstr "" 433 433 434 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 10434 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:26 435 435 msgid "mime-type and eol-style check" 436 436 msgstr "" 437 437 438 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 16438 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:32 439 439 msgid "New file must provide svn:eol-style if not binary file." 440 440 msgstr "" 441 441 442 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 10442 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:26 443 443 msgid "Subversion readonly mirror" 444 444 msgstr "" 445 445 446 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 16446 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:32 447 447 msgid "" 448 448 "This subversion repository is a svnsync readonly mirror. Nobody can " … … 450 450 msgstr "" 451 451 452 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 20452 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:36 453 453 msgid "" 454 454 "Commit to the remote svn server, this repository is a readonly svn " … … 457 457 msgstr "" 458 458 459 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 51459 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:67 460 460 msgid "Readonly mirror enabled." 461 461 msgstr "" 462 462 463 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 53463 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:69 464 464 msgid "Readonly mirror disabled." 465 465 msgstr "" 466 466 467 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 55467 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 468 468 msgid "Admin user: " 469 469 msgstr "" 470 470 471 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 77471 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 472 472 msgid "Enable readonly mirror: " 473 473 msgstr "" 474 474 475 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 85475 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 476 476 msgid "Svnsync administrator: " 477 477 msgstr "" 478 478 479 #: pysvnmanager/hooks/plugins/__init__.py: 95479 #: pysvnmanager/hooks/plugins/__init__.py:111 480 480 #, python-format 481 481 msgid "repos '%s' not exist!" 482 482 msgstr "" 483 483 484 #: pysvnmanager/hooks/plugins/__init__.py:1 52484 #: pysvnmanager/hooks/plugins/__init__.py:168 485 485 #, python-format 486 486 msgid "Conflict: plugin '%s' is modified by others." 487 487 msgstr "" 488 488 489 #: pysvnmanager/hooks/plugins/__init__.py:182 490 #: pysvnmanager/hooks/plugins/__init__.py:209 491 #: pysvnmanager/hooks/plugins/__init__.py:215 492 #: pysvnmanager/hooks/plugins/__init__.py:234 493 #: pysvnmanager/hooks/plugins/__init__.py:332 494 #: pysvnmanager/hooks/plugins/__init__.py:339 489 #: pysvnmanager/hooks/plugins/__init__.py:198 490 #: pysvnmanager/hooks/plugins/__init__.py:225 491 #: pysvnmanager/hooks/plugins/__init__.py:231 492 #: pysvnmanager/hooks/plugins/__init__.py:250 495 493 #: pysvnmanager/hooks/plugins/__init__.py:348 494 #: pysvnmanager/hooks/plugins/__init__.py:355 495 #: pysvnmanager/hooks/plugins/__init__.py:364 496 496 msgid "Plugin not fully implemented." 497 497 msgstr "" 498 498 499 #: pysvnmanager/hooks/plugins/__init__.py:3 13499 #: pysvnmanager/hooks/plugins/__init__.py:329 500 500 msgid "Name" 501 501 msgstr "" 502 502 503 #: pysvnmanager/hooks/plugins/__init__.py:3 15503 #: pysvnmanager/hooks/plugins/__init__.py:331 504 504 msgid "Description" 505 505 msgstr "" 506 506 507 #: pysvnmanager/model/repos.py: 39507 #: pysvnmanager/model/repos.py:55 508 508 #, python-format 509 509 msgid "Repos root does not exist: %s" 510 510 msgstr "" 511 511 512 #: pysvnmanager/model/repos.py: 68512 #: pysvnmanager/model/repos.py:84 513 513 #, python-format 514 514 msgid "Repos %s already exists." 515 515 msgstr "" 516 516 517 #: pysvnmanager/model/repos.py:1 39517 #: pysvnmanager/model/repos.py:166 518 518 #, python-format 519 519 msgid "Repos %s is not a blank repository." 520 520 msgstr "" 521 521 522 #: pysvnmanager/model/svnauthz.py: 61522 #: pysvnmanager/model/svnauthz.py:77 523 523 msgid "Name is not given." 524 524 msgstr "" 525 525 526 #: pysvnmanager/model/svnauthz.py: 63526 #: pysvnmanager/model/svnauthz.py:79 527 527 msgid "Name is not string." 528 528 msgstr "" 529 529 530 #: pysvnmanager/model/svnauthz.py: 67530 #: pysvnmanager/model/svnauthz.py:83 531 531 #, python-format 532 532 msgid "Name (%s) contains invalid characters." 533 533 msgstr "" 534 534 535 #: pysvnmanager/model/svnauthz.py:4 75535 #: pysvnmanager/model/svnauthz.py:491 536 536 #, python-format 537 537 msgid "Recursive group membership for %s" 538 538 msgstr "" 539 539 540 #: pysvnmanager/model/svnauthz.py:5 69540 #: pysvnmanager/model/svnauthz.py:585 541 541 #, python-format 542 542 msgid "Not a valid username: %s" 543 543 msgstr "" 544 544 545 #: pysvnmanager/model/svnauthz.py: 686545 #: pysvnmanager/model/svnauthz.py:702 546 546 #, python-format 547 547 msgid "Group %s is referenced by group %s." 548 548 msgstr "" 549 549 550 #: pysvnmanager/model/svnauthz.py:12 32550 #: pysvnmanager/model/svnauthz.py:1248 551 551 msgid "Update failed! You are working on a out-of-date revision." 552 552 msgstr "" 553 553 554 #: pysvnmanager/model/svnauthz.py:1 486 pysvnmanager/model/svnauthz.py:1493555 #: pysvnmanager/model/svnauthz.py:1 497554 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 555 #: pysvnmanager/model/svnauthz.py:1513 556 556 #, python-format 557 557 msgid "Unknown rule format: %s" 558 558 msgstr "" 559 559 560 #: pysvnmanager/model/svnauthz.py:15 11560 #: pysvnmanager/model/svnauthz.py:1527 561 561 #, python-format 562 562 msgid "No module exist for %s:%s" 563 563 msgstr "" 564 564 565 #: pysvnmanager/model/svnauthz.py:16 21565 #: pysvnmanager/model/svnauthz.py:1637 566 566 #, python-format 567 567 msgid "Alias %s is referenced by group %s." 568 568 msgstr "" 569 569 570 #: pysvnmanager/model/svnauthz.py:16 33570 #: pysvnmanager/model/svnauthz.py:1649 571 571 #, python-format 572 572 msgid "%s is referenced by [%s]." 573 573 msgstr "" 574 574 575 #: pysvnmanager/model/svnauthz.py:17 69575 #: pysvnmanager/model/svnauthz.py:1785 576 576 #, python-format 577 577 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 578 578 msgstr "" 579 579 580 #: pysvnmanager/model/svnauthz.py:17 71580 #: pysvnmanager/model/svnauthz.py:1787 581 581 #, python-format 582 582 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 583 583 msgstr "" 584 584 585 #: pysvnmanager/model/svnauthz.py:17 73585 #: pysvnmanager/model/svnauthz.py:1789 586 586 #, python-format 587 587 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 588 588 msgstr "" 589 589 590 #: pysvnmanager/model/svnauthz.py:18 13590 #: pysvnmanager/model/svnauthz.py:1829 591 591 #, python-format 592 592 msgid "" … … 600 600 msgstr "" 601 601 602 #: pysvnmanager/model/svnauthz.py:18 32602 #: pysvnmanager/model/svnauthz.py:1848 603 603 #, python-format 604 604 msgid "" … … 764 764 765 765 #: pysvnmanager/templates/authz/index.mako:678 766 #: pysvnmanager/templates/role/index.mako:7 11766 #: pysvnmanager/templates/role/index.mako:708 767 767 msgid "Save" 768 768 msgstr "" 769 769 770 770 #: pysvnmanager/templates/authz/index.mako:679 771 #: pysvnmanager/templates/role/index.mako:7 12771 #: pysvnmanager/templates/role/index.mako:709 772 772 msgid "Delete" 773 773 msgstr "" 774 774 775 775 #: pysvnmanager/templates/authz/index.mako:680 776 #: pysvnmanager/templates/role/index.mako:71 3776 #: pysvnmanager/templates/role/index.mako:710 777 777 msgid "Cancel" 778 778 msgstr "" … … 780 780 #: pysvnmanager/templates/check/index.mako:5 781 781 #: pysvnmanager/templates/check/index.mako:106 782 #: pysvnmanager/templates/check/index.mako:17 6782 #: pysvnmanager/templates/check/index.mako:173 783 783 msgid "Check Permissions" 784 784 msgstr "" … … 812 812 msgstr "" 813 813 814 #: pysvnmanager/templates/check/index.mako:13 9815 #: pysvnmanager/templates/check/index.mako:1 52816 #: pysvnmanager/templates/check/index.mako:16 4814 #: pysvnmanager/templates/check/index.mako:138 815 #: pysvnmanager/templates/check/index.mako:149 816 #: pysvnmanager/templates/check/index.mako:161 817 817 msgid "Manual input" 818 818 msgstr "" 819 819 820 #: pysvnmanager/templates/check/index.mako:14 6820 #: pysvnmanager/templates/check/index.mako:145 821 821 msgid "Select repository" 822 822 msgstr "" 823 823 824 #: pysvnmanager/templates/check/index.mako:1 60824 #: pysvnmanager/templates/check/index.mako:157 825 825 msgid "Select module" 826 826 msgstr "" … … 950 950 msgstr "" 951 951 952 #: pysvnmanager/templates/role/index.mako:63 6952 #: pysvnmanager/templates/role/index.mako:634 953 953 msgid "New Group" 954 954 msgstr "" 955 955 956 #: pysvnmanager/templates/role/index.mako:63 7956 #: pysvnmanager/templates/role/index.mako:635 957 957 msgid "New Alias" 958 958 msgstr "" 959 959 960 #: pysvnmanager/templates/role/index.mako:6 41960 #: pysvnmanager/templates/role/index.mako:639 961 961 msgid "New group name:" 962 962 msgstr "" 963 963 964 #: pysvnmanager/templates/role/index.mako:64 5964 #: pysvnmanager/templates/role/index.mako:643 965 965 msgid "New alias name:" 966 966 msgstr "" 967 967 968 #: pysvnmanager/templates/role/index.mako:65 7968 #: pysvnmanager/templates/role/index.mako:655 969 969 msgid "Members list" 970 970 msgstr "" 971 971 972 #: pysvnmanager/templates/role/index.mako:66 2972 #: pysvnmanager/templates/role/index.mako:660 973 973 msgid "Other users" 974 974 msgstr "" 975 975 976 #: pysvnmanager/templates/role/index.mako:6 81976 #: pysvnmanager/templates/role/index.mako:679 977 977 msgid "Ignore recursive" 978 978 msgstr "" 979 979 980 #: pysvnmanager/templates/role/index.mako:69 3980 #: pysvnmanager/templates/role/index.mako:691 981 981 msgid "User name:" 982 982 msgstr "" 983 983 984 #~ msgid ""985 #~ "Subversion services may host on a filename case-sensitive OS,\n"986 #~ "while client **may not** (Windows is "987 #~ "case-insensitive). This may cause "988 #~ "'clash'.\n"989 #~ " \n"990 #~ "- Detects new paths that 'clash' with existing, or other new, paths.\n"991 #~ "- Ignores existings paths that already 'clash'\n"992 #~ "- Exits with an error code, and a diagnostic on stderr, if 'clashes'\n"993 #~ " are detected.\n"994 #~ msgstr ""995 -
trunk/pysvnmanager/i18n/pysvnmanager.pot
r47 r55 7 7 msgid "" 8 8 msgstr "" 9 "Project-Id-Version: pySvnManager 0.2. 0\n"9 "Project-Id-Version: pySvnManager 0.2.1\n" 10 10 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 11 "POT-Creation-Date: 2008-08- 28 19:02+0800\n"11 "POT-Creation-Date: 2008-08-30 13:12+0800\n" 12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 16 16 "Content-Type: text/plain; charset=utf-8\n" 17 17 "Content-Transfer-Encoding: 8bit\n" 18 "Generated-By: Babel 0.9. 2\n"19 20 #: pysvnmanager/controllers/authz.py: 43pysvnmanager/templates/authz/index.mako:15218 "Generated-By: Babel 0.9.4\n" 19 20 #: pysvnmanager/controllers/authz.py:60 pysvnmanager/templates/authz/index.mako:152 21 21 #: pysvnmanager/templates/check/index.mako:10 22 22 msgid "All users(with anon)" 23 23 msgstr "" 24 24 25 #: pysvnmanager/controllers/authz.py: 44pysvnmanager/templates/authz/index.mako:15425 #: pysvnmanager/controllers/authz.py:61 pysvnmanager/templates/authz/index.mako:154 26 26 #: pysvnmanager/templates/check/index.mako:11 27 27 msgid "Known users" 28 28 msgstr "" 29 29 30 #: pysvnmanager/controllers/authz.py: 45pysvnmanager/templates/authz/index.mako:15630 #: pysvnmanager/controllers/authz.py:62 pysvnmanager/templates/authz/index.mako:156 31 31 #: pysvnmanager/templates/check/index.mako:12 32 32 msgid "Anonymous" 33 33 msgstr "" 34 34 35 #: pysvnmanager/controllers/authz.py: 50 pysvnmanager/controllers/role.py:5036 #: pysvnmanager/controllers/role.py: 70pysvnmanager/templates/authz/index.mako:14835 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 36 #: pysvnmanager/controllers/role.py:87 pysvnmanager/templates/authz/index.mako:148 37 37 #: pysvnmanager/templates/check/index.mako:17 38 38 #: pysvnmanager/templates/role/index.mako:18 … … 43 43 msgstr "" 44 44 45 #: pysvnmanager/controllers/authz.py: 53 pysvnmanager/controllers/role.py:5546 #: pysvnmanager/controllers/role.py: 72pysvnmanager/templates/authz/index.mako:15045 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 46 #: pysvnmanager/controllers/role.py:89 pysvnmanager/templates/authz/index.mako:150 47 47 #: pysvnmanager/templates/check/index.mako:19 48 48 #: pysvnmanager/templates/role/index.mako:23 … … 53 53 msgstr "" 54 54 55 #: pysvnmanager/controllers/authz.py: 68 pysvnmanager/controllers/authz.py:9956 #: pysvnmanager/controllers/check.py: 89 pysvnmanager/controllers/repos.py:4057 #: pysvnmanager/controllers/repos.py: 59 pysvnmanager/controllers/role.py:4355 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 56 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 57 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 58 58 #: pysvnmanager/templates/check/index.mako:9 59 59 #: pysvnmanager/templates/check/index.mako:23 … … 63 63 msgstr "" 64 64 65 #: pysvnmanager/controllers/authz.py:1 6065 #: pysvnmanager/controllers/authz.py:177 66 66 #, python-format 67 67 msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 68 68 msgstr "" 69 69 70 #: pysvnmanager/controllers/authz.py:1 7370 #: pysvnmanager/controllers/authz.py:190 71 71 #, python-format 72 72 msgid "Repository %s not exist." 73 73 msgstr "" 74 74 75 #: pysvnmanager/controllers/authz.py:1 8175 #: pysvnmanager/controllers/authz.py:198 76 76 #, python-format 77 77 msgid "Module %s not exist." 78 78 msgstr "" 79 79 80 #: pysvnmanager/controllers/authz.py: 18780 #: pysvnmanager/controllers/authz.py:204 81 81 msgid "You can not delete yourself from admin list." 82 82 msgstr "" 83 83 84 #: pysvnmanager/controllers/authz.py:2 1284 #: pysvnmanager/controllers/authz.py:229 85 85 #, python-format 86 86 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 87 87 msgstr "" 88 88 89 #: pysvnmanager/controllers/check.py: 69pysvnmanager/templates/auth_failed.mako:389 #: pysvnmanager/controllers/check.py:86 pysvnmanager/templates/auth_failed.mako:3 90 90 msgid "Permission denied." 91 91 msgstr "" 92 92 93 #: pysvnmanager/controllers/logs.py: 5093 #: pysvnmanager/controllers/logs.py:68 94 94 msgid "Rev" 95 95 msgstr "" 96 96 97 #: pysvnmanager/controllers/logs.py: 5197 #: pysvnmanager/controllers/logs.py:69 98 98 msgid "Who" 99 99 msgstr "" 100 100 101 #: pysvnmanager/controllers/logs.py: 52101 #: pysvnmanager/controllers/logs.py:70 102 102 msgid "When" 103 103 msgstr "" 104 104 105 #: pysvnmanager/controllers/logs.py: 53105 #: pysvnmanager/controllers/logs.py:71 106 106 msgid "Why" 107 107 msgstr "" 108 108 109 #: pysvnmanager/controllers/logs.py: 54109 #: pysvnmanager/controllers/logs.py:72 110 110 msgid "Compare" 111 111 msgstr "" 112 112 113 #: pysvnmanager/controllers/logs.py: 97113 #: pysvnmanager/controllers/logs.py:115 114 114 msgid "Page: " 115 115 msgstr "" 116 116 117 #: pysvnmanager/controllers/logs.py:1 33117 #: pysvnmanager/controllers/logs.py:151 118 118 msgid "Compares between" 119 119 msgstr "" 120 120 121 #: pysvnmanager/controllers/logs.py:1 52121 #: pysvnmanager/controllers/logs.py:170 122 122 #, python-format 123 123 msgid "Rollback successfully to revision: %s" 124 124 msgstr "" 125 125 126 #: pysvnmanager/controllers/logs.py:1 61126 #: pysvnmanager/controllers/logs.py:179 127 127 #, python-format 128 128 msgid "Rollback failed: %s" 129 129 msgstr "" 130 130 131 #: pysvnmanager/controllers/repos.py: 74131 #: pysvnmanager/controllers/repos.py:91 132 132 msgid "Installed hooks:" 133 133 msgstr "" 134 134 135 #: pysvnmanager/controllers/repos.py: 80135 #: pysvnmanager/controllers/repos.py:97 136 136 msgid "Id" 137 137 msgstr "" 138 138 139 #: pysvnmanager/controllers/repos.py: 81139 #: pysvnmanager/controllers/repos.py:98 140 140 msgid "Plugin name" 141 141 msgstr "" 142 142 143 #: pysvnmanager/controllers/repos.py: 82 pysvnmanager/hooks/plugins/__init__.py:314143 #: pysvnmanager/controllers/repos.py:99 pysvnmanager/hooks/plugins/__init__.py:330 144 144 msgid "Type" 145 145 msgstr "" 146 146 147 #: pysvnmanager/controllers/repos.py: 96147 #: pysvnmanager/controllers/repos.py:113 148 148 msgid "Remove selected hooks" 149 149 msgstr "" 150 150 151 #: pysvnmanager/controllers/repos.py:1 19151 #: pysvnmanager/controllers/repos.py:136 152 152 #, python-format 153 153 msgid "" … … 156 156 msgstr "" 157 157 158 #: pysvnmanager/controllers/repos.py:1 22158 #: pysvnmanager/controllers/repos.py:139 159 159 #, python-format 160 160 msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 161 161 msgstr "" 162 162 163 #: pysvnmanager/controllers/repos.py:1 43163 #: pysvnmanager/controllers/repos.py:160 164 164 #, python-format 165 165 msgid "" … … 168 168 msgstr "" 169 169 170 #: pysvnmanager/controllers/repos.py:1 46170 #: pysvnmanager/controllers/repos.py:163 171 171 #, python-format 172 172 msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 173 173 msgstr "" 174 174 175 #: pysvnmanager/controllers/repos.py:1 49175 #: pysvnmanager/controllers/repos.py:166 176 176 #, python-format 177 177 msgid "No plugin has been deleted for '%(repos)s'." 178 178 msgstr "" 179 179 180 #: pysvnmanager/controllers/repos.py:1 58180 #: pysvnmanager/controllers/repos.py:175 181 181 #, python-format 182 182 msgid "" … … 185 185 msgstr "" 186 186 187 #: pysvnmanager/controllers/repos.py:1 61187 #: pysvnmanager/controllers/repos.py:178 188 188 #, python-format 189 189 msgid "Create repository '%(repos)s' success." 190 190 msgstr "" 191 191 192 #: pysvnmanager/controllers/repos.py:1 74192 #: pysvnmanager/controllers/repos.py:191 193 193 #, python-format 194 194 msgid "" … … 197 197 msgstr "" 198 198 199 #: pysvnmanager/controllers/repos.py:1 77199 #: pysvnmanager/controllers/repos.py:194 200 200 #, python-format 201 201 msgid "Delete blank repository '%(repos)s' success." 202 202 msgstr "" 203 203 204 #: pysvnmanager/controllers/role.py:1 03204 #: pysvnmanager/controllers/role.py:120 205 205 #, python-format 206 206 msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 207 207 msgstr "" 208 208 209 #: pysvnmanager/controllers/role.py:1 23209 #: pysvnmanager/controllers/role.py:140 210 210 #, python-format 211 211 msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 212 212 msgstr "" 213 213 214 #: pysvnmanager/controllers/role.py:1 45214 #: pysvnmanager/controllers/role.py:162 215 215 #, python-format 216 216 msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 217 217 msgstr "" 218 218 219 #: pysvnmanager/controllers/role.py:1 65219 #: pysvnmanager/controllers/role.py:182 220 220 #, python-format 221 221 msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 222 222 msgstr "" 223 223 224 #: pysvnmanager/controllers/security.py: 34224 #: pysvnmanager/controllers/security.py:52 225 225 #, python-format 226 226 msgid "User %s logged in" 227 227 msgstr "" 228 228 229 #: pysvnmanager/controllers/security.py: 45229 #: pysvnmanager/controllers/security.py:63 230 230 #, python-format 231 231 msgid "Login failed for user: %s" 232 232 msgstr "" 233 233 234 #: pysvnmanager/controllers/security.py: 53234 #: pysvnmanager/controllers/security.py:71 235 235 #, python-format 236 236 msgid "User %s logged out" 237 237 msgstr "" 238 238 239 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 10239 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:26 240 240 msgid "Allow revprop change" 241 241 msgstr "" 242 242 243 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 16243 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:32 244 244 msgid "Allow user change commit-log or other rev-properties." 245 245 msgstr "" 246 246 247 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 19247 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:35 248 248 msgid "" 249 249 "Commit-log is the only rev-prop we allow to change. Because the changes of " … … 252 252 msgstr "" 253 253 254 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 10254 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:26 255 255 msgid "Mantis bugtracking integration" 256 256 msgstr "" 257 257 258 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 16258 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:32 259 259 msgid "" 260 260 "Integration Subversion with Mantis bugtracking. If commit-log has proper " … … 263 263 msgstr "" 264 264 265 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 10265 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:26 266 266 msgid "Subversion client version check (>1.5.0)" 267 267 msgstr "" 268 268 269 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 16269 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:32 270 270 msgid "Check subversion client version. if version below 1.5.0, checkin denied." 271 271 msgstr "" 272 272 273 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 19273 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:35 274 274 msgid "" 275 275 "SVN below 1.5.0 can not handle mergeinfo properly.It can mess up our " … … 277 277 msgstr "" 278 278 279 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 10279 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:26 280 280 msgid "Detect case-insensitive filename clashes" 281 281 msgstr "" 282 282 283 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 16283 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:32 284 284 msgid "A pre-commit hook to detect case-insensitive filename clashes." 285 285 msgstr "" 286 286 287 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 19287 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:35 288 288 msgid "" 289 289 "Subversion services may host on a filename case-sensitive OS,\n" … … 297 297 msgstr "" 298 298 299 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 11299 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:27 300 300 msgid "Check commit log message" 301 301 msgstr "" 302 302 303 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 17303 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:33 304 304 msgid "User must provide commit-log message when checkin." 305 305 msgstr "" 306 306 307 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 50308 #: pysvnmanager/hooks/plugins/EmailNotify.py: 73309 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 49307 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:66 308 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 309 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 310 310 msgid "Current configuration" 311 311 msgstr "" 312 312 313 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 52313 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:68 314 314 msgid "Commit log check is enabled." 315 315 msgstr "" 316 316 317 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 54317 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:70 318 318 msgid "Commit log check is disabled." 319 319 msgstr "" 320 320 321 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 56322 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 95321 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 322 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 323 323 msgid "Minimal size of commit log: " 324 324 msgstr "" 325 325 326 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 61327 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 01326 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 327 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 328 328 msgid "Pattern which commit log must match against: " 329 329 msgstr "" 330 330 331 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 64331 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:80 332 332 msgid "Pattern which commit log must **NOT** match against: " 333 333 msgstr "" 334 334 335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 83336 #: pysvnmanager/hooks/plugins/EmailNotify.py: 97337 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 73335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 336 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 337 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 338 338 msgid "Fill this form" 339 339 msgstr "" 340 340 341 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 87341 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:103 342 342 msgid "Enable commit log check: " 343 343 msgstr "" 344 344 345 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 90346 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 04347 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 80345 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 346 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 347 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 348 348 msgid "Enable" 349 349 msgstr "" 350 350 351 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 92352 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 06353 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 82351 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 352 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 353 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 354 354 msgid "Disable" 355 355 msgstr "" 356 356 357 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 07357 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 358 358 msgid "Pattern which commit log must <b>NOT</b> match against: " 359 359 msgstr "" 360 360 361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 40361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 362 362 msgid "Commit log size must > 0." 363 363 msgstr "" 364 364 365 #: pysvnmanager/hooks/plugins/EmailNotify.py: 11365 #: pysvnmanager/hooks/plugins/EmailNotify.py:27 366 366 msgid "Send email notify for commit event" 367 367 msgstr "" 368 368 369 #: pysvnmanager/hooks/plugins/EmailNotify.py: 17369 #: pysvnmanager/hooks/plugins/EmailNotify.py:33 370 370 msgid "" 371 371 "Send a notification email describing either a commit or a revprop-change " … … 373 373 msgstr "" 374 374 375 #: pysvnmanager/hooks/plugins/EmailNotify.py: 21375 #: pysvnmanager/hooks/plugins/EmailNotify.py:37 376 376 msgid "" 377 377 "\n" … … 399 399 msgstr "" 400 400 401 #: pysvnmanager/hooks/plugins/EmailNotify.py: 75401 #: pysvnmanager/hooks/plugins/EmailNotify.py:91 402 402 msgid "Email notify enabled." 403 403 msgstr "" 404 404 405 #: pysvnmanager/hooks/plugins/EmailNotify.py: 77405 #: pysvnmanager/hooks/plugins/EmailNotify.py:93 406 406 msgid "Email notify disabled." 407 407 msgstr "" 408 408 409 #: pysvnmanager/hooks/plugins/EmailNotify.py: 79409 #: pysvnmanager/hooks/plugins/EmailNotify.py:95 410 410 msgid "Parameters: " 411 411 msgstr "" 412 412 413 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 01413 #: pysvnmanager/hooks/plugins/EmailNotify.py:117 414 414 msgid "Enable email notify." 415 415 msgstr "" 416 416 417 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 09417 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 418 418 msgid "Input email notify configurations: " 419 419 msgstr "" 420 420 421 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 39422 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:1 15421 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 422 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 423 423 msgid "Wrong configuration." 424 424 msgstr "" 425 425 426 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 10426 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:26 427 427 msgid "mime-type and eol-style check" 428 428 msgstr "" 429 429 430 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 16430 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:32 431 431 msgid "New file must provide svn:eol-style if not binary file." 432 432 msgstr "" 433 433 434 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 10434 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:26 435 435 msgid "Subversion readonly mirror" 436 436 msgstr "" 437 437 438 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 16438 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:32 439 439 msgid "" 440 440 "This subversion repository is a svnsync readonly mirror. Nobody can checkin, " … … 442 442 msgstr "" 443 443 444 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 20444 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:36 445 445 msgid "" 446 446 "Commit to the remote svn server, this repository is a readonly svn mirror.It " … … 448 448 msgstr "" 449 449 450 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 51450 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:67 451 451 msgid "Readonly mirror enabled." 452 452 msgstr "" 453 453 454 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 53454 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:69 455 455 msgid "Readonly mirror disabled." 456 456 msgstr "" 457 457 458 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 55458 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 459 459 msgid "Admin user: " 460 460 msgstr "" 461 461 462 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 77462 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 463 463 msgid "Enable readonly mirror: " 464 464 msgstr "" 465 465 466 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 85466 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 467 467 msgid "Svnsync administrator: " 468 468 msgstr "" 469 469 470 #: pysvnmanager/hooks/plugins/__init__.py: 95470 #: pysvnmanager/hooks/plugins/__init__.py:111 471 471 #, python-format 472 472 msgid "repos '%s' not exist!" 473 473 msgstr "" 474 474 475 #: pysvnmanager/hooks/plugins/__init__.py:1 52475 #: pysvnmanager/hooks/plugins/__init__.py:168 476 476 #, python-format 477 477 msgid "Conflict: plugin '%s' is modified by others." 478 478 msgstr "" 479 479 480 #: pysvnmanager/hooks/plugins/__init__.py:182 481 #: pysvnmanager/hooks/plugins/__init__.py:209 482 #: pysvnmanager/hooks/plugins/__init__.py:215 483 #: pysvnmanager/hooks/plugins/__init__.py:234 484 #: pysvnmanager/hooks/plugins/__init__.py:332 485 #: pysvnmanager/hooks/plugins/__init__.py:339 480 #: pysvnmanager/hooks/plugins/__init__.py:198 481 #: pysvnmanager/hooks/plugins/__init__.py:225 482 #: pysvnmanager/hooks/plugins/__init__.py:231 483 #: pysvnmanager/hooks/plugins/__init__.py:250 486 484 #: pysvnmanager/hooks/plugins/__init__.py:348 485 #: pysvnmanager/hooks/plugins/__init__.py:355 486 #: pysvnmanager/hooks/plugins/__init__.py:364 487 487 msgid "Plugin not fully implemented." 488 488 msgstr "" 489 489 490 #: pysvnmanager/hooks/plugins/__init__.py:3 13490 #: pysvnmanager/hooks/plugins/__init__.py:329 491 491 msgid "Name" 492 492 msgstr "" 493 493 494 #: pysvnmanager/hooks/plugins/__init__.py:3 15494 #: pysvnmanager/hooks/plugins/__init__.py:331 495 495 msgid "Description" 496 496 msgstr "" 497 497 498 #: pysvnmanager/model/repos.py: 39498 #: pysvnmanager/model/repos.py:55 499 499 #, python-format 500 500 msgid "Repos root does not exist: %s" 501 501 msgstr "" 502 502 503 #: pysvnmanager/model/repos.py: 68503 #: pysvnmanager/model/repos.py:84 504 504 #, python-format 505 505 msgid "Repos %s already exists." 506 506 msgstr "" 507 507 508 #: pysvnmanager/model/repos.py:1 39508 #: pysvnmanager/model/repos.py:166 509 509 #, python-format 510 510 msgid "Repos %s is not a blank repository." 511 511 msgstr "" 512 512 513 #: pysvnmanager/model/svnauthz.py: 61513 #: pysvnmanager/model/svnauthz.py:77 514 514 msgid "Name is not given." 515 515 msgstr "" 516 516 517 #: pysvnmanager/model/svnauthz.py: 63517 #: pysvnmanager/model/svnauthz.py:79 518 518 msgid "Name is not string." 519 519 msgstr "" 520 520 521 #: pysvnmanager/model/svnauthz.py: 67521 #: pysvnmanager/model/svnauthz.py:83 522 522 #, python-format 523 523 msgid "Name (%s) contains invalid characters." 524 524 msgstr "" 525 525 526 #: pysvnmanager/model/svnauthz.py:4 75526 #: pysvnmanager/model/svnauthz.py:491 527 527 #, python-format 528 528 msgid "Recursive group membership for %s" 529 529 msgstr "" 530 530 531 #: pysvnmanager/model/svnauthz.py:5 69531 #: pysvnmanager/model/svnauthz.py:585 532 532 #, python-format 533 533 msgid "Not a valid username: %s" 534 534 msgstr "" 535 535 536 #: pysvnmanager/model/svnauthz.py: 686536 #: pysvnmanager/model/svnauthz.py:702 537 537 #, python-format 538 538 msgid "Group %s is referenced by group %s." 539 539 msgstr "" 540 540 541 #: pysvnmanager/model/svnauthz.py:12 32541 #: pysvnmanager/model/svnauthz.py:1248 542 542 msgid "Update failed! You are working on a out-of-date revision." 543 543 msgstr "" 544 544 545 #: pysvnmanager/model/svnauthz.py:1 486 pysvnmanager/model/svnauthz.py:1493546 #: pysvnmanager/model/svnauthz.py:1 497545 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 546 #: pysvnmanager/model/svnauthz.py:1513 547 547 #, python-format 548 548 msgid "Unknown rule format: %s" 549 549 msgstr "" 550 550 551 #: pysvnmanager/model/svnauthz.py:15 11551 #: pysvnmanager/model/svnauthz.py:1527 552 552 #, python-format 553 553 msgid "No module exist for %s:%s" 554 554 msgstr "" 555 555 556 #: pysvnmanager/model/svnauthz.py:16 21556 #: pysvnmanager/model/svnauthz.py:1637 557 557 #, python-format 558 558 msgid "Alias %s is referenced by group %s." 559 559 msgstr "" 560 560 561 #: pysvnmanager/model/svnauthz.py:16 33561 #: pysvnmanager/model/svnauthz.py:1649 562 562 #, python-format 563 563 msgid "%s is referenced by [%s]." 564 564 msgstr "" 565 565 566 #: pysvnmanager/model/svnauthz.py:17 69566 #: pysvnmanager/model/svnauthz.py:1785 567 567 #, python-format 568 568 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 569 569 msgstr "" 570 570 571 #: pysvnmanager/model/svnauthz.py:17 71571 #: pysvnmanager/model/svnauthz.py:1787 572 572 #, python-format 573 573 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 574 574 msgstr "" 575 575 576 #: pysvnmanager/model/svnauthz.py:17 73576 #: pysvnmanager/model/svnauthz.py:1789 577 577 #, python-format 578 578 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 579 579 msgstr "" 580 580 581 #: pysvnmanager/model/svnauthz.py:18 13581 #: pysvnmanager/model/svnauthz.py:1829 582 582 #, python-format 583 583 msgid "" … … 591 591 msgstr "" 592 592 593 #: pysvnmanager/model/svnauthz.py:18 32593 #: pysvnmanager/model/svnauthz.py:1848 594 594 #, python-format 595 595 msgid "" … … 753 753 754 754 #: pysvnmanager/templates/authz/index.mako:678 755 #: pysvnmanager/templates/role/index.mako:7 11755 #: pysvnmanager/templates/role/index.mako:708 756 756 msgid "Save" 757 757 msgstr "" 758 758 759 759 #: pysvnmanager/templates/authz/index.mako:679 760 #: pysvnmanager/templates/role/index.mako:7 12760 #: pysvnmanager/templates/role/index.mako:709 761 761 msgid "Delete" 762 762 msgstr "" 763 763 764 764 #: pysvnmanager/templates/authz/index.mako:680 765 #: pysvnmanager/templates/role/index.mako:71 3765 #: pysvnmanager/templates/role/index.mako:710 766 766 msgid "Cancel" 767 767 msgstr "" … … 769 769 #: pysvnmanager/templates/check/index.mako:5 770 770 #: pysvnmanager/templates/check/index.mako:106 771 #: pysvnmanager/templates/check/index.mako:17 6771 #: pysvnmanager/templates/check/index.mako:173 772 772 msgid "Check Permissions" 773 773 msgstr "" … … 801 801 msgstr "" 802 802 803 #: pysvnmanager/templates/check/index.mako:13 9804 #: pysvnmanager/templates/check/index.mako:1 52805 #: pysvnmanager/templates/check/index.mako:16 4803 #: pysvnmanager/templates/check/index.mako:138 804 #: pysvnmanager/templates/check/index.mako:149 805 #: pysvnmanager/templates/check/index.mako:161 806 806 msgid "Manual input" 807 807 msgstr "" 808 808 809 #: pysvnmanager/templates/check/index.mako:14 6809 #: pysvnmanager/templates/check/index.mako:145 810 810 msgid "Select repository" 811 811 msgstr "" 812 812 813 #: pysvnmanager/templates/check/index.mako:1 60813 #: pysvnmanager/templates/check/index.mako:157 814 814 msgid "Select module" 815 815 msgstr "" … … 939 939 msgstr "" 940 940 941 #: pysvnmanager/templates/role/index.mako:63 6941 #: pysvnmanager/templates/role/index.mako:634 942 942 msgid "New Group" 943 943 msgstr "" 944 944 945 #: pysvnmanager/templates/role/index.mako:63 7945 #: pysvnmanager/templates/role/index.mako:635 946 946 msgid "New Alias" 947 947 msgstr "" 948 948 949 #: pysvnmanager/templates/role/index.mako:6 41949 #: pysvnmanager/templates/role/index.mako:639 950 950 msgid "New group name:" 951 951 msgstr "" 952 952 953 #: pysvnmanager/templates/role/index.mako:64 5953 #: pysvnmanager/templates/role/index.mako:643 954 954 msgid "New alias name:" 955 955 msgstr "" 956 956 957 #: pysvnmanager/templates/role/index.mako:65 7957 #: pysvnmanager/templates/role/index.mako:655 958 958 msgid "Members list" 959 959 msgstr "" 960 960 961 #: pysvnmanager/templates/role/index.mako:66 2961 #: pysvnmanager/templates/role/index.mako:660 962 962 msgid "Other users" 963 963 msgstr "" 964 964 965 #: pysvnmanager/templates/role/index.mako:6 81965 #: pysvnmanager/templates/role/index.mako:679 966 966 msgid "Ignore recursive" 967 967 msgstr "" 968 968 969 #: pysvnmanager/templates/role/index.mako:69 3969 #: pysvnmanager/templates/role/index.mako:691 970 970 msgid "User name:" 971 971 msgstr "" -
trunk/pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po
r47 r55 9 9 msgid "" 10 10 msgstr "" 11 "Project-Id-Version: pysvnmanager\n"11 "Project-Id-Version: pysvnmanager\n" 12 12 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 13 13 "POT-Creation-Date: 2008-07-03 22:14+0800\n" 14 "PO-Revision-Date: 2008-08- 28 19:04+0800\n"14 "PO-Revision-Date: 2008-08-30 13:12+0800\n" 15 15 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" 16 "Language-Team: <zh@li.org>\n"17 "Plural-Forms: nplurals= INTEGER; plural=EXPRESSION\n"16 "Language-Team: <zh@li.org>\n" 17 "Plural-Forms: nplurals=2; plural=(n != 1)\n" 18 18 "MIME-Version: 1.0\n" 19 "Content-Type: text/plain; charset= UTF-8\n"19 "Content-Type: text/plain; charset=utf-8\n" 20 20 "Content-Transfer-Encoding: 8bit\n" 21 "Generated-By: Babel 0.9.2\n" 22 "X-Generator: KBabel 1.11.4\n" 23 24 #: pysvnmanager/controllers/authz.py:43 21 "Generated-By: Babel 0.9.4\n" 22 23 #: pysvnmanager/controllers/authz.py:60 25 24 #: pysvnmanager/templates/authz/index.mako:152 26 25 #: pysvnmanager/templates/check/index.mako:10 … … 28 27 msgstr "所有用户(含匿名)" 29 28 30 #: pysvnmanager/controllers/authz.py: 4429 #: pysvnmanager/controllers/authz.py:61 31 30 #: pysvnmanager/templates/authz/index.mako:154 32 31 #: pysvnmanager/templates/check/index.mako:11 … … 34 33 msgstr "注册用户" 35 34 36 #: pysvnmanager/controllers/authz.py: 4535 #: pysvnmanager/controllers/authz.py:62 37 36 #: pysvnmanager/templates/authz/index.mako:156 38 37 #: pysvnmanager/templates/check/index.mako:12 … … 40 39 msgstr "匿名用户" 41 40 42 #: pysvnmanager/controllers/authz.py: 50 pysvnmanager/controllers/role.py:5043 #: pysvnmanager/controllers/role.py: 7041 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 42 #: pysvnmanager/controllers/role.py:87 44 43 #: pysvnmanager/templates/authz/index.mako:148 45 44 #: pysvnmanager/templates/check/index.mako:17 … … 51 50 msgstr "团队:" 52 51 53 #: pysvnmanager/controllers/authz.py: 53 pysvnmanager/controllers/role.py:5554 #: pysvnmanager/controllers/role.py: 7252 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 53 #: pysvnmanager/controllers/role.py:89 55 54 #: pysvnmanager/templates/authz/index.mako:150 56 55 #: pysvnmanager/templates/check/index.mako:19 … … 62 61 msgstr "别名:" 63 62 64 #: pysvnmanager/controllers/authz.py: 68 pysvnmanager/controllers/authz.py:9965 #: pysvnmanager/controllers/check.py: 89 pysvnmanager/controllers/repos.py:4066 #: pysvnmanager/controllers/repos.py: 59 pysvnmanager/controllers/role.py:4363 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 64 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 65 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 67 66 #: pysvnmanager/templates/check/index.mako:9 68 67 #: pysvnmanager/templates/check/index.mako:23 … … 72 71 msgstr "请选择..." 73 72 74 #: pysvnmanager/controllers/authz.py:1 6073 #: pysvnmanager/controllers/authz.py:177 75 74 #, python-format 76 75 msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 77 76 msgstr "用户 %(user)s 修改了授权策略。(rev:%(rev)s)" 78 77 79 #: pysvnmanager/controllers/authz.py:1 7378 #: pysvnmanager/controllers/authz.py:190 80 79 #, python-format 81 80 msgid "Repository %s not exist." 82 81 msgstr "版本库 %s 不存在。" 83 82 84 #: pysvnmanager/controllers/authz.py:1 8183 #: pysvnmanager/controllers/authz.py:198 85 84 #, python-format 86 85 msgid "Module %s not exist." 87 86 msgstr "模组 %s 不存在。" 88 87 89 #: pysvnmanager/controllers/authz.py: 18788 #: pysvnmanager/controllers/authz.py:204 90 89 msgid "You can not delete yourself from admin list." 91 90 msgstr "您不能将自己从管理员列表中删除。" 92 91 93 #: pysvnmanager/controllers/authz.py:2 1292 #: pysvnmanager/controllers/authz.py:229 94 93 #, python-format 95 94 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 96 95 msgstr "用户 %(user)s 删除了授权策略。(rev:%(rev)s)" 97 96 98 #: pysvnmanager/controllers/check.py: 6997 #: pysvnmanager/controllers/check.py:86 99 98 #: pysvnmanager/templates/auth_failed.mako:3 100 99 msgid "Permission denied." 101 100 msgstr "没有权限。" 102 101 103 #: pysvnmanager/controllers/logs.py: 50102 #: pysvnmanager/controllers/logs.py:68 104 103 msgid "Rev" 105 104 msgstr "版本" 106 105 107 #: pysvnmanager/controllers/logs.py: 51106 #: pysvnmanager/controllers/logs.py:69 108 107 msgid "Who" 109 108 msgstr "管理员" 110 109 111 #: pysvnmanager/controllers/logs.py: 52110 #: pysvnmanager/controllers/logs.py:70 112 111 msgid "When" 113 112 msgstr "时间" 114 113 115 #: pysvnmanager/controllers/logs.py: 53114 #: pysvnmanager/controllers/logs.py:71 116 115 msgid "Why" 117 116 msgstr "说明" 118 117 119 #: pysvnmanager/controllers/logs.py: 54118 #: pysvnmanager/controllers/logs.py:72 120 119 msgid "Compare" 121 120 msgstr "比较" 122 121 123 #: pysvnmanager/controllers/logs.py: 97122 #: pysvnmanager/controllers/logs.py:115 124 123 msgid "Page: " 125 124 msgstr "页面: " 126 125 127 #: pysvnmanager/controllers/logs.py:1 33126 #: pysvnmanager/controllers/logs.py:151 128 127 msgid "Compares between" 129 128 msgstr "版本间比较" 130 129 131 #: pysvnmanager/controllers/logs.py:1 52130 #: pysvnmanager/controllers/logs.py:170 132 131 #, python-format 133 132 msgid "Rollback successfully to revision: %s" 134 133 msgstr "成功回滚至版本: %s" 135 134 136 #: pysvnmanager/controllers/logs.py:1 61135 #: pysvnmanager/controllers/logs.py:179 137 136 #, python-format 138 137 msgid "Rollback failed: %s" 139 138 msgstr "回滚失败: %s" 140 139 141 #: pysvnmanager/controllers/repos.py: 74140 #: pysvnmanager/controllers/repos.py:91 142 141 msgid "Installed hooks:" 143 142 msgstr "已安装插件:" 144 143 145 #: pysvnmanager/controllers/repos.py: 80144 #: pysvnmanager/controllers/repos.py:97 146 145 msgid "Id" 147 146 msgstr "Id" 148 147 149 #: pysvnmanager/controllers/repos.py: 81148 #: pysvnmanager/controllers/repos.py:98 150 149 msgid "Plugin name" 151 150 msgstr "插件名称" 152 151 153 #: pysvnmanager/controllers/repos.py: 82154 #: pysvnmanager/hooks/plugins/__init__.py:3 14152 #: pysvnmanager/controllers/repos.py:99 153 #: pysvnmanager/hooks/plugins/__init__.py:330 155 154 msgid "Type" 156 155 msgstr "类型" 157 156 158 #: pysvnmanager/controllers/repos.py: 96157 #: pysvnmanager/controllers/repos.py:113 159 158 msgid "Remove selected hooks" 160 159 msgstr "删除选择的插件" 161 160 162 #: pysvnmanager/controllers/repos.py:1 19161 #: pysvnmanager/controllers/repos.py:136 163 162 #, python-format 164 163 msgid "" … … 169 168 "%(msg)s" 170 169 171 #: pysvnmanager/controllers/repos.py:1 22170 #: pysvnmanager/controllers/repos.py:139 172 171 #, python-format 173 172 msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 174 173 msgstr "成功启用版本库'%(repos)s'的插件'%(plugin)s'。 " 175 174 176 #: pysvnmanager/controllers/repos.py:1 43175 #: pysvnmanager/controllers/repos.py:160 177 176 #, python-format 178 177 msgid "" … … 183 182 "%(msg)s" 184 183 185 #: pysvnmanager/controllers/repos.py:1 46184 #: pysvnmanager/controllers/repos.py:163 186 185 #, python-format 187 186 msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 188 187 msgstr "成功删除版本库'%(repos)s'的插件'%(plugin)s'。" 189 188 190 #: pysvnmanager/controllers/repos.py:1 49189 #: pysvnmanager/controllers/repos.py:166 191 190 #, python-format 192 191 msgid "No plugin has been deleted for '%(repos)s'." 193 192 msgstr "未删除版本库'%(repos)s'的插件。" 194 193 195 #: pysvnmanager/controllers/repos.py:1 58194 #: pysvnmanager/controllers/repos.py:175 196 195 #, python-format 197 196 msgid "" … … 202 201 "%(msg)s" 203 202 204 #: pysvnmanager/controllers/repos.py:1 61203 #: pysvnmanager/controllers/repos.py:178 205 204 #, python-format 206 205 msgid "Create repository '%(repos)s' success." 207 206 msgstr "成功创建版本库'%(repos)s'。" 208 207 209 #: pysvnmanager/controllers/repos.py:1 74208 #: pysvnmanager/controllers/repos.py:191 210 209 #, python-format 211 210 msgid "" … … 216 215 "%(msg)s" 217 216 218 #: pysvnmanager/controllers/repos.py:1 77217 #: pysvnmanager/controllers/repos.py:194 219 218 #, python-format 220 219 msgid "Delete blank repository '%(repos)s' success." 221 220 msgstr "成功删除版本库'%(repos)s'。" 222 221 223 #: pysvnmanager/controllers/role.py:1 03222 #: pysvnmanager/controllers/role.py:120 224 223 #, python-format 225 224 msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 226 225 msgstr "用户 %(user)s 修改用户组: %(grp)s。(rev:%(rev)s)" 227 226 228 #: pysvnmanager/controllers/role.py:1 23227 #: pysvnmanager/controllers/role.py:140 229 228 #, python-format 230 229 msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 231 230 msgstr "用户 %(user)s 删除用户组: %(grp)s。(rev:%(rev)s)" 232 231 233 #: pysvnmanager/controllers/role.py:1 45232 #: pysvnmanager/controllers/role.py:162 234 233 #, python-format 235 234 msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 236 235 msgstr "用户 %(user)s 修改别名: %(alias)s。(rev:%(rev)s)" 237 236 238 #: pysvnmanager/controllers/role.py:1 65237 #: pysvnmanager/controllers/role.py:182 239 238 #, python-format 240 239 msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 241 240 msgstr "用户 %(user)s 删除别名: %(alias)s。(rev:%(rev)s,%(msg)s)" 242 241 243 #: pysvnmanager/controllers/security.py: 34242 #: pysvnmanager/controllers/security.py:52 244 243 #, python-format 245 244 msgid "User %s logged in" 246 245 msgstr "用户 %s 登录" 247 246 248 #: pysvnmanager/controllers/security.py: 45247 #: pysvnmanager/controllers/security.py:63 249 248 #, python-format 250 249 msgid "Login failed for user: %s" 251 250 msgstr "以 %s 身份登录失败" 252 251 253 #: pysvnmanager/controllers/security.py: 53252 #: pysvnmanager/controllers/security.py:71 254 253 #, python-format 255 254 msgid "User %s logged out" 256 255 msgstr "用户 %s 登出" 257 256 258 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 10257 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:26 259 258 msgid "Allow revprop change" 260 259 msgstr "允许修改版本属性" 261 260 262 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 16261 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:32 263 262 msgid "Allow user change commit-log or other rev-properties." 264 263 msgstr "允许用户修改提交说明等版本属性" 265 264 266 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py: 19265 #: pysvnmanager/hooks/plugins/AllowRevpropChange.py:35 267 266 msgid "" 268 267 "Commit-log is the only rev-prop we allow to change. Because the changes " … … 271 270 msgstr "提交说明是我们唯一允许修改的版本属性。因为版本属性本身未被版本控制,修改版本属性是不可恢复的操作,所以管理员在启用本功能前,应该考虑设置变更通知以记录修改事件。" 272 271 273 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 10272 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:26 274 273 msgid "Mantis bugtracking integration" 275 274 msgstr "整合 Mantis 缺陷跟踪系统" 276 275 277 #: pysvnmanager/hooks/plugins/BugtrackMantis.py: 16276 #: pysvnmanager/hooks/plugins/BugtrackMantis.py:32 278 277 msgid "" 279 278 "Integration Subversion with Mantis bugtracking. If commit-log has proper " … … 284 283 "的状态修改为已修改,并将commit-log 以及代码变更添加到说明中。" 285 284 286 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 10285 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:26 287 286 msgid "Subversion client version check (>1.5.0)" 288 287 msgstr "Subversion 客户端版本检查 (>1.5.0)" 289 288 290 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 16289 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:32 291 290 msgid "Check subversion client version. if version below 1.5.0, checkin denied." 292 291 msgstr "检查 subversion 客户端版本。如果版本号小于 1.5.0,禁止客户端提交。" 293 292 294 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py: 19293 #: pysvnmanager/hooks/plugins/CapCheckMergeInfo.py:35 295 294 msgid "" 296 295 "SVN below 1.5.0 can not handle mergeinfo properly.It can mess up our " … … 298 297 msgstr "小于 1.5.0 版本的 SVN 客户端不能正确处理 mergeinfo。会破坏自动的合并追踪功能!" 299 298 300 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 10299 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:26 301 300 msgid "Detect case-insensitive filename clashes" 302 301 msgstr "检查大小写引起的文件名冲突" 303 302 304 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 16303 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:32 305 304 msgid "A pre-commit hook to detect case-insensitive filename clashes." 306 305 msgstr "在 pre-commit 钩子中执行,检查文件名大小写引起的文件名冲突。" 307 306 308 #: pysvnmanager/hooks/plugins/CaseInsensitive.py: 19307 #: pysvnmanager/hooks/plugins/CaseInsensitive.py:35 309 308 msgid "" 310 309 "Subversion services may host on a filename case-sensitive OS,\n" … … 324 323 "- 如果发现冲突,拒绝提交,并报错。\n" 325 324 326 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 11325 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:27 327 326 msgid "Check commit log message" 328 327 msgstr "检查提交说明" 329 328 330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 17329 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:33 331 330 msgid "User must provide commit-log message when checkin." 332 331 msgstr "用户在代码提交时,必须提供提交说明。" 333 332 334 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 50335 #: pysvnmanager/hooks/plugins/EmailNotify.py: 73336 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 49333 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:66 334 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 335 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 337 336 msgid "Current configuration" 338 337 msgstr "当前设置" 339 338 340 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 52339 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:68 341 340 msgid "Commit log check is enabled." 342 341 msgstr "提交说明检查已经启用。" 343 342 344 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 54343 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:70 345 344 msgid "Commit log check is disabled." 346 345 msgstr "提交说明检查已经禁用。" 347 346 348 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 56349 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 95347 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 348 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 350 349 msgid "Minimal size of commit log: " 351 350 msgstr "提交说明长度检查,最少:" 352 351 353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 61354 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 01352 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 355 354 msgid "Pattern which commit log must match against: " 356 355 msgstr "提交说明必须与该模板匹配:" 357 356 358 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 64357 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:80 359 358 msgid "Pattern which commit log must **NOT** match against: " 360 359 msgstr "提交说明 **不能** 出现类似内容:" 361 360 362 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 83363 #: pysvnmanager/hooks/plugins/EmailNotify.py: 97364 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 73361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 362 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 363 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 365 364 msgid "Fill this form" 366 365 msgstr "填写表单" 367 366 368 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 87367 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:103 369 368 msgid "Enable commit log check: " 370 369 msgstr "启用提交说明检查:" 371 370 372 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 90373 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 04374 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 80371 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 372 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 373 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 375 374 msgid "Enable" 376 375 msgstr "启用" 377 376 378 #: pysvnmanager/hooks/plugins/CommitLogCheck.py: 92379 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 06380 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 82377 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 378 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 379 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 381 380 msgid "Disable" 382 381 msgstr "关闭" 383 382 384 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 07383 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 385 384 msgid "Pattern which commit log must <b>NOT</b> match against: " 386 385 msgstr "提交说明<b>不能</b>出现类似内容:" 387 386 388 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:1 40387 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 389 388 msgid "Commit log size must > 0." 390 389 msgstr "提交说明最小长度阈值必须大于零。" 391 390 392 #: pysvnmanager/hooks/plugins/EmailNotify.py: 11391 #: pysvnmanager/hooks/plugins/EmailNotify.py:27 393 392 msgid "Send email notify for commit event" 394 393 msgstr "针对代码变更发出邮件通知" 395 394 396 #: pysvnmanager/hooks/plugins/EmailNotify.py: 17395 #: pysvnmanager/hooks/plugins/EmailNotify.py:33 397 396 msgid "" 398 397 "Send a notification email describing either a commit or a revprop-change " … … 400 399 msgstr "当对 Subversion 代码库中的代码修改或者修改状态,发出邮件通知。" 401 400 402 #: pysvnmanager/hooks/plugins/EmailNotify.py: 21401 #: pysvnmanager/hooks/plugins/EmailNotify.py:37 403 402 msgid "" 404 403 "\n" … … 446 445 "--diff n 不包含代码差异(缺省包含)\n" 447 446 448 #: pysvnmanager/hooks/plugins/EmailNotify.py: 75447 #: pysvnmanager/hooks/plugins/EmailNotify.py:91 449 448 msgid "Email notify enabled." 450 449 msgstr "邮件通知启用。" 451 450 452 #: pysvnmanager/hooks/plugins/EmailNotify.py: 77451 #: pysvnmanager/hooks/plugins/EmailNotify.py:93 453 452 msgid "Email notify disabled." 454 453 msgstr "邮件通知关闭。" 455 454 456 #: pysvnmanager/hooks/plugins/EmailNotify.py: 79455 #: pysvnmanager/hooks/plugins/EmailNotify.py:95 457 456 msgid "Parameters: " 458 457 msgstr "参数: " 459 458 460 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 01459 #: pysvnmanager/hooks/plugins/EmailNotify.py:117 461 460 msgid "Enable email notify." 462 461 msgstr "启用邮件通知。" 463 462 464 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 09463 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 465 464 msgid "Input email notify configurations: " 466 465 msgstr "输入邮件通知配置参数: " 467 466 468 #: pysvnmanager/hooks/plugins/EmailNotify.py:1 39469 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:1 15467 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 468 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 470 469 msgid "Wrong configuration." 471 470 msgstr "错误的配置" 472 471 473 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 10472 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:26 474 473 msgid "mime-type and eol-style check" 475 474 msgstr "文件类型和换行符设置检查" 476 475 477 #: pysvnmanager/hooks/plugins/EolStyleCheck.py: 16476 #: pysvnmanager/hooks/plugins/EolStyleCheck.py:32 478 477 msgid "New file must provide svn:eol-style if not binary file." 479 478 msgstr "新增的文本文件,必须设置换行符。" 480 479 481 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 10480 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:26 482 481 msgid "Subversion readonly mirror" 483 482 msgstr "SVN 只读镜像" 484 483 485 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 16484 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:32 486 485 msgid "" 487 486 "This subversion repository is a svnsync readonly mirror. Nobody can " … … 489 488 msgstr "本 SVN 版本库是一个 svnsync 的只读镜像。除了 svnsync 管理员,任何人都不能提交。" 490 489 491 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 20490 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:36 492 491 msgid "" 493 492 "Commit to the remote svn server, this repository is a readonly svn " … … 496 495 msgstr "提交到远程的 SVN 服务器,本地服务器是一个只读的 SVN 镜像。同步远程与本地的 SVN 服务器,是管理员的职责。" 497 496 498 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 51497 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:67 499 498 msgid "Readonly mirror enabled." 500 499 msgstr "只读镜像启用。" 501 500 502 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 53501 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:69 503 502 msgid "Readonly mirror disabled." 504 503 msgstr "只读镜像关闭。" 505 504 506 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 55505 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 507 506 msgid "Admin user: " 508 507 msgstr "管理员: " 509 508 510 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 77509 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 511 510 msgid "Enable readonly mirror: " 512 511 msgstr "启用只读镜像:" 513 512 514 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py: 85513 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 515 514 msgid "Svnsync administrator: " 516 515 msgstr "Svnsync 管理员:" 517 516 518 #: pysvnmanager/hooks/plugins/__init__.py: 95517 #: pysvnmanager/hooks/plugins/__init__.py:111 519 518 #, python-format 520 519 msgid "repos '%s' not exist!" 521 520 msgstr "版本库 %s 不存在!" 522 521 523 #: pysvnmanager/hooks/plugins/__init__.py:1 52522 #: pysvnmanager/hooks/plugins/__init__.py:168 524 523 #, python-format 525 524 msgid "Conflict: plugin '%s' is modified by others." 526 525 msgstr "冲突:插件'%s'被其他人修改了。" 527 526 528 #: pysvnmanager/hooks/plugins/__init__.py:182 529 #: pysvnmanager/hooks/plugins/__init__.py:209 530 #: pysvnmanager/hooks/plugins/__init__.py:215 531 #: pysvnmanager/hooks/plugins/__init__.py:234 532 #: pysvnmanager/hooks/plugins/__init__.py:332 533 #: pysvnmanager/hooks/plugins/__init__.py:339 527 #: pysvnmanager/hooks/plugins/__init__.py:198 528 #: pysvnmanager/hooks/plugins/__init__.py:225 529 #: pysvnmanager/hooks/plugins/__init__.py:231 530 #: pysvnmanager/hooks/plugins/__init__.py:250 534 531 #: pysvnmanager/hooks/plugins/__init__.py:348 532 #: pysvnmanager/hooks/plugins/__init__.py:355 533 #: pysvnmanager/hooks/plugins/__init__.py:364 535 534 msgid "Plugin not fully implemented." 536 535 msgstr "插件未完全实现。" 537 536 538 #: pysvnmanager/hooks/plugins/__init__.py:3 13537 #: pysvnmanager/hooks/plugins/__init__.py:329 539 538 msgid "Name" 540 539 msgstr "名称" 541 540 542 #: pysvnmanager/hooks/plugins/__init__.py:3 15541 #: pysvnmanager/hooks/plugins/__init__.py:331 543 542 msgid "Description" 544 543 msgstr "说明" 545 544 546 #: pysvnmanager/model/repos.py: 39545 #: pysvnmanager/model/repos.py:55 547 546 #, python-format 548 547 msgid "Repos root does not exist: %s" 549 548 msgstr "版本库根不存在:%s" 550 549 551 #: pysvnmanager/model/repos.py: 68550 #: pysvnmanager/model/repos.py:84 552 551 #, python-format 553 552 msgid "Repos %s already exists." 554 553 msgstr "版本库 %s 已经存在。" 555 554 556 #: pysvnmanager/model/repos.py:1 39555 #: pysvnmanager/model/repos.py:166 557 556 #, python-format 558 557 msgid "Repos %s is not a blank repository." 559 558 msgstr "版本库 %s 不是一个空的版本库。" 560 559 561 #: pysvnmanager/model/svnauthz.py: 61560 #: pysvnmanager/model/svnauthz.py:77 562 561 msgid "Name is not given." 563 562 msgstr "未能提供名称。" 564 563 565 #: pysvnmanager/model/svnauthz.py: 63564 #: pysvnmanager/model/svnauthz.py:79 566 565 msgid "Name is not string." 567 566 msgstr "名称不是字符串" 568 567 569 #: pysvnmanager/model/svnauthz.py: 67568 #: pysvnmanager/model/svnauthz.py:83 570 569 #, python-format 571 570 msgid "Name (%s) contains invalid characters." 572 571 msgstr "名称(%s)中包含非法字符。" 573 572 574 #: pysvnmanager/model/svnauthz.py:4 75573 #: pysvnmanager/model/svnauthz.py:491 575 574 #, python-format 576 575 msgid "Recursive group membership for %s" 577 576 msgstr "%s 出现了循环组引用。" 578 577 579 #: pysvnmanager/model/svnauthz.py:5 69578 #: pysvnmanager/model/svnauthz.py:585 580 579 #, python-format 581 580 msgid "Not a valid username: %s" 582 581 msgstr "非法用户名: %s" 583 582 584 #: pysvnmanager/model/svnauthz.py: 686583 #: pysvnmanager/model/svnauthz.py:702 585 584 #, python-format 586 585 msgid "Group %s is referenced by group %s." 587 586 msgstr "用户组 %s 被组 %s 引用。" 588 587 589 #: pysvnmanager/model/svnauthz.py:12 32588 #: pysvnmanager/model/svnauthz.py:1248 590 589 msgid "Update failed! You are working on a out-of-date revision." 591 590 msgstr "更新失败!您的更改是基于一个过期的版本,请先刷新再更改。" 592 591 593 #: pysvnmanager/model/svnauthz.py:1 486 pysvnmanager/model/svnauthz.py:1493594 #: pysvnmanager/model/svnauthz.py:1 497592 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 593 #: pysvnmanager/model/svnauthz.py:1513 595 594 #, python-format 596 595 msgid "Unknown rule format: %s" 597 596 msgstr "未知策略格式: %s" 598 597 599 #: pysvnmanager/model/svnauthz.py:15 11598 #: pysvnmanager/model/svnauthz.py:1527 600 599 #, python-format 601 600 msgid "No module exist for %s:%s" 602 601 msgstr "模块不存在: %s:%s" 603 602 604 #: pysvnmanager/model/svnauthz.py:16 21603 #: pysvnmanager/model/svnauthz.py:1637 605 604 #, python-format 606 605 msgid "Alias %s is referenced by group %s." 607 606 msgstr "别名 %s 为用户组 %s 引用。" 608 607 609 #: pysvnmanager/model/svnauthz.py:16 33608 #: pysvnmanager/model/svnauthz.py:1649 610 609 #, python-format 611 610 msgid "%s is referenced by [%s]." 612 611 msgstr "%s 在 [%s] 中被引用。" 613 612 614 #: pysvnmanager/model/svnauthz.py:17 69613 #: pysvnmanager/model/svnauthz.py:1785 615 614 #, python-format 616 615 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 617 616 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有完全权限 (RW)" 618 617 619 #: pysvnmanager/model/svnauthz.py:17 71618 #: pysvnmanager/model/svnauthz.py:1787 620 619 #, python-format 621 620 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 622 621 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有只读权限 (RO)" 623 622 624 #: pysvnmanager/model/svnauthz.py:17 73623 #: pysvnmanager/model/svnauthz.py:1789 625 624 #, python-format 626 625 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 627 626 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s *没有* 访问权限 (XX)" 628 627 629 #: pysvnmanager/model/svnauthz.py:18 13628 #: pysvnmanager/model/svnauthz.py:1829 630 629 #, python-format 631 630 msgid "" … … 646 645 "\n" 647 646 648 #: pysvnmanager/model/svnauthz.py:18 32647 #: pysvnmanager/model/svnauthz.py:1848 649 648 #, python-format 650 649 msgid "" … … 823 822 824 823 #: pysvnmanager/templates/authz/index.mako:678 825 #: pysvnmanager/templates/role/index.mako:7 11824 #: pysvnmanager/templates/role/index.mako:708 826 825 msgid "Save" 827 826 msgstr "保存" 828 827 829 828 #: pysvnmanager/templates/authz/index.mako:679 830 #: pysvnmanager/templates/role/index.mako:7 12829 #: pysvnmanager/templates/role/index.mako:709 831 830 msgid "Delete" 832 831 msgstr "删除" 833 832 834 833 #: pysvnmanager/templates/authz/index.mako:680 835 #: pysvnmanager/templates/role/index.mako:71 3834 #: pysvnmanager/templates/role/index.mako:710 836 835 msgid "Cancel" 837 836 msgstr "取消" … … 839 838 #: pysvnmanager/templates/check/index.mako:5 840 839 #: pysvnmanager/templates/check/index.mako:106 841 #: pysvnmanager/templates/check/index.mako:17 6840 #: pysvnmanager/templates/check/index.mako:173 842 841 msgid "Check Permissions" 843 842 msgstr "权限检查" … … 871 870 msgstr "选择用户名" 872 871 873 #: pysvnmanager/templates/check/index.mako:13 9874 #: pysvnmanager/templates/check/index.mako:1 52875 #: pysvnmanager/templates/check/index.mako:16 4872 #: pysvnmanager/templates/check/index.mako:138 873 #: pysvnmanager/templates/check/index.mako:149 874 #: pysvnmanager/templates/check/index.mako:161 876 875 msgid "Manual input" 877 876 msgstr "手工输入" 878 877 879 #: pysvnmanager/templates/check/index.mako:14 6878 #: pysvnmanager/templates/check/index.mako:145 880 879 msgid "Select repository" 881 880 msgstr "选择版本库" 882 881 883 #: pysvnmanager/templates/check/index.mako:1 60882 #: pysvnmanager/templates/check/index.mako:157 884 883 msgid "Select module" 885 884 msgstr "选择模组" … … 1009 1008 msgstr "选择一个角色:" 1010 1009 1011 #: pysvnmanager/templates/role/index.mako:63 61010 #: pysvnmanager/templates/role/index.mako:634 1012 1011 msgid "New Group" 1013 1012 msgstr "新用户组" 1014 1013 1015 #: pysvnmanager/templates/role/index.mako:63 71014 #: pysvnmanager/templates/role/index.mako:635 1016 1015 msgid "New Alias" 1017 1016 msgstr "新别名" 1018 1017 1019 #: pysvnmanager/templates/role/index.mako:6 411018 #: pysvnmanager/templates/role/index.mako:639 1020 1019 msgid "New group name:" 1021 1020 msgstr "新用户组名称:" 1022 1021 1023 #: pysvnmanager/templates/role/index.mako:64 51022 #: pysvnmanager/templates/role/index.mako:643 1024 1023 msgid "New alias name:" 1025 1024 msgstr "新别名名称:" 1026 1025 1027 #: pysvnmanager/templates/role/index.mako:65 71026 #: pysvnmanager/templates/role/index.mako:655 1028 1027 msgid "Members list" 1029 1028 msgstr "成员列表" 1030 1029 1031 #: pysvnmanager/templates/role/index.mako:66 21030 #: pysvnmanager/templates/role/index.mako:660 1032 1031 msgid "Other users" 1033 1032 msgstr "其他用户" 1034 1033 1035 #: pysvnmanager/templates/role/index.mako:6 811034 #: pysvnmanager/templates/role/index.mako:679 1036 1035 msgid "Ignore recursive" 1037 1036 msgstr "忽略组间循环引用" 1038 1037 1039 #: pysvnmanager/templates/role/index.mako:69 31038 #: pysvnmanager/templates/role/index.mako:691 1040 1039 msgid "User name:" 1041 1040 msgstr "用户名:" -
trunk/pysvnmanager/lib/app_globals.py
r50 r55 17 17 18 18 """The application's Globals object""" 19 from pylons import config20 19 21 20 class Globals(object): -
trunk/pysvnmanager/lib/base.py
r50 r55 18 18 """The base Controller API 19 19 20 Provides the BaseController class for subclassing, and other objects 21 utilized by Controllers. 20 Provides the BaseController class for subclassing. 22 21 """ 22 from pylons.controllers import WSGIController 23 from pylons.templating import render_mako as render 24 23 25 from pylons import c, cache, config, g, request, response, session 24 from pylons.controllers import WSGIController25 26 from pylons.controllers.util import abort, etag_cache, redirect_to 26 27 from pylons.decorators import jsonify, validate 27 28 from pylons.i18n import _, ungettext, N_ 28 from pylons.templating import render29 29 from pylons.i18n import set_lang, add_fallback 30 30 import pysvnmanager.lib.helpers as h … … 92 92 # the request is routed to. This routing information is 93 93 # available in environ['pylons.routes_dict'] 94 94 95 return WSGIController.__call__(self, environ, start_response) 95 96 -
trunk/pysvnmanager/lib/helpers.py
r50 r55 21 21 available to Controllers. This module is available to both as 'h'. 22 22 """ 23 from webhelpers import * 23 # Import helpers as desired, or define your own, ie: 24 # from webhelpers.html.tags import checkbox, password 25 26 from routes import url_for, redirect_to 27 from webhelpers.html import escape, HTML, literal, url_escape 28 from webhelpers.html.tags import * 29 from webhelpers.rails.prototype import link_to_remote, form_remote_tag 30 from webhelpers.rails.scriptaculous import visual_effect 31 from webhelpers.rails.asset_tag import javascript_include_tag, stylesheet_link_tag -
trunk/pysvnmanager/model/svnauthz.py
r50 r55 1279 1279 raise Exception, "Size of file (%s) is zero!" % filename 1280 1280 1281 from svn import repos as _repos 1282 _repos.authz_read(filename, 1) 1281 try: 1282 from svn import repos as _repos 1283 _repos.authz_read(filename, 1) 1284 except ImportError: 1285 pass 1283 1286 1284 1287 def __str__(self): -
trunk/pysvnmanager/templates/base.mako
r45 r55 32 32 <tr> 33 33 <td>${h.link_to(_("Check permissions"), h.url_for(controller="check", id=None))}</td> 34 <td>${h.link_to(_("Role management"), h.url (controller="role", id=None))}</td>35 <td>${h.link_to(_("ACL management"), h.url (controller="authz", id=None))}</td>36 <td>${h.link_to(_("Repos management"), h.url (controller="repos", id=None))}</td>37 <td>${h.link_to(_("Change log"), h.url (controller="logs", id=None))}</td>34 <td>${h.link_to(_("Role management"), h.url_for(controller="role", id=None))}</td> 35 <td>${h.link_to(_("ACL management"), h.url_for(controller="authz", id=None))}</td> 36 <td>${h.link_to(_("Repos management"), h.url_for(controller="repos", id=None))}</td> 37 <td>${h.link_to(_("Change log"), h.url_for(controller="logs", id=None))}</td> 38 38 <td>welcome ${session.get('user')}</td> 39 <td>${h.link_to(_("Logout"), h.url (controller="logout", id=None))}</td>39 <td>${h.link_to(_("Logout"), h.url_for(controller="logout", id=None))}</td> 40 40 </tr> 41 41 </table> -
trunk/pysvnmanager/templates/check/index.mako
r45 r55 7 7 8 8 <% 9 userlist = [ [_("Please choose..."), '...'],10 [_("All users(with anon)"), '*'],11 [_("Known users"), '$authenticated'],12 [_("Anonymous"), '$anonymous'],]9 userlist = [('...', _("Please choose...")), 10 ('*', _("All users(with anon)")), 11 ('$authenticated', _("Known users")), 12 ('$anonymous', _("Anonymous")),] 13 13 for i in c.userlist: 14 14 if i == '*' or i =='$authenticated' or i == '$anonymous': 15 15 continue 16 16 if i[0] == '@': 17 userlist.append( [_("Group:")+i[1:], i])17 userlist.append((i, _("Group:")+i[1:])) 18 18 elif i[0] == '&': 19 userlist.append( [_("Alias:")+i[1:], i])19 userlist.append((i, _("Alias:")+i[1:])) 20 20 else: 21 21 userlist.append([i, i]) 22 22 23 reposlist = [ [_("Please choose..."), '...'], [_("All repos"), '*']]23 reposlist = [('...', _("Please choose...")), ('*', _("All repos"))] 24 24 if '/' in c.reposlist: 25 reposlist.append( [_("Default"), '/'])25 reposlist.append(('/', _("Default"))) 26 26 for i in c.reposlist: 27 27 if i == '/': 28 28 continue 29 reposlist.append( [i, i])29 reposlist.append((i, i)) 30 30 31 31 pathlist = [[_("All modules"), '*'],] … … 107 107 108 108 ## Classic Form 109 ## ${h.form(h.url (action='permission'), method='post')}109 ## ${h.form(h.url_for(action='permission'), method='post')} 110 110 111 111 ## AJAX Form … … 114 114 h.form_remote_tag( 115 115 html={'id':'main_form'}, 116 url=h.url (action='access_map'),116 url=h.url_for(action='access_map'), 117 117 update=dict(success="acl_msg", failure="message"), 118 118 method='post', before='showNoticesPopup()', … … 133 133 <input type="radio" name="userinput" value="select" Checked> 134 134 ${_("Select username")} 135 <select name="userselector" size="1" onFocus="select_username(this.form)"> 136 ${h.options_for_select(userlist, c.selected_username)} 137 </select><br/> 135 ${h.select("userselector", c.selected_username, userlist, onFocus="select_username(this.form)")} 136 <br/> 138 137 <input type="radio" name="userinput" value="manual"> 139 138 ${_("Manual input")} … … 145 144 <input type="radio" name="reposinput" value="select" Checked onClick="update_path(this.form)"> 146 145 ${_("Select repository")} 147 <select name="reposselector" size="0" onFocus="select_repos(this.form)" 148 onChange="update_path(this.form)"> 149 ${h.options_for_select(reposlist, c.selected_repos)} 150 </select><br/> 146 ${h.select("reposselector", c.selected_repos, reposlist, onFocus="select_repos(this.form)", onChange="update_path(this.form)")} 147 <br/> 151 148 <input type="radio" name="reposinput" value="manual"> 152 149 ${_("Manual input")} -
trunk/pysvnmanager/templates/repos/create.mako
r44 r55 13 13 h.form_remote_tag( 14 14 html={'id':'main_form'}, 15 url=h.url (action='create_submit'),15 url=h.url_for(action='create_submit'), 16 16 update="message", 17 17 method='post', before='showNoticesPopup()', -
trunk/pysvnmanager/templates/repos/hooks.mako
r46 r55 189 189 <select name="repos_list" size="1" onChange='repos_changed()'> 190 190 </select> 191 ${h.link_to(_("Add repository"), h.url (action="create"))}192 ${h.link_to(_("Remove repository"), h.url (action="remove"))}191 ${h.link_to(_("Add repository"), h.url_for(action="create"))} 192 ${h.link_to(_("Remove repository"), h.url_for(action="remove"))} 193 193 </DIV> 194 194 … … 207 207 h.form_remote_tag( 208 208 html={'id':'hook_setting_form'}, 209 url=h.url (action='setup_hook'),209 url=h.url_for(action='setup_hook'), 210 210 update="message", 211 211 method='post', before='showNoticesPopup()', … … 237 237 h.form_remote_tag( 238 238 html={'id':'installed_hook_form'}, 239 url=h.url (action='uninstall_hook'),239 url=h.url_for(action='uninstall_hook'), 240 240 update="message", 241 241 method='post', before='installed_hook_form_submit(this); showNoticesPopup()', -
trunk/pysvnmanager/templates/repos/remove.mako
r44 r55 54 54 h.form_remote_tag( 55 55 html={'id':'main_form'}, 56 url=h.url (action='remove_submit'),56 url=h.url_for(action='remove_submit'), 57 57 update="message", 58 58 method='post', before='showNoticesPopup()', -
trunk/pysvnmanager/templates/role/index.mako
r45 r55 10 10 <% 11 11 12 role_list_opts = [ [_("Please choose..."), '...'],]12 role_list_opts = [('...', _("Please choose...")),] 13 13 14 14 for i in c.grouplist: … … 16 16 continue 17 17 elif i[0] == '@': 18 role_list_opts.append( [_("Group:")+i[1:], i])18 role_list_opts.append((i, _("Group:")+i[1:])) 19 19 else: 20 role_list_opts.append( [i, i])20 role_list_opts.append((i, i)) 21 21 for i in c.aliaslist: 22 22 if i[0] == '&': 23 role_list_opts.append( [_("Alias:")+i[1:], i])23 role_list_opts.append((i, _("Alias:")+i[1:])) 24 24 else: 25 role_list_opts.append( [i, i])26 27 alias_as_list_opts = [ [_("Please choose..."), '...'],]25 role_list_opts.append((i, i)) 26 27 alias_as_list_opts = [('...', _("Please choose...")),] 28 28 29 29 for i in c.userlist: 30 alias_as_list_opts.append( [i, i])30 alias_as_list_opts.append((i, i)) 31 31 32 32 all_avail_users = [] … … 631 631 <div id='role_list_box' style="position:relative;" class=gainlayout> 632 632 ${_("Select a role name:")} 633 <select name="role_list" size="1" onChange='role_changed()'> 634 ${h.options_for_select(role_list_opts)} 635 </select> 633 ${h.select("role_list", "", role_list_opts, onChange='role_changed()')} 636 634 <a href="#" onclick='new_group()'>[+${_("New Group")}]</a> 637 635 <a href="#" onclick='new_alias()'>[+${_("New Alias")}]</a> … … 694 692 </td> 695 693 <td> 696 <select name="alias_as_list" size="1" onChange="enable_save_btn();disable_delete_btn()"> 697 ${h.options_for_select(alias_as_list_opts)} 698 </select><br> 694 ${h.select("alias_as_list", "", alias_as_list_opts, onChange="enable_save_btn();disable_delete_btn()")} 695 <br> 699 696 <input type="text" name="alias_as_input" size="10" maxlength="50" onChange="enable_save_btn();disable_delete_btn()"> 700 697 </td> -
trunk/pysvnmanager/tests/__init__.py
r50 r55 18 18 """Pylons application test package 19 19 20 When the test runner finds and executes tests within this directory, 21 this file will be loaded to setup the test environment. 20 This package assumes the Pylons environment is already loaded, such as 21 when this script is imported from the `nosetests --with-pylons=test.ini` 22 command. 22 23 23 It registers the root directory of the project in sys.path and 24 pkg_resources, in case the project hasn't been installed with 25 setuptools. It also initializes the application via websetup (paster 26 setup-app) with the project's test.ini configuration file. 24 This module initializes the application via ``websetup`` (`paster 25 setup-app`) and provides the base testing objects. 27 26 """ 28 27 import os 29 28 import sys 30 29 from shutil import copyfile 30 from pylons import config 31 31 32 from unittest import TestCase 32 33 33 import pkg_resources34 import paste.fixture35 import paste.script.appinstall36 34 from paste.deploy import loadapp 35 from paste.fixture import TestApp 36 from paste.script.appinstall import SetupCommand 37 from pylons import config 37 38 from routes import url_for 38 39 39 from pylons import config 40 import pylons.test 41 import pkg_resources 40 42 41 43 __all__ = ['url_for', 'TestController'] … … 50 52 51 53 test_file = os.path.join(conf_dir, 'test.ini') 52 cmd = paste.script.appinstall.SetupCommand('setup-app') 53 cmd.run([test_file]) 54 55 # Invoke websetup with the current config file 56 SetupCommand('setup-app').run([config['__file__']]) 54 57 55 58 class TestController(TestCase): … … 57 60 def __init__(self, *args, **kwargs): 58 61 self.authz_file = os.path.dirname(__file__) + '/../../config/svn.access.test' 59 wsgiapp = loadapp('config:test.ini', relative_to=conf_dir) 60 self.app = paste.fixture.TestApp(wsgiapp) 62 if pylons.test.pylonsapp: 63 wsgiapp = pylons.test.pylonsapp 64 else: 65 wsgiapp = loadapp('config:%s' % config['__file__']) 66 self.app = TestApp(wsgiapp) 61 67 TestCase.__init__(self, *args, **kwargs) 62 68 -
trunk/pysvnmanager/tests/functional/test_authz.py
r50 r55 25 25 res = self.app.get(url_for(controller='authz')) 26 26 assert res.status == 302 27 self.assertEqual(res.header('location'), ' /security')27 self.assertEqual(res.header('location'), 'http://localhost/login') 28 28 29 29 # Login as common user … … 31 31 res = self.app.get(url_for(controller='authz')) 32 32 assert res.status == 302 33 self.assertEqual(res.header('location'), ' /security/failed', res.header('location'))33 self.assertEqual(res.header('location'), 'http://localhost/security/failed', res.header('location')) 34 34 35 35 # Login as repos admin … … 51 51 res = self.app.get(url_for(controller='authz', action='init_repos_list')) 52 52 assert res.status == 302 53 self.assertEqual(res.header('location'), ' /security')53 self.assertEqual(res.header('location'), 'http://localhost/login') 54 54 55 55 # authz test … … 57 57 res = self.app.get(url_for(controller='authz', action='init_repos_list')) 58 58 assert res.status == 302, res.status 59 assert res.header('location')== '/security/failed', res.header('location')59 assert res.header('location')=='http://localhost/security/failed', res.header('location') 60 60 61 61 # Login as superuser … … 79 79 res = self.app.get(url_for(controller='authz', action='repos_changed')) 80 80 assert res.status == 302 81 self.assertEqual(res.header('location'), ' /security')81 self.assertEqual(res.header('location'), 'http://localhost/login') 82 82 83 83 # authz test … … 85 85 res = self.app.get(url_for(controller='authz', action='repos_changed')) 86 86 assert res.status == 302, res.status 87 assert res.header('location')== '/security/failed', res.header('location')87 assert res.header('location')=='http://localhost/security/failed', res.header('location') 88 88 89 89 # Login as superuser … … 120 120 res = self.app.get(url_for(controller='authz', action='path_changed')) 121 121 assert res.status == 302 122 self.assertEqual(res.header('location'), ' /security')122 self.assertEqual(res.header('location'), 'http://localhost/login') 123 123 124 124 # authz test … … 126 126 res = self.app.get(url_for(controller='authz', action='path_changed')) 127 127 assert res.status == 302, res.status 128 assert res.header('location')== '/security/failed', res.header('location')128 assert res.header('location')=='http://localhost/security/failed', res.header('location') 129 129 130 130 self.login('root') … … 166 166 res = self.app.get(url_for(controller='authz', action='save_authz')) 167 167 assert res.status == 302 168 self.assertEqual(res.header('location'), ' /security')168 self.assertEqual(res.header('location'), 'http://localhost/login') 169 169 170 170 # authz test … … 172 172 res = self.app.get(url_for(controller='authz', action='save_authz')) 173 173 assert res.status == 302, res.status 174 assert res.header('location')== '/security/failed', res.header('location')174 assert res.header('location')=='http://localhost/security/failed', res.header('location') 175 175 176 176 # Login as superuser … … 334 334 res = self.app.get(url_for(controller='authz', action='delete_authz')) 335 335 assert res.status == 302 336 assert res.header('location')== ' /security', res.header('location')336 assert res.header('location')== 'http://localhost/login', res.header('location') 337 337 338 338 # authz test … … 340 340 res = self.app.get(url_for(controller='authz', action='delete_authz')) 341 341 assert res.status == 302, res.status 342 assert res.header('location')== '/security/failed', res.header('location')342 assert res.header('location')=='http://localhost/security/failed', res.header('location') 343 343 344 344 authz = self.load_authz() -
trunk/pysvnmanager/tests/functional/test_check.py
r50 r55 26 26 res = self.app.get(url_for(controller='check')) 27 27 assert res.status == 302 28 self.assertEqual(res.header('location'), ' /security')28 self.assertEqual(res.header('location'), 'http://localhost/login') 29 29 30 30 # Login as common user … … 32 32 res = self.app.get(url_for(controller='check')) 33 33 assert res.status == 302, res.status 34 assert res.header('location')== '/security/failed', res.header('location')34 assert res.header('location')=='http://localhost/security/failed', res.header('location') 35 35 36 36 # Login as repos admin … … 56 56 res = self.app.get(url_for(controller='check', action='access_map')) 57 57 assert res.status == 302 58 self.assertEqual(res.header('location'), ' /security')58 self.assertEqual(res.header('location'), 'http://localhost/login') 59 59 60 60 # authz test … … 62 62 res = self.app.get(url_for(controller='check', action='access_map')) 63 63 assert res.status == 302, res.status 64 assert res.header('location')== '/security/failed', res.header('location')64 assert res.header('location')=='http://localhost/security/failed', res.header('location') 65 65 66 66 # Login as superuser … … 229 229 res = self.app.get(url_for(controller='check', action='get_auth_path')) 230 230 assert res.status == 302 231 assert res.header('location')== ' /security', res.header('location')231 assert res.header('location')== 'http://localhost/login', res.header('location') 232 232 233 233 # authz test … … 235 235 res = self.app.get(url_for(controller='check', action='get_auth_path')) 236 236 assert res.status == 302, res.status 237 assert res.header('location')== '/security/failed', res.header('location')237 assert res.header('location')=='http://localhost/security/failed', res.header('location') 238 238 239 239 self.login('root') -
trunk/pysvnmanager/tests/functional/test_login.py
r50 r55 31 31 res = self.app.get(url_for(controller='security', action='submit'), params) 32 32 self.assert_(res.status == 302) 33 self.assert_(res.all_headers('location') == [' /check'])33 self.assert_(res.all_headers('location') == ['http://localhost/'], res.all_headers('location')) 34 34 self.assert_(res.session['user'] == 'root', res.session) 35 35 … … 54 54 res = self.app.get(url_for(controller='security', action='logout')) 55 55 self.assert_(res.status == 302) 56 self.assert_(res.all_headers('location') == [' /security'])56 self.assert_(res.all_headers('location') == ['http://localhost/login'], res.all_headers('location')) 57 57 self.assert_(res.session.get('user') == None, res.session.get('user')) -
trunk/pysvnmanager/tests/functional/test_repos.py
r50 r55 26 26 res = self.app.get(url_for(controller='repos')) 27 27 assert res.status == 302 28 self.assertEqual(res.header('location'), ' /security')28 self.assertEqual(res.header('location'), 'http://localhost/login') 29 29 30 30 # Login as common user … … 32 32 res = self.app.get(url_for(controller='repos')) 33 33 assert res.status == 302, res.status 34 assert res.header('location')== '/security/failed', res.header('location')34 assert res.header('location')=='http://localhost/security/failed', res.header('location') 35 35 36 36 # Permission denied for repos admin(not root admin) … … 38 38 res = self.app.get(url_for(controller='repos')) 39 39 assert res.status == 302, res.status 40 assert res.header('location')== '/security/failed', res.header('location')40 assert res.header('location')=='http://localhost/security/failed', res.header('location') 41 41 42 42 # Login as superuser -
trunk/pysvnmanager/tests/functional/test_role.py
r50 r55 26 26 res = self.app.get(url_for(controller='role')) 27 27 assert res.status == 302 28 self.assertEqual(res.header('location'), ' /security')28 self.assertEqual(res.header('location'), 'http://localhost/login') 29 29 30 30 # Login as common user … … 32 32 res = self.app.get(url_for(controller='role')) 33 33 assert res.status == 302, res.status 34 assert res.header('location')== '/security/failed', res.header('location')34 assert res.header('location')=='http://localhost/security/failed', res.header('location') 35 35 36 36 # Permission denied for repos admin(not root admin) … … 38 38 res = self.app.get(url_for(controller='role')) 39 39 assert res.status == 302, res.status 40 assert res.header('location')== '/security/failed', res.header('location')40 assert res.header('location')=='http://localhost/security/failed', res.header('location') 41 41 42 42 # Login as superuser … … 50 50 res = self.app.get(url_for(controller='role', action='get_role_info')) 51 51 assert res.status == 302 52 self.assertEqual(res.header('location'), ' /security')52 self.assertEqual(res.header('location'), 'http://localhost/login') 53 53 54 54 # authz test … … 56 56 res = self.app.get(url_for(controller='role', action='get_role_info')) 57 57 assert res.status == 302, res.status 58 assert res.header('location')== '/security/failed', res.header('location')58 assert res.header('location')=='http://localhost/security/failed', res.header('location') 59 59 60 60 # Login as superuser … … 125 125 res = self.app.get(url_for(controller='role', action='save_group')) 126 126 assert res.status == 302 127 self.assertEqual(res.header('location'), ' /security')127 self.assertEqual(res.header('location'), 'http://localhost/login') 128 128 129 129 # authz test … … 131 131 res = self.app.get(url_for(controller='role', action='save_group')) 132 132 assert res.status == 302, res.status 133 assert res.header('location')== '/security/failed', res.header('location')133 assert res.header('location')=='http://localhost/security/failed', res.header('location') 134 134 135 135 # Change group members, autodrop=no … … 209 209 res = self.app.get(url_for(controller='role', action='delete_group')) 210 210 assert res.status == 302 211 self.assertEqual(res.header('location'), ' /security')211 self.assertEqual(res.header('location'), 'http://localhost/login') 212 212 213 213 # authz test … … 215 215 res = self.app.get(url_for(controller='role', action='delete_group')) 216 216 assert res.status == 302, res.status 217 assert res.header('location')== '/security/failed', res.header('location')217 assert res.header('location')=='http://localhost/security/failed', res.header('location') 218 218 219 219 # Delete group failed, ref by other group. … … 271 271 res = self.app.get(url_for(controller='role', action='save_alias')) 272 272 assert res.status == 302 273 self.assertEqual(res.header('location'), ' /security')273 self.assertEqual(res.header('location'), 'http://localhost/login') 274 274 275 275 # authz test … … 277 277 res = self.app.get(url_for(controller='role', action='save_alias')) 278 278 assert res.status == 302, res.status 279 assert res.header('location')== '/security/failed', res.header('location')279 assert res.header('location')=='http://localhost/security/failed', res.header('location') 280 280 281 281 # Change alias successfully … … 348 348 res = self.app.get(url_for(controller='role', action='delete_alias')) 349 349 assert res.status == 302 350 self.assertEqual(res.header('location'), ' /security')350 self.assertEqual(res.header('location'), 'http://localhost/login') 351 351 352 352 # authz test … … 354 354 res = self.app.get(url_for(controller='role', action='delete_alias')) 355 355 assert res.status == 302, res.status 356 assert res.header('location')== '/security/failed', res.header('location')356 assert res.header('location')=='http://localhost/security/failed', res.header('location') 357 357 358 358 # Delete alias successfully -
trunk/pysvnmanager/tests/test_repos.py
r50 r55 51 51 def testReposCreate(self): 52 52 self.assertRaises(Exception, self.repos.create, 'repos3') 53 self.repos.delete('repos3') 54 self.repos.create('repos3') 55 self.assert_(sorted(self.repos.repos_list) == [u'project1', u'project2', u'repos3'], self.repos.repos_list) 53 try: 54 self.repos.delete('repos3') 55 self.repos.create('repos3') 56 self.assert_(sorted(self.repos.repos_list) == [u'project1', u'project2', u'repos3'], self.repos.repos_list) 57 except ImportError: 58 pass 56 59 57 60 def testReposDelete(self): 58 self.assertRaises(Exception, self.repos.delete, 'project1') 61 try: 62 self.repos.delete('project1') 63 except Exception, e: 64 self.assert_(str(e) == 'Repos project1 is not a blank repository.', str(e)) 59 65 60 66 def testReposRoot(self): -
trunk/pysvnmanager/websetup.py
r50 r55 30 30 log = logging.getLogger(__name__) 31 31 32 def setup_ config(command, filename, section, vars):32 def setup_app(command, conf, vars): 33 33 """Place any commands to setup pysvnmanager here""" 34 conf = appconfig('config:' + filename)35 34 load_environment(conf.global_conf, conf.local_conf) 36 35 -
trunk/setup.cfg
r24 r55 5 5 [easy_install] 6 6 find_links = http://www.pylonshq.com/download/ 7 8 [pudge]9 theme = pythonpaste.org10 11 # Add extra doc files here with spaces between them12 docs = docs/index.txt13 14 # Doc Settings15 doc_base = docs/16 dest = docs/html17 18 # Add extra modules here separated with commas19 modules = pysvnmanager20 title = Pysvnmanager21 organization = Pylons22 23 # Highlight code-block sections with Pygments24 highlighter = pygments25 26 # Optionally add extra links27 #organization_url = http://pylonshq.com/28 #trac_url = http://pylonshq.com/project29 settings = no_about=true30 31 # Optionally add extra settings32 # link1=/community/ Community33 # link2=/download/ Download34 35 [publish]36 doc-dir=docs/html37 make-dirs=138 7 39 8 # Babel configuration -
trunk/setup.py
r50 r55 26 26 setup( 27 27 name='pySvnManager', 28 version="0. 2.1",28 version="0.3.0", 29 29 description='SVN authz web management tools.', 30 30 author='Jiang Xin', 31 31 author_email='jiangxin@ossxp.com', 32 32 url='https://sourceforge.net/projects/pysvnmanager', 33 #install_requires=["Pylons>=0.9.6.2", "docutils", "python-ldap"], 34 install_requires=["Pylons>=0.9.6.2", "docutils"], 33 install_requires=[ 34 "Pylons>=0.9.7rc1", 35 "docutils", 36 "Babel", 37 #"Mako>=0.2.2", 38 #"WebHelpers>=0.6.1", 39 #"Routes>=1.9.2", 40 #"python-ldap", 41 ], 42 setup_requires=["PasteScript==dev,>=1.6.3dev-r7326"], 35 43 packages=find_packages(exclude=['ez_setup']), 36 44 include_package_data=True, … … 41 49 ('templates/**.mako', 'mako', None), 42 50 ('public/**', 'ignore', None)]}, 51 zip_safe = False, 52 paster_plugins=['PasteScript', 'Pylons'], 43 53 entry_points=""" 44 54 [paste.app_factory] … … 48 58 main = pylons.util:PylonsInstaller 49 59 """, 50 zip_safe = False,51 60 )
![(please configure the [header_logo] section in trac.ini)](/trac/pysvnmanager/chrome/common/trac_banner.png)