Changeset 83
- Timestamp:
- 2009年03月14日 15时00分13秒 (3 years ago)
- Location:
- branches/0.2-pylons_0.9.6.2
- Files:
-
- 28 modified
- 9 copied
-
. (modified) (1 prop)
-
contrib (copied) (copied from trunk/contrib)
-
contrib/mantis (copied) (copied from trunk/contrib/mantis)
-
contrib/mantis/021_checkin_user_as_bug_submit_user.patch (copied) (copied from trunk/contrib/mantis/021_checkin_user_as_bug_submit_user.patch)
-
contrib/trac (copied) (copied from trunk/contrib/trac)
-
contrib/trac/10110_trac_svn_hooks_chgset_date.patch (copied) (copied from trunk/contrib/trac/10110_trac_svn_hooks_chgset_date.patch)
-
contrib/trac/10115_trac_svn_hooks_ticket_range.patch (copied) (copied from trunk/contrib/trac/10115_trac_svn_hooks_ticket_range.patch)
-
contrib/trac/10116_trac_svn_hooks_fixed_status.patch (copied) (copied from trunk/contrib/trac/10116_trac_svn_hooks_fixed_status.patch)
-
pySvnManager.egg-info (modified) (1 prop)
-
pySvnManager.egg-info/SOURCES.txt (modified) (3 diffs)
-
pysvnmanager (modified) (1 prop)
-
pysvnmanager/controllers/authz.py (modified) (6 diffs)
-
pysvnmanager/controllers/logs.py (modified) (5 diffs)
-
pysvnmanager/controllers/repos.py (modified) (15 diffs)
-
pysvnmanager/controllers/role.py (modified) (11 diffs)
-
pysvnmanager/controllers/security.py (modified) (1 diff)
-
pysvnmanager/hooks/init/hook1.4/post-commit (modified) (3 diffs)
-
pysvnmanager/hooks/init/hook1.5/post-commit (modified) (3 diffs)
-
pysvnmanager/hooks/init/hook1.5/scripts/commit_log_check.py (modified) (5 diffs)
-
pysvnmanager/hooks/plugins/CommitLogCheck.py (modified) (2 diffs)
-
pysvnmanager/hooks/plugins/EmailNotify.py (modified) (1 diff)
-
pysvnmanager/hooks/plugins/ReadonlySvnMirror.py (modified) (4 diffs)
-
pysvnmanager/hooks/plugins/TracPostCommit.py (copied) (copied from trunk/pysvnmanager/hooks/plugins/TracPostCommit.py)
-
pysvnmanager/hooks/plugins/__init__.py (modified) (2 diffs)
-
pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po (modified) (32 diffs)
-
pysvnmanager/i18n/pysvnmanager.pot (modified) (29 diffs)
-
pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po (modified) (33 diffs)
-
pysvnmanager/lib/base.py (modified) (1 diff)
-
pysvnmanager/lib/text.py (copied) (copied from trunk/pysvnmanager/lib/text.py)
-
pysvnmanager/model/auth/http.py (modified) (1 diff)
-
pysvnmanager/model/rcsbackup.py (modified) (10 diffs)
-
pysvnmanager/model/repos.py (modified) (2 diffs)
-
pysvnmanager/templates/authz/index.mako (modified) (2 diffs)
-
pysvnmanager/templates/base.mako (modified) (1 diff)
-
pysvnmanager/templates/logs/view.mako (modified) (1 diff)
-
pysvnmanager/templates/repos/hooks.mako (modified) (1 diff)
-
pysvnmanager/templates/role/index.mako (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.2-pylons_0.9.6.2
- Property svn:mergeinfo changed from /trunk:55 to /trunk:53-81
-
branches/0.2-pylons_0.9.6.2/pySvnManager.egg-info
-
branches/0.2-pylons_0.9.6.2/pySvnManager.egg-info/SOURCES.txt
r48 r83 8 8 config/Makefile 9 9 config/README 10 contrib/mantis/021_checkin_user_as_bug_submit_user.patch 11 contrib/trac/10110_trac_svn_hooks_chgset_date.patch 12 contrib/trac/10115_trac_svn_hooks_ticket_range.patch 13 contrib/trac/10116_trac_svn_hooks_fixed_status.patch 10 14 docs/index.txt 11 15 pySvnManager.egg-info/PKG-INFO … … 111 115 pysvnmanager/hooks/plugins/EolStyleCheck.py 112 116 pysvnmanager/hooks/plugins/ReadonlySvnMirror.py 117 pysvnmanager/hooks/plugins/TracPostCommit.py 113 118 pysvnmanager/hooks/plugins/__init__.py 114 119 pysvnmanager/i18n/pysvnmanager.pot … … 121 126 pysvnmanager/lib/base.py 122 127 pysvnmanager/lib/helpers.py 128 pysvnmanager/lib/text.py 123 129 pysvnmanager/model/__init__.py 124 130 pysvnmanager/model/configobj.py -
branches/0.2-pylons_0.9.6.2/pysvnmanager
-
branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/authz.py
r50 r83 20 20 21 21 from pysvnmanager.lib.base import * 22 from pysvnmanager.lib.text import to_unicode 22 23 from pysvnmanager.model.svnauthz import * 23 24 from pysvnmanager.model import repos as _repos … … 33 34 # Used as checked in user to rcs file. 34 35 self.authz.login_as = self.login_as 35 self. reposlist = set(self.authz.get_manageable_repos_list(self.login_as))36 self.own_reposlist = set(self.authz.get_manageable_repos_list(self.login_as)) 36 37 37 38 # self.reposlist_new is what in ReposRoot directory. 38 self.reposlist_real = set(_repos.Repos(cfg.repos_root).repos_list) 39 self.reposlist_real.add('/') 40 41 self.reposlist_set = self.reposlist & self.reposlist_real 42 self.reposlist_unexist = self.reposlist - self.reposlist_real 43 44 if self.authz.is_super_user(self.login_as): 45 self.reposlist_unset = self.reposlist_real - self.reposlist 39 self.all_reposlist = set(_repos.Repos(cfg.repos_root).repos_list) 40 self.all_reposlist.add('/') 41 42 self.reposlist_set = self.own_reposlist & self.all_reposlist 43 self.reposlist_unexist = self.own_reposlist - self.all_reposlist 44 45 self.is_super_user = self.authz.is_super_user(self.login_as) 46 if self.is_super_user: 47 self.reposlist_unset = self.all_reposlist - self.own_reposlist 46 48 else: 47 49 self.reposlist_unset = set() … … 49 51 def __before__(self, action): 50 52 super(AuthzController, self).__before__(action) 51 if not self. reposlist:53 if not self.own_reposlist and not self.is_super_user: 52 54 return redirect_to(h.url_for(controller='security', action='failed')) 53 55 54 56 def index(self): 55 57 c.revision = self.authz.version 58 c.is_super_user = self.is_super_user 56 59 # used for functional test. 57 c.reposlist = self. reposlist60 c.reposlist = self.own_reposlist 58 61 59 62 all_avail_users = [] … … 180 183 try: 181 184 if isAddRepos: 185 assert self.is_super_user 182 186 repos = self.authz.add_repos(reposname) 183 187 else: 184 188 repos = self.authz.get_repos(reposname) 185 189 if not repos: 190 assert self.is_super_user 186 191 log.warning("Repos '%s' not exists. Create authz config automatically." % reposname) 187 192 repos = self.authz.add_repos(reposname) … … 210 215 self.authz.save(revision, comment=log_message) 211 216 except Exception, e: 212 msg = except_to_unicode(e)217 msg = to_unicode(e) 213 218 214 219 log.info(log_message) … … 233 238 self.authz.save(revision, comment=log_message) 234 239 except Exception, e: 235 msg = except_to_unicode(e)240 msg = to_unicode(e) 236 241 237 242 log.info(log_message) -
branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/logs.py
r50 r83 20 20 21 21 from pysvnmanager.lib.base import * 22 from pysvnmanager.lib.text import to_unicode 22 23 from pysvnmanager.model import rcsbackup as _rcs 23 24 from pysvnmanager.model.svnauthz import * … … 34 35 # Default logs per page is 10 35 36 self.rcslog.log_per_page = cfg.log_per_page 37 self.is_super_user = self.authz.is_super_user(self.login_as) 38 self.own_reposlist = set(self.authz.get_manageable_repos_list(self.login_as)) 36 39 37 40 def __before__(self, action): 38 41 super(LogsController, self).__before__(action) 39 if not self. authz.is_super_user(self.login_as):42 if not self.own_reposlist and not self.is_super_user: 40 43 return redirect_to(h.url_for(controller='security', action='failed')) 41 44 … … 161 164 c.contents = self.rcslog.cat(id) 162 165 c.log = self.rcslog.get_logs(id, id)[0] 163 if self.rcslog.head == id:166 if self.rcslog.head != id and self.is_super_user: 164 167 c.rollback_enabled = True 165 168 else: … … 168 171 169 172 def rollback(self, id): 173 assert self.is_super_user 170 174 log_message = _("Rollback successfully to revision: %s") % id 171 175 try: … … 174 178 self.rcslog.backup(comment=log_message, user=self.login_as) 175 179 except Exception, e: 176 msg = e.message 177 if isinstance(msg, str): 178 msg = unicode(msg, 'utf-8') 180 msg = to_unicode(e) 179 181 c.msg = _("Rollback failed: %s") % msg 180 182 else: -
branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/repos.py
r50 r83 20 20 21 21 from pysvnmanager.lib.base import * 22 from pysvnmanager.lib.text import to_unicode 22 23 from pysvnmanager.model.svnauthz import * 23 24 from pysvnmanager.model import repos as _repos … … 34 35 # Used as checked in user to rcs file. 35 36 self.authz.login_as = self.login_as 36 37 self.repos_root = cfg.repos_root 38 self.repos = _repos.Repos(self.repos_root) 39 self.repos_list = self.repos.repos_list 40 37 38 self.own_reposlist = set(self.authz.get_manageable_repos_list(self.login_as)) 39 40 # self.all_reposlist is all available repositories in the ReposRoot directory. 41 self.repos = _repos.Repos(cfg.repos_root) 42 self.all_reposlist = set(self.repos.repos_list) 43 44 self.reposlist_set = self.own_reposlist & self.all_reposlist 45 self.reposlist_unexist = self.own_reposlist - self.all_reposlist 46 47 self.is_super_user = self.authz.is_super_user(self.login_as) 48 if self.is_super_user: 49 self.reposlist_unset = self.all_reposlist - self.own_reposlist 50 else: 51 self.reposlist_unset = set() 41 52 42 53 def __before__(self, action): 43 54 super(ReposController, self).__before__(action) 44 if not self. authz.is_super_user(self.login_as):55 if not self.own_reposlist and not self.is_super_user: 45 56 return redirect_to(h.url_for(controller='security', action='failed')) 46 57 47 58 def index(self): 59 c.is_super_user = self.is_super_user 48 60 return render('/repos/hooks.mako') 61 62 def validate_repos(self, reposname): 63 assert reposname in self.own_reposlist or self.is_super_user 49 64 50 65 def init_repos_list(self): … … 57 72 msg += 'name[0]="%s";\n' % _("Please choose...") 58 73 total += 1; 59 for reposname in s elf.repos_list:74 for reposname in sorted(self.reposlist_set): 60 75 if filter=='blank' and not self.repos.is_blank_svn_repos(reposname): 61 76 continue … … 63 78 msg += 'name[%d]="%s";\n' % (total, reposname) 64 79 total += 1; 80 for reposname in sorted(self.reposlist_unset): 81 if filter=='blank' and not self.repos.is_blank_svn_repos(reposname): 82 continue 83 msg += 'id[%d]="%s";' % (total, reposname) 84 msg += 'name[%d]="%s";\n' % (total, reposname+' (!)') 85 total += 1; 65 86 msg += 'total=%d;\n' % total 66 87 return msg … … 68 89 def get_plugin_list(self): 69 90 reposname = request.params.get('select') 70 h = _hooks.Hooks(self.repos_root + '/' + reposname) 91 self.validate_repos(reposname) 92 h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 71 93 total = 0; 72 94 msg = '' … … 86 108 def get_installed_hook_form(self): 87 109 reposname = request.params.get('select') 88 h = _hooks.Hooks(self.repos_root + '/' + reposname) 110 self.validate_repos(reposname) 111 h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 89 112 msg = '' 90 113 if len(h.applied_plugins) > 0: … … 117 140 def get_hook_setting_form(self): 118 141 reposname = request.params.get('repos') 142 self.validate_repos(reposname) 119 143 pluginname = request.params.get('plugin') 120 h = _hooks.Hooks( self.repos_root + '/' + reposname)144 h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 121 145 result = "<input type='hidden' name='_repos' value='%s'>" % reposname 122 146 result += "<input type='hidden' name='_plugin' value='%s'>" % pluginname … … 129 153 d = request.params 130 154 reposname = d.get("_repos") 155 self.validate_repos(reposname) 131 156 pluginname = d.get("_plugin") 132 h = _hooks.Hooks( self.repos_root + '/' + reposname)157 h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 133 158 plugin = h.plugins[pluginname] 134 159 plugin.install(d) 135 160 except Exception, e: 136 161 result = "<div class='error'>" + _("Apply plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 137 "plugin": pluginname, "repos":reposname, "msg": except_to_unicode(e) } + "</div>"162 "plugin": pluginname, "repos":reposname, "msg": to_unicode(e) } + "</div>" 138 163 else: 139 164 result = "<div class='info'>" + _("Apply plugin '%(plugin)s' on '%(repos)s' success.") % { … … 145 170 d = request.params 146 171 reposname = d.get("_repos") 172 self.validate_repos(reposname) 147 173 for i in d.keys(): 148 174 if "pluginid_" in i: … … 152 178 log.debug("plugin_list:" + ','.join(plugin_list)) 153 179 try: 154 hookobj = _hooks.Hooks( self.repos_root + '/' + reposname)180 hookobj = _hooks.Hooks(cfg.repos_root + '/' + reposname) 155 181 for pluginname in plugin_list: 156 182 hookobj.plugins[pluginname].reload() … … 159 185 except Exception, e: 160 186 result = "<div class='error'>" + _("Delete plugin '%(plugin)s' on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 161 "plugin": ", ".join(plugin_list), "repos":reposname, "msg": except_to_unicode(e) } + "</div>"187 "plugin": ", ".join(plugin_list), "repos":reposname, "msg": to_unicode(e) } + "</div>" 162 188 else: 163 189 result = "<div class='info'>" + _("Delete plugin '%(plugin)s' on '%(repos)s' success.") % { … … 171 197 d = request.params 172 198 reposname = d.get("reposname") 199 self.validate_repos(reposname) 173 200 self.repos.create(reposname) 174 201 except Exception, e: 175 202 result = "<div class='error'>" + _("Create repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 176 "repos":reposname, "msg": except_to_unicode(e) } + "</div>"203 "repos":reposname, "msg": to_unicode(e) } + "</div>" 177 204 else: 178 205 result = "<div class='info'>" + _("Create repository '%(repos)s' success.") % {"repos":reposname} + "</div>" … … 180 207 181 208 def create(self): 209 if not self.is_super_user: 210 return redirect_to(h.url_for(controller='security', action='failed')) 182 211 return render('/repos/create.mako') 183 212 … … 187 216 d = request.params 188 217 reposname = d.get("repos_list") 218 self.validate_repos(reposname) 189 219 self.repos.delete(reposname) 190 220 except Exception, e: 191 221 result = "<div class='error'>" + _("Delete repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 192 "repos":reposname, "msg": except_to_unicode(e) } + "</div>"222 "repos":reposname, "msg": to_unicode(e) } + "</div>" 193 223 else: 194 224 result = "<div class='info'>" + _("Delete blank repository '%(repos)s' success.") % {"repos":reposname} + "</div>" … … 196 226 197 227 def remove(self): 228 if not self.is_super_user: 229 return redirect_to(h.url_for(controller='security', action='failed')) 198 230 return render('/repos/remove.mako') -
branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/role.py
r50 r83 20 20 21 21 from pysvnmanager.lib.base import * 22 from pysvnmanager.lib.text import to_unicode 22 23 from pysvnmanager.model.svnauthz import * 23 24 … … 35 36 self.userlist = map(lambda x:x.uname, self.authz.userlist) 36 37 self.grouplist = map(lambda x:x.uname, self.authz.grouplist) 38 self.is_super_user = self.authz.is_super_user(self.login_as) 39 self.own_reposlist = self.authz.get_manageable_repos_list(self.login_as) 37 40 38 41 def __before__(self, action): 39 42 super(RoleController, self).__before__(action) 40 if not self. authz.is_super_user(self.login_as):43 if not self.own_reposlist and not self.is_super_user: 41 44 return redirect_to(h.url_for(controller='security', action='failed')) 42 45 … … 46 49 c.userlist = self.userlist 47 50 c.grouplist = self.grouplist 51 c.is_super_user = self.is_super_user 48 52 return render('/role/index.mako') 49 53 … … 102 106 103 107 def save_group(self): 108 assert self.is_super_user 104 109 d = request.params 105 110 member_list = [] … … 125 130 self.authz.save(revision, comment=log_message) 126 131 except Exception, e: 127 msg = except_to_unicode(e)132 msg = to_unicode(e) 128 133 129 134 log.info(log_message) … … 133 138 134 139 def delete_group(self): 140 assert self.is_super_user 135 141 d = request.params 136 142 rolename = d.get('role') … … 146 152 self.authz.save(revision, comment=log_message) 147 153 except Exception, e: 148 msg = except_to_unicode(e)154 msg = to_unicode(e) 149 155 150 156 log.info(log_message) … … 154 160 155 161 def save_alias(self): 162 assert self.is_super_user 156 163 d = request.params 157 164 aliasname = d.get('aliasname') … … 167 174 self.authz.save(revision, comment=log_message) 168 175 except Exception, e: 169 msg = except_to_unicode(e)176 msg = to_unicode(e) 170 177 171 178 log.info(log_message) … … 175 182 176 183 def delete_alias(self): 184 assert self.is_super_user 177 185 d = request.params 178 186 aliasname = d.get('aliasname') … … 188 196 self.authz.save(revision, comment=log_message) 189 197 except Exception, e: 190 msg = except_to_unicode(e)191 192 log.info(log_message) 193 if msg: log.error(msg) 194 195 return msg 196 197 198 msg = to_unicode(e) 199 200 log.info(log_message) 201 if msg: log.error(msg) 202 203 return msg 204 205 -
branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/security.py
r50 r83 20 20 21 21 from pysvnmanager.lib.base import * 22 23 from crypt import crypt24 22 25 23 log = logging.getLogger(__name__) -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.4/post-commit
r47 r83 53 53 readconf post_commit 54 54 readconf email 55 readconf trac 55 56 56 57 ## Sync with downstream mirror sites using svnsync … … 68 69 69 70 ############################################################ 70 # 71 # Mantisbt integration ( http://www.worldhello.net ) 72 # 71 # Trac post commit hook 72 TRAC_POST_COMMIT_HOOK=/usr/share/doc/trac/contrib/trac-post-commit-hook 73 if [ "$trac_post_commit_enabled" = "yes" ]; then 74 if [ ! -z "$trac_env" ]; then 75 if [ -z "$trac_repos_name" ]; then 76 traccmd="$TRAC_POST_COMMIT_HOOK -p $trac_env -r $REV" 77 else 78 traccmd="$TRAC_POST_COMMIT_HOOK -p $trac_env -r $REV -R $trac_repos_name" 79 fi 80 eval $traccmd 81 fi 82 fi 83 73 84 ############################################################ 85 # Mantisbt integration 74 86 if [ "$mantis_integration" = "yes" ]; then 75 87 SVNLOOK=/opt/svn/bin/svnlook 76 SED=/bin/sed77 88 MANTISBT=/opt/mantis/web 78 89 PHP=/opt/php5/bin/php5 … … 80 91 if [ -f "$MANTISBT/core/checkin.php" ]; then 81 92 export LC_ALL=zh_CN.utf8 82 commitlog=`$SVNLOOK log -r "$REV" "$REPOS" | $SED -e 's/\$/\\\\n/g'` 83 commitauthor=`$SVNLOOK author -r "$REV" "$REPOS" | $SED -e 's/\$/\\\\n/g'` 84 commitdiff=`$SVNLOOK diff -r "$REV" "$REPOS" | head -25 | $SED -e 's/\$/\\\\n/g'` 85 echo -e "Author: $commitauthor\nCommit Log:\n$commitlog\n\n****** Source code change ******\nRepository: $REPOS, Revision: $REV.\n\n$commitdiff" | $PHP -q $MANTISBT/core/checkin.php 93 commitlog=`$SVNLOOK log -r "$REV" "$REPOS"` 94 commitauthor=`$SVNLOOK author -r "$REV" "$REPOS"` 95 commitdiff=`$SVNLOOK diff -r "$REV" "$REPOS" | head -25` 96 $PHP -q $MANTISBT/core/checkin.php $commitauthor << EOF 97 Author: $commitauthor 98 Commit Log: 99 $commitlog 100 101 ****** Source code change ****** 102 Repository: $REPOS, Revision: $REV. 103 104 $commitdiff 105 EOF 86 106 fi 87 107 fi -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.5/post-commit
r47 r83 53 53 readconf post_commit 54 54 readconf email 55 readconf trac 55 56 56 57 ## Sync with downstream mirror sites using svnsync … … 68 69 69 70 ############################################################ 70 # 71 # Mantisbt integration ( http://www.worldhello.net ) 72 # 71 # Trac post commit hook 72 TRAC_POST_COMMIT_HOOK=/usr/share/doc/trac/contrib/trac-post-commit-hook 73 if [ "$trac_post_commit_enabled" = "yes" ]; then 74 if [ ! -z "$trac_env" ]; then 75 if [ -z "$trac_repos_name" ]; then 76 traccmd="$TRAC_POST_COMMIT_HOOK -p $trac_env -r $REV" 77 else 78 traccmd="$TRAC_POST_COMMIT_HOOK -p $trac_env -r $REV -R $trac_repos_name" 79 fi 80 eval $traccmd 81 fi 82 fi 83 73 84 ############################################################ 85 # Mantisbt integration 74 86 if [ "$mantis_integration" = "yes" ]; then 75 87 SVNLOOK=/opt/svn/bin/svnlook 76 SED=/bin/sed77 88 MANTISBT=/opt/mantis/web 78 89 PHP=/opt/php5/bin/php5 … … 80 91 if [ -f "$MANTISBT/core/checkin.php" ]; then 81 92 export LC_ALL=zh_CN.utf8 82 commitlog=`$SVNLOOK log -r "$REV" "$REPOS" | $SED -e 's/\$/\\\\n/g'` 83 commitauthor=`$SVNLOOK author -r "$REV" "$REPOS" | $SED -e 's/\$/\\\\n/g'` 84 commitdiff=`$SVNLOOK diff -r "$REV" "$REPOS" | head -25 | $SED -e 's/\$/\\\\n/g'` 85 echo -e "Author: $commitauthor\nCommit Log:\n$commitlog\n\n****** Source code change ******\nRepository: $REPOS, Revision: $REV.\n\n$commitdiff" | $PHP -q $MANTISBT/core/checkin.php 93 commitlog=`$SVNLOOK log -r "$REV" "$REPOS"` 94 commitauthor=`$SVNLOOK author -r "$REV" "$REPOS"` 95 commitdiff=`$SVNLOOK diff -r "$REV" "$REPOS" | head -25` 96 $PHP -q $MANTISBT/core/checkin.php $commitauthor << EOF 97 Author: $commitauthor 98 Commit Log: 99 $commitlog 100 101 ****** Source code change ****** 102 Repository: $REPOS, Revision: $REV. 103 104 $commitdiff 105 EOF 86 106 fi 87 107 fi -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.5/scripts/commit_log_check.py
r47 r83 79 79 opt_size = int(arg) 80 80 elif opt in ("-p", "--permit"): 81 if arg and not isinstance(arg, unicode): 82 arg = unicode(arg, 'utf-8') 81 83 if arg: 82 if not isinstance(arg, unicode):83 arg = unicode(arg, 'utf-8')84 84 opt_permit_pattern.append(arg) 85 85 elif opt in ("-P", "--prohibit"): … … 89 89 opt_prohibit_pattern.append(arg) 90 90 elif opt in ("-m", "--message"): 91 if not isinstance(arg, unicode): 92 arg = unicode(arg, 'utf-8') 93 log_msg = arg 91 if arg: 92 if not isinstance(arg, unicode): 93 arg = unicode(arg, 'utf-8') 94 log_msg = arg 94 95 else: 95 96 return usage(1) … … 104 105 log_cmd = '%s log -t "%s" "%s"' % (SVNLOOK, txn, repos) 105 106 log_msg = os.popen(log_cmd, 'r').read().rstrip('\n') 106 107 107 108 # Check the length of commit log 108 109 check_strlen(log_msg, opt_size) … … 142 143 143 144 if log_length < size: 144 sys.stderr.write ("提交说明至少应包含 %d 个字符, "145 "或者太简单了。\n" % size)145 error_msg = u"提交说明至少应包含 %d 个字符, 或者太简单了。\n" % size 146 sys.stderr.write (error_msg.encode('utf-8')) 146 147 sys.exit(1) 147 148 … … 154 155 if permit: 155 156 matched = False 156 else: 157 matched = True 157 for pat in permit: 158 if not pat: # blank pattern 159 matched = True 160 break 161 elif re.compile(pat, re.I).search(log_msg): 162 matched = True 163 break 164 if not matched: 165 error_msg = u"无法在提交说明中匹配表达式: \n%s。\n" % ',\n'.join(permit) 166 sys.stderr.write (error_msg.encode('utf-8')) 167 sys.exit(1) 158 168 159 for pat in permit: 160 if pat and re.compile(pat, re.I).search(log_msg): 161 matched = True 162 break 163 164 if not matched: 165 error_msg = u"无法在提交说明中匹配表达式: \n%s。\n" % ',\n'.join(permit) 166 sys.stderr.write (error_msg.encode('utf-8')) 167 sys.exit(1) 168 169 for pat in prohibit: 170 if pat and re.compile(pat, re.I).search(log_msg): 171 matched = False 172 break 173 174 if not matched: 175 error_msg = u"不允许在log中出现类似表达式: \n%s。\n" % pat 176 sys.stderr.write (error_msg.encode('utf-8')) 177 sys.exit(1) 178 169 if prohibit: 170 matched = False 171 for pat in prohibit: 172 if pat and re.compile(pat, re.I).search(log_msg): 173 matched = True 174 break 175 if matched: 176 error_msg = u"不允许在log中出现类似表达式: \n%s。\n" % pat 177 sys.stderr.write (error_msg.encode('utf-8')) 178 sys.exit(1) 179 179 180 180 if __name__ == '__main__': 181 181 main() 182 183 # vim: ft=python ts=4 sw=4 et -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/CommitLogCheck.py
r50 r83 99 99 result += "<p><strong>%s</strong></p>" % _("Fill this form") 100 100 result += "<blockquote>" 101 result += " <table class=hidden>"102 result += "\n< tr><td>"101 result += "\n<dl>" 102 result += "\n<dt>" 103 103 result += _("Enable commit log check: ") 104 result += "\n< /td><td>"104 result += "\n<dd>" 105 105 result += "<input type='radio' name='switch' value='yes' " + \ 106 106 enable_checked + ">" + _("Enable") + " " 107 107 result += "<input type='radio' name='switch' value='no' " + \ 108 108 disable_checked + ">" + _("Disable") 109 result += "\n</td></tr>" 110 result += "\n<tr><td>" 109 result += "\n<dt>" 111 110 result += _("Minimal size of commit log: ") 112 result += "\n< /td><td>"111 result += "\n<dd>" 113 112 result += "<input type='text' name='size' size='5' value=\"%s\">" % \ 114 113 webhelpers.util.html_escape(self.get_config(self.key_size)) 115 result += "\n</td></tr>" 116 result += "\n<tr><td>" 114 result += "\n<dt>" 117 115 result += _("Pattern which commit log must match against: ") 118 result += "\n< /td><td>"119 result += "< input type='text' name='permit' size='64' value=\"%s\">" % \120 webhelpers.util.html_escape(self.get_config(self.key_permit))121 result += " \n</td></tr>"122 result += "\n< tr><td>"116 result += "\n<dd>" 117 result += "<textarea name='permit' rows='3' cols='40'>" 118 result += webhelpers.util.html_escape(self.get_config(self.key_permit)) 119 result += "</textarea>" 120 result += "\n<dt>" 123 121 result += _("Pattern which commit log must <b>NOT</b> match against: ") 124 result += "\n< /td><td>"125 result += "< input type='text' name='prohibit' size='64' value=\"%s\">" % \126 webhelpers.util.html_escape(self.get_config(self.key_prohibit))127 result += " \n</td></tr>"128 result += "\n</ table>"122 result += "\n<dd>" 123 result += "<textarea name='prohibit' rows='3' cols='40'>" 124 result += webhelpers.util.html_escape(self.get_config(self.key_prohibit)) 125 result += "</textarea>" 126 result += "\n</dl>" 129 127 result += "</blockquote>" 130 128 return result … … 159 157 self.set_config(self.key_switch, switch) 160 158 self.set_config(self.key_size, size) 161 if permit: 162 self.set_config(self.key_permit, permit) 163 if prohibit: 164 self.set_config(self.key_prohibit, prohibit) 159 self.set_config(self.key_permit, permit) 160 self.set_config(self.key_prohibit, prohibit) 165 161 self.save() 166 162 -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/EmailNotify.py
r50 r83 113 113 result += "<p><strong>%s</strong></p>" % _("Fill this form") 114 114 result += "<blockquote>" 115 result += "< table class=hidden>"116 result += "\n< tr><td>"115 result += "<dl>" 116 result += "\n<dt>" 117 117 result += _("Enable email notify.") 118 result += "\n< /td><td>"118 result += "\n<dd>" 119 119 result += "<input type='radio' name='switch' value='yes' " + \ 120 120 enable_checked + ">" + _("Enable") + " " 121 121 result += "<input type='radio' name='switch' value='no' " + \ 122 122 disable_checked + ">" + _("Disable") + "<br>" 123 result += "\n</td></tr>" 124 result += "\n<tr><td>" 123 result += "\n<dt>" 125 124 result += _("Input email notify configurations: ") 126 result += "\n< /td><td>"127 result += "< input type='text' name='config' size='64' value=\"%s\">" % \128 webhelpers.util.html_escape(self.get_config(self.key_config))129 result += " \n</td></tr>"130 result += "\n</ table>"125 result += "\n<dd>" 126 result += "<textarea name='config' rows='5' cols='40'>" 127 result += webhelpers.util.html_escape(self.get_config(self.key_config)) 128 result += "</textarea>" 129 result += "\n</dl>" 131 130 result += "</blockquote>" 132 131 return result -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/ReadonlySvnMirror.py
r50 r83 51 51 Simply call 'has_config()'. 52 52 """ 53 return self.has_config(self.key_switch) and self.has_config(self.key_admin)53 return self.has_config(self.key_switch) 54 54 55 55 def install_info(self): … … 69 69 result += "- " + _("Readonly mirror disabled.") 70 70 result += "\n" 71 result += "- " + _("Admin user: ") + "``" + self.get_config(self.key_admin) + "``" 72 71 admin = self.get_config(self.key_admin) 72 if admin: 73 result += "- " + _("Admin user: ") + "``" + self.get_config(self.key_admin) + "``" 74 73 75 return result 74 76 … … 89 91 result += "<p><strong>%s</strong></p>" % _("Fill this form") 90 92 result += "<blockquote>" 91 result += "< table class=hidden>"92 result += "\n< tr><td>"93 result += "<dl>" 94 result += "\n<dt>" 93 95 result += _("Enable readonly mirror: ") 94 result += "\n< /td><td>"96 result += "\n<dd>" 95 97 result += "<input type='radio' name='switch' value='yes' " + \ 96 98 enable_checked + ">" + _("Enable") + " " 97 99 result += "<input type='radio' name='switch' value='no' " + \ 98 100 disable_checked + ">" + _("Disable") + "<br>" 99 result += "\n</td></tr>" 100 result += "\n<tr><td>" 101 result += "\n<dt>" 101 102 result += _("Svnsync administrator: ") 102 result += "\n< /td><td>"103 result += "<input type='text' name='admin' size=' 64' value='%s'>" % \103 result += "\n<dd>" 104 result += "<input type='text' name='admin' size='18' value='%s'>" % \ 104 105 self.get_config(self.key_admin) 105 result += "\n</td></tr>" 106 result += "\n</table>" 106 result += "\n</dl>" 107 107 result += "</blockquote>" 108 108 return result … … 129 129 admin = params.get('admin') 130 130 if not admin: 131 raise Exception(_("Wrong configuration."))131 switch = 'no' 132 132 self.set_config(self.key_switch, switch) 133 133 self.set_config(self.key_admin, admin) -
branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/__init__.py
r50 r83 200 200 key = self.key 201 201 202 if value == "": 203 if hasattr(self, "value"): 204 value = self.value 202 if value == "" and hasattr(self, "value"): 203 value = self.value 205 204 206 205 if hasattr(self, "section"): … … 227 226 key = self.key 228 227 229 if value == "": 230 if not hasattr(self, "value"): 231 raise Exception, _("Plugin not fully implemented.") 232 else: 233 value = self.value 228 if value == "" and hasattr(self, "value"): 229 value = self.value 234 230 235 231 if hasattr(self, "section"): -
branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po
r54 r83 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: 200 8-08-30 13:16+0800\n"12 "PO-Revision-Date: 2009-03-14 14:52+0800\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 14 "Language-Team: en <LL@li.org>\n" … … 19 19 "Generated-By: Babel 0.9.4\n" 20 20 21 #: pysvnmanager/controllers/authz.py:6 021 #: pysvnmanager/controllers/authz.py:63 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:6 127 #: pysvnmanager/controllers/authz.py:64 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:6 233 #: pysvnmanager/controllers/authz.py:65 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: 67 pysvnmanager/controllers/role.py:6740 #: pysvnmanager/controllers/role.py: 8739 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 40 #: pysvnmanager/controllers/role.py:91 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:7 0 pysvnmanager/controllers/role.py:7251 #: pysvnmanager/controllers/role.py: 8950 #: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 51 #: pysvnmanager/controllers/role.py:93 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:8 5 pysvnmanager/controllers/authz.py:11662 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py: 5763 #: pysvnmanager/controllers/repos.py: 76 pysvnmanager/controllers/role.py:6061 #: pysvnmanager/controllers/authz.py:88 pysvnmanager/controllers/authz.py:119 62 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:72 63 #: pysvnmanager/controllers/repos.py:98 pysvnmanager/controllers/role.py:64 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 7771 #: pysvnmanager/controllers/authz.py:180 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:19 076 #: pysvnmanager/controllers/authz.py:195 77 77 #, python-format 78 78 msgid "Repository %s not exist." 79 79 msgstr "" 80 80 81 #: pysvnmanager/controllers/authz.py: 19881 #: pysvnmanager/controllers/authz.py:203 82 82 #, python-format 83 83 msgid "Module %s not exist." 84 84 msgstr "" 85 85 86 #: pysvnmanager/controllers/authz.py:20 486 #: pysvnmanager/controllers/authz.py:209 87 87 msgid "You can not delete yourself from admin list." 88 88 msgstr "" 89 89 90 #: pysvnmanager/controllers/authz.py:2 2990 #: pysvnmanager/controllers/authz.py:234 91 91 #, python-format 92 92 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" … … 98 98 msgstr "" 99 99 100 #: pysvnmanager/controllers/logs.py: 68100 #: pysvnmanager/controllers/logs.py:71 101 101 msgid "Rev" 102 102 msgstr "" 103 103 104 #: pysvnmanager/controllers/logs.py: 69104 #: pysvnmanager/controllers/logs.py:72 105 105 msgid "Who" 106 106 msgstr "" 107 107 108 #: pysvnmanager/controllers/logs.py:7 0108 #: pysvnmanager/controllers/logs.py:73 109 109 msgid "When" 110 110 msgstr "" 111 111 112 #: pysvnmanager/controllers/logs.py:7 1112 #: pysvnmanager/controllers/logs.py:74 113 113 msgid "Why" 114 114 msgstr "" 115 115 116 #: pysvnmanager/controllers/logs.py:7 2116 #: pysvnmanager/controllers/logs.py:75 117 117 msgid "Compare" 118 118 msgstr "" 119 119 120 #: pysvnmanager/controllers/logs.py:11 5120 #: pysvnmanager/controllers/logs.py:118 121 121 msgid "Page: " 122 122 msgstr "" 123 123 124 #: pysvnmanager/controllers/logs.py:15 1124 #: pysvnmanager/controllers/logs.py:154 125 125 msgid "Compares between" 126 126 msgstr "" 127 127 128 #: pysvnmanager/controllers/logs.py:17 0128 #: pysvnmanager/controllers/logs.py:174 129 129 #, python-format 130 130 msgid "Rollback successfully to revision: %s" 131 131 msgstr "" 132 132 133 #: pysvnmanager/controllers/logs.py:1 79133 #: pysvnmanager/controllers/logs.py:181 134 134 #, python-format 135 135 msgid "Rollback failed: %s" 136 136 msgstr "" 137 137 138 #: pysvnmanager/controllers/repos.py: 91138 #: pysvnmanager/controllers/repos.py:114 139 139 msgid "Installed hooks:" 140 140 msgstr "" 141 141 142 #: pysvnmanager/controllers/repos.py: 97142 #: pysvnmanager/controllers/repos.py:120 143 143 msgid "Id" 144 144 msgstr "" 145 145 146 #: pysvnmanager/controllers/repos.py: 98146 #: pysvnmanager/controllers/repos.py:121 147 147 msgid "Plugin name" 148 148 msgstr "" 149 149 150 #: pysvnmanager/controllers/repos.py: 99151 #: pysvnmanager/hooks/plugins/__init__.py:3 30150 #: pysvnmanager/controllers/repos.py:122 151 #: pysvnmanager/hooks/plugins/__init__.py:326 152 152 msgid "Type" 153 153 msgstr "" 154 154 155 #: pysvnmanager/controllers/repos.py:1 13155 #: pysvnmanager/controllers/repos.py:136 156 156 msgid "Remove selected hooks" 157 157 msgstr "" 158 158 159 #: pysvnmanager/controllers/repos.py:1 36159 #: pysvnmanager/controllers/repos.py:161 160 160 #, python-format 161 161 msgid "" … … 164 164 msgstr "" 165 165 166 #: pysvnmanager/controllers/repos.py:1 39166 #: pysvnmanager/controllers/repos.py:164 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 60171 #: pysvnmanager/controllers/repos.py:186 172 172 #, python-format 173 173 msgid "" … … 176 176 msgstr "" 177 177 178 #: pysvnmanager/controllers/repos.py:1 63178 #: pysvnmanager/controllers/repos.py:189 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 66183 #: pysvnmanager/controllers/repos.py:192 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: 175188 #: pysvnmanager/controllers/repos.py:202 189 189 #, python-format 190 190 msgid "" … … 193 193 msgstr "" 194 194 195 #: pysvnmanager/controllers/repos.py: 178195 #: pysvnmanager/controllers/repos.py:205 196 196 #, python-format 197 197 msgid "Create repository '%(repos)s' success." 198 198 msgstr "" 199 199 200 #: pysvnmanager/controllers/repos.py: 191200 #: pysvnmanager/controllers/repos.py:221 201 201 #, python-format 202 202 msgid "" … … 205 205 msgstr "" 206 206 207 #: pysvnmanager/controllers/repos.py: 194207 #: pysvnmanager/controllers/repos.py:224 208 208 #, python-format 209 209 msgid "Delete blank repository '%(repos)s' success." 210 210 msgstr "" 211 211 212 #: pysvnmanager/controllers/role.py:12 0212 #: pysvnmanager/controllers/role.py:125 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:14 0217 #: pysvnmanager/controllers/role.py:146 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:16 2222 #: pysvnmanager/controllers/role.py:169 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 82227 #: pysvnmanager/controllers/role.py:190 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:5 2232 #: pysvnmanager/controllers/security.py:50 233 233 #, python-format 234 234 msgid "User %s logged in" 235 235 msgstr "" 236 236 237 #: pysvnmanager/controllers/security.py:6 3237 #: pysvnmanager/controllers/security.py:61 238 238 #, python-format 239 239 msgid "Login failed for user: %s" 240 240 msgstr "" 241 241 242 #: pysvnmanager/controllers/security.py: 71242 #: pysvnmanager/controllers/security.py:69 243 243 #, python-format 244 244 msgid "User %s logged out" … … 316 316 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 317 317 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 318 #: pysvnmanager/hooks/plugins/TracPostCommit.py:66 318 319 msgid "Current configuration" 319 320 msgstr "" … … 328 329 329 330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 1331 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 331 332 msgid "Minimal size of commit log: " 332 333 msgstr "" 333 334 334 335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 7336 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 336 337 msgid "Pattern which commit log must match against: " 337 338 msgstr "" … … 343 344 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 344 345 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 345 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 346 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:91 347 #: pysvnmanager/hooks/plugins/TracPostCommit.py:94 346 348 msgid "Fill this form" 347 349 msgstr "" … … 353 355 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 354 356 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 355 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 357 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 358 #: pysvnmanager/hooks/plugins/TracPostCommit.py:101 356 359 msgid "Enable" 357 360 msgstr "" … … 359 362 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 360 363 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 361 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 364 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:100 365 #: pysvnmanager/hooks/plugins/TracPostCommit.py:103 362 366 msgid "Disable" 363 367 msgstr "" 364 368 365 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:12 3369 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 366 370 msgid "Pattern which commit log must <b>NOT</b> match against: " 367 371 msgstr "" 368 372 369 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:15 6373 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 370 374 msgid "Commit log size must > 0." 371 375 msgstr "" … … 423 427 msgstr "" 424 428 425 #: pysvnmanager/hooks/plugins/EmailNotify.py:12 5429 #: pysvnmanager/hooks/plugins/EmailNotify.py:124 426 430 msgid "Input email notify configurations: " 427 431 msgstr "" 428 432 429 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 430 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 433 #: pysvnmanager/hooks/plugins/EmailNotify.py:154 431 434 msgid "Wrong configuration." 432 435 msgstr "" … … 465 468 msgstr "" 466 469 467 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:7 1470 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 468 471 msgid "Admin user: " 469 472 msgstr "" 470 473 471 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:9 3474 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 472 475 msgid "Enable readonly mirror: " 473 476 msgstr "" 474 477 475 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:10 1478 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 476 479 msgid "Svnsync administrator: " 477 480 msgstr "" 478 481 482 #: pysvnmanager/hooks/plugins/TracPostCommit.py:27 483 msgid "Trac integration with subversion's post commit hook." 484 msgstr "" 485 486 #: pysvnmanager/hooks/plugins/TracPostCommit.py:33 487 msgid "" 488 "Integrate subversion with trac: Commit log of subversion appends to trac " 489 "tickets if subversion commit log contains ticket id." 490 msgstr "" 491 492 #: pysvnmanager/hooks/plugins/TracPostCommit.py:68 493 msgid "Trac post commit hook is enabled." 494 msgstr "" 495 496 #: pysvnmanager/hooks/plugins/TracPostCommit.py:70 497 msgid "Trac post commit hook is disabled." 498 msgstr "" 499 500 #: pysvnmanager/hooks/plugins/TracPostCommit.py:72 501 #: pysvnmanager/hooks/plugins/TracPostCommit.py:105 502 msgid "Trac environment location: " 503 msgstr "" 504 505 #: pysvnmanager/hooks/plugins/TracPostCommit.py:74 506 msgid "Repository name in trac: " 507 msgstr "" 508 509 #: pysvnmanager/hooks/plugins/TracPostCommit.py:76 510 msgid "Fixed ticket's status: " 511 msgstr "" 512 513 #: pysvnmanager/hooks/plugins/TracPostCommit.py:98 514 msgid "Enable trac post commit hook: " 515 msgstr "" 516 517 #: pysvnmanager/hooks/plugins/TracPostCommit.py:110 518 msgid "Repository name in trac (default is blank): " 519 msgstr "" 520 521 #: pysvnmanager/hooks/plugins/TracPostCommit.py:115 522 msgid "Fixed ticket status (default is closed): " 523 msgstr "" 524 479 525 #: pysvnmanager/hooks/plugins/__init__.py:111 480 526 #, python-format … … 488 534 489 535 #: 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 493 #: pysvnmanager/hooks/plugins/__init__.py:348 494 #: pysvnmanager/hooks/plugins/__init__.py:355 495 #: pysvnmanager/hooks/plugins/__init__.py:364 536 #: pysvnmanager/hooks/plugins/__init__.py:224 537 #: pysvnmanager/hooks/plugins/__init__.py:246 538 #: pysvnmanager/hooks/plugins/__init__.py:344 539 #: pysvnmanager/hooks/plugins/__init__.py:351 540 #: pysvnmanager/hooks/plugins/__init__.py:360 496 541 msgid "Plugin not fully implemented." 497 542 msgstr "" 498 543 499 #: pysvnmanager/hooks/plugins/__init__.py:32 9544 #: pysvnmanager/hooks/plugins/__init__.py:325 500 545 msgid "Name" 501 546 msgstr "" 502 547 503 #: pysvnmanager/hooks/plugins/__init__.py:3 31548 #: pysvnmanager/hooks/plugins/__init__.py:327 504 549 msgid "Description" 505 550 msgstr "" … … 515 560 msgstr "" 516 561 517 #: pysvnmanager/model/repos.py:1 66562 #: pysvnmanager/model/repos.py:193 518 563 #, python-format 519 564 msgid "Repos %s is not a blank repository." … … 552 597 msgstr "" 553 598 554 #: pysvnmanager/model/svnauthz.py:150 2 pysvnmanager/model/svnauthz.py:1509555 #: pysvnmanager/model/svnauthz.py:151 3599 #: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 600 #: pysvnmanager/model/svnauthz.py:1516 556 601 #, python-format 557 602 msgid "Unknown rule format: %s" 558 603 msgstr "" 559 604 560 #: pysvnmanager/model/svnauthz.py:15 27605 #: pysvnmanager/model/svnauthz.py:1530 561 606 #, python-format 562 607 msgid "No module exist for %s:%s" 563 608 msgstr "" 564 609 565 #: pysvnmanager/model/svnauthz.py:16 37610 #: pysvnmanager/model/svnauthz.py:1640 566 611 #, python-format 567 612 msgid "Alias %s is referenced by group %s." 568 613 msgstr "" 569 614 570 #: pysvnmanager/model/svnauthz.py:16 49615 #: pysvnmanager/model/svnauthz.py:1652 571 616 #, python-format 572 617 msgid "%s is referenced by [%s]." 573 618 msgstr "" 574 619 575 #: pysvnmanager/model/svnauthz.py:178 5620 #: pysvnmanager/model/svnauthz.py:1788 576 621 #, python-format 577 622 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 578 623 msgstr "" 579 624 580 #: pysvnmanager/model/svnauthz.py:17 87625 #: pysvnmanager/model/svnauthz.py:1790 581 626 #, python-format 582 627 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 583 628 msgstr "" 584 629 585 #: pysvnmanager/model/svnauthz.py:17 89630 #: pysvnmanager/model/svnauthz.py:1792 586 631 #, python-format 587 632 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 588 633 msgstr "" 589 634 590 #: pysvnmanager/model/svnauthz.py:18 29635 #: pysvnmanager/model/svnauthz.py:1832 591 636 #, python-format 592 637 msgid "" … … 600 645 msgstr "" 601 646 602 #: pysvnmanager/model/svnauthz.py:18 48647 #: pysvnmanager/model/svnauthz.py:1851 603 648 #, python-format 604 649 msgid "" … … 636 681 #: pysvnmanager/templates/base.mako:35 637 682 #: pysvnmanager/templates/authz/index.mako:5 638 #: pysvnmanager/templates/authz/index.mako:59 0683 #: pysvnmanager/templates/authz/index.mako:592 639 684 msgid "ACL management" 640 685 msgstr "" … … 650 695 msgstr "" 651 696 697 #: pysvnmanager/templates/base.mako:38 698 msgid "Welcome" 699 msgstr "" 700 652 701 #: pysvnmanager/templates/base.mako:39 653 702 msgid "Logout" … … 663 712 664 713 #: pysvnmanager/templates/authz/index.mako:171 665 #: pysvnmanager/templates/authz/index.mako:66 4714 #: pysvnmanager/templates/authz/index.mako:668 666 715 msgid "Full" 667 716 msgstr "" 668 717 669 718 #: pysvnmanager/templates/authz/index.mako:175 670 #: pysvnmanager/templates/authz/index.mako:66 5719 #: pysvnmanager/templates/authz/index.mako:669 671 720 msgid "Denied" 672 721 msgstr "" … … 680 729 msgstr "" 681 730 682 #: pysvnmanager/templates/authz/index.mako:472 731 #: pysvnmanager/templates/authz/index.mako:473 732 msgid "Please input repository name." 733 msgstr "" 734 735 #: pysvnmanager/templates/authz/index.mako:479 736 msgid "Save failed." 737 msgstr "" 738 739 #: pysvnmanager/templates/authz/index.mako:485 683 740 msgid "Please input module path." 684 741 msgstr "" 685 742 686 #: pysvnmanager/templates/authz/index.mako:478 687 msgid "Please input repository name." 688 msgstr "" 689 690 #: pysvnmanager/templates/authz/index.mako:483 691 msgid "Save failed." 692 msgstr "" 693 694 #: pysvnmanager/templates/authz/index.mako:503 743 #: pysvnmanager/templates/authz/index.mako:505 695 744 msgid "Update ACL failed:" 696 745 msgstr "" 697 746 698 #: pysvnmanager/templates/authz/index.mako:5 08747 #: pysvnmanager/templates/authz/index.mako:510 699 748 msgid "Update ACL successfully." 700 749 msgstr "" 701 750 702 #: pysvnmanager/templates/authz/index.mako:5 29751 #: pysvnmanager/templates/authz/index.mako:531 703 752 msgid "No path selected." 704 753 msgstr "" 705 754 706 #: pysvnmanager/templates/authz/index.mako:53 4755 #: pysvnmanager/templates/authz/index.mako:536 707 756 msgid "Are you sure to delete module:" 708 757 msgstr "" 709 758 710 #: pysvnmanager/templates/authz/index.mako:53 6759 #: pysvnmanager/templates/authz/index.mako:538 711 760 #: pysvnmanager/templates/role/index.mako:446 712 761 #: pysvnmanager/templates/role/index.mako:531 … … 714 763 msgstr "" 715 764 716 #: pysvnmanager/templates/authz/index.mako:55 7765 #: pysvnmanager/templates/authz/index.mako:559 717 766 msgid "Can not delete module " 718 767 msgstr "" 719 768 720 #: pysvnmanager/templates/authz/index.mako:56 2769 #: pysvnmanager/templates/authz/index.mako:564 721 770 msgid "Successfully delete module:" 722 771 msgstr "" 723 772 724 #: pysvnmanager/templates/authz/index.mako:59 7773 #: pysvnmanager/templates/authz/index.mako:599 725 774 #: pysvnmanager/templates/repos/hooks.mako:188 726 775 msgid "Repository:" 727 776 msgstr "" 728 777 729 #: pysvnmanager/templates/authz/index.mako:60 0778 #: pysvnmanager/templates/authz/index.mako:603 730 779 msgid "New repository" 731 780 msgstr "" 732 781 733 #: pysvnmanager/templates/authz/index.mako:60 4782 #: pysvnmanager/templates/authz/index.mako:608 734 783 msgid "Repository Name:" 735 784 msgstr "" 736 785 737 #: pysvnmanager/templates/authz/index.mako:6 09786 #: pysvnmanager/templates/authz/index.mako:613 738 787 msgid "Administrators:" 739 788 msgstr "" 740 789 741 #: pysvnmanager/templates/authz/index.mako:62 1790 #: pysvnmanager/templates/authz/index.mako:625 742 791 msgid "Module:" 743 792 msgstr "" 744 793 745 #: pysvnmanager/templates/authz/index.mako:62 4794 #: pysvnmanager/templates/authz/index.mako:628 746 795 msgid "New module" 747 796 msgstr "" 748 797 749 #: pysvnmanager/templates/authz/index.mako:63 0798 #: pysvnmanager/templates/authz/index.mako:634 750 799 msgid "Module Path:" 751 800 msgstr "" 752 801 753 #: pysvnmanager/templates/authz/index.mako:64 4802 #: pysvnmanager/templates/authz/index.mako:648 754 803 msgid "ACL" 755 804 msgstr "" 756 805 757 #: pysvnmanager/templates/authz/index.mako:6 49806 #: pysvnmanager/templates/authz/index.mako:653 758 807 msgid "Users" 759 808 msgstr "" 760 809 761 #: pysvnmanager/templates/authz/index.mako:66 3810 #: pysvnmanager/templates/authz/index.mako:667 762 811 msgid "ReadOnly" 763 812 msgstr "" 764 813 765 #: pysvnmanager/templates/authz/index.mako:6 78766 #: pysvnmanager/templates/role/index.mako:7 11814 #: pysvnmanager/templates/authz/index.mako:682 815 #: pysvnmanager/templates/role/index.mako:721 767 816 msgid "Save" 768 817 msgstr "" 769 818 770 #: pysvnmanager/templates/authz/index.mako:6 79771 #: pysvnmanager/templates/role/index.mako:7 12819 #: pysvnmanager/templates/authz/index.mako:683 820 #: pysvnmanager/templates/role/index.mako:722 772 821 msgid "Delete" 773 822 msgstr "" 774 823 775 #: pysvnmanager/templates/authz/index.mako:68 0776 #: pysvnmanager/templates/role/index.mako:7 13824 #: pysvnmanager/templates/authz/index.mako:684 825 #: pysvnmanager/templates/role/index.mako:723 777 826 msgid "Cancel" 778 827 msgstr "" … … 882 931 msgstr "" 883 932 884 #: pysvnmanager/templates/repos/hooks.mako:19 1933 #: pysvnmanager/templates/repos/hooks.mako:192 885 934 msgid "Add repository" 886 935 msgstr "" 887 936 888 #: pysvnmanager/templates/repos/hooks.mako:19 2937 #: pysvnmanager/templates/repos/hooks.mako:193 889 938 #: pysvnmanager/templates/repos/remove.mako:5 890 939 #: pysvnmanager/templates/repos/remove.mako:49 … … 893 942 msgstr "" 894 943 895 #: pysvnmanager/templates/repos/hooks.mako:19 7944 #: pysvnmanager/templates/repos/hooks.mako:199 896 945 msgid "Uninstalled hooks:" 897 946 msgstr "" 898 947 899 #: pysvnmanager/templates/repos/hooks.mako:22 3948 #: pysvnmanager/templates/repos/hooks.mako:225 900 949 msgid "Install this plugin" 901 950 msgstr "" 902 951 903 952 #: pysvnmanager/templates/role/index.mako:5 904 #: pysvnmanager/templates/role/index.mako:6 25953 #: pysvnmanager/templates/role/index.mako:633 905 954 msgid "Role Management" 906 955 msgstr "" … … 946 995 msgstr "" 947 996 948 #: pysvnmanager/templates/role/index.mako:6 32997 #: pysvnmanager/templates/role/index.mako:640 949 998 msgid "Select a role name:" 950 999 msgstr "" 951 1000 952 #: pysvnmanager/templates/role/index.mako:6 361001 #: pysvnmanager/templates/role/index.mako:645 953 1002 msgid "New Group" 954 1003 msgstr "" 955 1004 956 #: pysvnmanager/templates/role/index.mako:6 371005 #: pysvnmanager/templates/role/index.mako:646 957 1006 msgid "New Alias" 958 1007 msgstr "" 959 1008 960 #: pysvnmanager/templates/role/index.mako:6 411009 #: pysvnmanager/templates/role/index.mako:651 961 1010 msgid "New group name:" 962 1011 msgstr "" 963 1012 964 #: pysvnmanager/templates/role/index.mako:6 451013 #: pysvnmanager/templates/role/index.mako:655 965 1014 msgid "New alias name:" 966 1015 msgstr "" 967 1016 968 #: pysvnmanager/templates/role/index.mako:6 571017 #: pysvnmanager/templates/role/index.mako:667 969 1018 msgid "Members list" 970 1019 msgstr "" 971 1020 972 #: pysvnmanager/templates/role/index.mako:6 621021 #: pysvnmanager/templates/role/index.mako:672 973 1022 msgid "Other users" 974 1023 msgstr "" 975 1024 976 #: pysvnmanager/templates/role/index.mako:6 811025 #: pysvnmanager/templates/role/index.mako:691 977 1026 msgid "Ignore recursive" 978 1027 msgstr "" 979 1028 980 #: pysvnmanager/templates/role/index.mako: 6931029 #: pysvnmanager/templates/role/index.mako:703 981 1030 msgid "User name:" 982 1031 msgstr "" -
branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/pysvnmanager.pot
r54 r83 1 1 # Translations template for pySvnManager. 2 # Copyright (C) 200 8ORGANIZATION2 # Copyright (C) 2009 ORGANIZATION 3 3 # This file is distributed under the same license as the pySvnManager project. 4 # FIRST AUTHOR <EMAIL@ADDRESS>, 200 8.4 # FIRST AUTHOR <EMAIL@ADDRESS>, 2009. 5 5 # 6 6 #, fuzzy 7 7 msgid "" 8 8 msgstr "" 9 "Project-Id-Version: pySvnManager 0.2. 1\n"9 "Project-Id-Version: pySvnManager 0.2.2\n" 10 10 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 11 "POT-Creation-Date: 200 8-08-30 13:16+0800\n"11 "POT-Creation-Date: 2009-03-14 14:51+0800\n" 12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 18 18 "Generated-By: Babel 0.9.4\n" 19 19 20 #: pysvnmanager/controllers/authz.py:6 0pysvnmanager/templates/authz/index.mako:15220 #: pysvnmanager/controllers/authz.py:63 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:6 1pysvnmanager/templates/authz/index.mako:15425 #: pysvnmanager/controllers/authz.py:64 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:6 2pysvnmanager/templates/authz/index.mako:15630 #: pysvnmanager/controllers/authz.py:65 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: 67 pysvnmanager/controllers/role.py:6736 #: pysvnmanager/controllers/role.py: 87pysvnmanager/templates/authz/index.mako:14835 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 36 #: pysvnmanager/controllers/role.py:91 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:7 0 pysvnmanager/controllers/role.py:7246 #: pysvnmanager/controllers/role.py: 89pysvnmanager/templates/authz/index.mako:15045 #: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 46 #: pysvnmanager/controllers/role.py:93 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:8 5 pysvnmanager/controllers/authz.py:11656 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py: 5757 #: pysvnmanager/controllers/repos.py: 76 pysvnmanager/controllers/role.py:6055 #: pysvnmanager/controllers/authz.py:88 pysvnmanager/controllers/authz.py:119 56 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:72 57 #: pysvnmanager/controllers/repos.py:98 pysvnmanager/controllers/role.py:64 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 7765 #: pysvnmanager/controllers/authz.py:180 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:19 070 #: pysvnmanager/controllers/authz.py:195 71 71 #, python-format 72 72 msgid "Repository %s not exist." 73 73 msgstr "" 74 74 75 #: pysvnmanager/controllers/authz.py: 19875 #: pysvnmanager/controllers/authz.py:203 76 76 #, python-format 77 77 msgid "Module %s not exist." 78 78 msgstr "" 79 79 80 #: pysvnmanager/controllers/authz.py:20 480 #: pysvnmanager/controllers/authz.py:209 81 81 msgid "You can not delete yourself from admin list." 82 82 msgstr "" 83 83 84 #: pysvnmanager/controllers/authz.py:2 2984 #: pysvnmanager/controllers/authz.py:234 85 85 #, python-format 86 86 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" … … 91 91 msgstr "" 92 92 93 #: pysvnmanager/controllers/logs.py: 6893 #: pysvnmanager/controllers/logs.py:71 94 94 msgid "Rev" 95 95 msgstr "" 96 96 97 #: pysvnmanager/controllers/logs.py: 6997 #: pysvnmanager/controllers/logs.py:72 98 98 msgid "Who" 99 99 msgstr "" 100 100 101 #: pysvnmanager/controllers/logs.py:7 0101 #: pysvnmanager/controllers/logs.py:73 102 102 msgid "When" 103 103 msgstr "" 104 104 105 #: pysvnmanager/controllers/logs.py:7 1105 #: pysvnmanager/controllers/logs.py:74 106 106 msgid "Why" 107 107 msgstr "" 108 108 109 #: pysvnmanager/controllers/logs.py:7 2109 #: pysvnmanager/controllers/logs.py:75 110 110 msgid "Compare" 111 111 msgstr "" 112 112 113 #: pysvnmanager/controllers/logs.py:11 5113 #: pysvnmanager/controllers/logs.py:118 114 114 msgid "Page: " 115 115 msgstr "" 116 116 117 #: pysvnmanager/controllers/logs.py:15 1117 #: pysvnmanager/controllers/logs.py:154 118 118 msgid "Compares between" 119 119 msgstr "" 120 120 121 #: pysvnmanager/controllers/logs.py:17 0121 #: pysvnmanager/controllers/logs.py:174 122 122 #, python-format 123 123 msgid "Rollback successfully to revision: %s" 124 124 msgstr "" 125 125 126 #: pysvnmanager/controllers/logs.py:1 79126 #: pysvnmanager/controllers/logs.py:181 127 127 #, python-format 128 128 msgid "Rollback failed: %s" 129 129 msgstr "" 130 130 131 #: pysvnmanager/controllers/repos.py: 91131 #: pysvnmanager/controllers/repos.py:114 132 132 msgid "Installed hooks:" 133 133 msgstr "" 134 134 135 #: pysvnmanager/controllers/repos.py: 97135 #: pysvnmanager/controllers/repos.py:120 136 136 msgid "Id" 137 137 msgstr "" 138 138 139 #: pysvnmanager/controllers/repos.py: 98139 #: pysvnmanager/controllers/repos.py:121 140 140 msgid "Plugin name" 141 141 msgstr "" 142 142 143 #: pysvnmanager/controllers/repos.py: 99 pysvnmanager/hooks/plugins/__init__.py:330143 #: pysvnmanager/controllers/repos.py:122 pysvnmanager/hooks/plugins/__init__.py:326 144 144 msgid "Type" 145 145 msgstr "" 146 146 147 #: pysvnmanager/controllers/repos.py:1 13147 #: pysvnmanager/controllers/repos.py:136 148 148 msgid "Remove selected hooks" 149 149 msgstr "" 150 150 151 #: pysvnmanager/controllers/repos.py:1 36151 #: pysvnmanager/controllers/repos.py:161 152 152 #, python-format 153 153 msgid "" … … 156 156 msgstr "" 157 157 158 #: pysvnmanager/controllers/repos.py:1 39158 #: pysvnmanager/controllers/repos.py:164 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 60163 #: pysvnmanager/controllers/repos.py:186 164 164 #, python-format 165 165 msgid "" … … 168 168 msgstr "" 169 169 170 #: pysvnmanager/controllers/repos.py:1 63170 #: pysvnmanager/controllers/repos.py:189 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 66175 #: pysvnmanager/controllers/repos.py:192 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: 175180 #: pysvnmanager/controllers/repos.py:202 181 181 #, python-format 182 182 msgid "" … … 185 185 msgstr "" 186 186 187 #: pysvnmanager/controllers/repos.py: 178187 #: pysvnmanager/controllers/repos.py:205 188 188 #, python-format 189 189 msgid "Create repository '%(repos)s' success." 190 190 msgstr "" 191 191 192 #: pysvnmanager/controllers/repos.py: 191192 #: pysvnmanager/controllers/repos.py:221 193 193 #, python-format 194 194 msgid "" … … 197 197 msgstr "" 198 198 199 #: pysvnmanager/controllers/repos.py: 194199 #: pysvnmanager/controllers/repos.py:224 200 200 #, python-format 201 201 msgid "Delete blank repository '%(repos)s' success." 202 202 msgstr "" 203 203 204 #: pysvnmanager/controllers/role.py:12 0204 #: pysvnmanager/controllers/role.py:125 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:14 0209 #: pysvnmanager/controllers/role.py:146 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:16 2214 #: pysvnmanager/controllers/role.py:169 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 82219 #: pysvnmanager/controllers/role.py:190 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:5 2224 #: pysvnmanager/controllers/security.py:50 225 225 #, python-format 226 226 msgid "User %s logged in" 227 227 msgstr "" 228 228 229 #: pysvnmanager/controllers/security.py:6 3229 #: pysvnmanager/controllers/security.py:61 230 230 #, python-format 231 231 msgid "Login failed for user: %s" 232 232 msgstr "" 233 233 234 #: pysvnmanager/controllers/security.py: 71234 #: pysvnmanager/controllers/security.py:69 235 235 #, python-format 236 236 msgid "User %s logged out" … … 308 308 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 309 309 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 310 #: pysvnmanager/hooks/plugins/TracPostCommit.py:66 310 311 msgid "Current configuration" 311 312 msgstr "" … … 320 321 321 322 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 322 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 1323 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 323 324 msgid "Minimal size of commit log: " 324 325 msgstr "" 325 326 326 327 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 327 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 7328 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 328 329 msgid "Pattern which commit log must match against: " 329 330 msgstr "" … … 335 336 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 336 337 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 337 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 338 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:91 339 #: pysvnmanager/hooks/plugins/TracPostCommit.py:94 338 340 msgid "Fill this form" 339 341 msgstr "" … … 345 347 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 346 348 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 347 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 349 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 350 #: pysvnmanager/hooks/plugins/TracPostCommit.py:101 348 351 msgid "Enable" 349 352 msgstr "" … … 351 354 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 352 355 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 353 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 356 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:100 357 #: pysvnmanager/hooks/plugins/TracPostCommit.py:103 354 358 msgid "Disable" 355 359 msgstr "" 356 360 357 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:12 3361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 358 362 msgid "Pattern which commit log must <b>NOT</b> match against: " 359 363 msgstr "" 360 364 361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:15 6365 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 362 366 msgid "Commit log size must > 0." 363 367 msgstr "" … … 415 419 msgstr "" 416 420 417 #: pysvnmanager/hooks/plugins/EmailNotify.py:12 5421 #: pysvnmanager/hooks/plugins/EmailNotify.py:124 418 422 msgid "Input email notify configurations: " 419 423 msgstr "" 420 424 421 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 422 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 425 #: pysvnmanager/hooks/plugins/EmailNotify.py:154 423 426 msgid "Wrong configuration." 424 427 msgstr "" … … 456 459 msgstr "" 457 460 458 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:7 1461 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 459 462 msgid "Admin user: " 460 463 msgstr "" 461 464 462 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:9 3465 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 463 466 msgid "Enable readonly mirror: " 464 467 msgstr "" 465 468 466 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:10 1469 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 467 470 msgid "Svnsync administrator: " 468 471 msgstr "" 469 472 473 #: pysvnmanager/hooks/plugins/TracPostCommit.py:27 474 msgid "Trac integration with subversion's post commit hook." 475 msgstr "" 476 477 #: pysvnmanager/hooks/plugins/TracPostCommit.py:33 478 msgid "" 479 "Integrate subversion with trac: Commit log of subversion appends to trac " 480 "tickets if subversion commit log contains ticket id." 481 msgstr "" 482 483 #: pysvnmanager/hooks/plugins/TracPostCommit.py:68 484 msgid "Trac post commit hook is enabled." 485 msgstr "" 486 487 #: pysvnmanager/hooks/plugins/TracPostCommit.py:70 488 msgid "Trac post commit hook is disabled." 489 msgstr "" 490 491 #: pysvnmanager/hooks/plugins/TracPostCommit.py:72 492 #: pysvnmanager/hooks/plugins/TracPostCommit.py:105 493 msgid "Trac environment location: " 494 msgstr "" 495 496 #: pysvnmanager/hooks/plugins/TracPostCommit.py:74 497 msgid "Repository name in trac: " 498 msgstr "" 499 500 #: pysvnmanager/hooks/plugins/TracPostCommit.py:76 501 msgid "Fixed ticket's status: " 502 msgstr "" 503 504 #: pysvnmanager/hooks/plugins/TracPostCommit.py:98 505 msgid "Enable trac post commit hook: " 506 msgstr "" 507 508 #: pysvnmanager/hooks/plugins/TracPostCommit.py:110 509 msgid "Repository name in trac (default is blank): " 510 msgstr "" 511 512 #: pysvnmanager/hooks/plugins/TracPostCommit.py:115 513 msgid "Fixed ticket status (default is closed): " 514 msgstr "" 515 470 516 #: pysvnmanager/hooks/plugins/__init__.py:111 471 517 #, python-format … … 479 525 480 526 #: 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 484 #: pysvnmanager/hooks/plugins/__init__.py:348 485 #: pysvnmanager/hooks/plugins/__init__.py:355 486 #: pysvnmanager/hooks/plugins/__init__.py:364 527 #: pysvnmanager/hooks/plugins/__init__.py:224 528 #: pysvnmanager/hooks/plugins/__init__.py:246 529 #: pysvnmanager/hooks/plugins/__init__.py:344 530 #: pysvnmanager/hooks/plugins/__init__.py:351 531 #: pysvnmanager/hooks/plugins/__init__.py:360 487 532 msgid "Plugin not fully implemented." 488 533 msgstr "" 489 534 490 #: pysvnmanager/hooks/plugins/__init__.py:32 9535 #: pysvnmanager/hooks/plugins/__init__.py:325 491 536 msgid "Name" 492 537 msgstr "" 493 538 494 #: pysvnmanager/hooks/plugins/__init__.py:3 31539 #: pysvnmanager/hooks/plugins/__init__.py:327 495 540 msgid "Description" 496 541 msgstr "" … … 506 551 msgstr "" 507 552 508 #: pysvnmanager/model/repos.py:1 66553 #: pysvnmanager/model/repos.py:193 509 554 #, python-format 510 555 msgid "Repos %s is not a blank repository." … … 543 588 msgstr "" 544 589 545 #: pysvnmanager/model/svnauthz.py:150 2 pysvnmanager/model/svnauthz.py:1509546 #: pysvnmanager/model/svnauthz.py:151 3590 #: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 591 #: pysvnmanager/model/svnauthz.py:1516 547 592 #, python-format 548 593 msgid "Unknown rule format: %s" 549 594 msgstr "" 550 595 551 #: pysvnmanager/model/svnauthz.py:15 27596 #: pysvnmanager/model/svnauthz.py:1530 552 597 #, python-format 553 598 msgid "No module exist for %s:%s" 554 599 msgstr "" 555 600 556 #: pysvnmanager/model/svnauthz.py:16 37601 #: pysvnmanager/model/svnauthz.py:1640 557 602 #, python-format 558 603 msgid "Alias %s is referenced by group %s." 559 604 msgstr "" 560 605 561 #: pysvnmanager/model/svnauthz.py:16 49606 #: pysvnmanager/model/svnauthz.py:1652 562 607 #, python-format 563 608 msgid "%s is referenced by [%s]." 564 609 msgstr "" 565 610 566 #: pysvnmanager/model/svnauthz.py:178 5611 #: pysvnmanager/model/svnauthz.py:1788 567 612 #, python-format 568 613 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 569 614 msgstr "" 570 615 571 #: pysvnmanager/model/svnauthz.py:17 87616 #: pysvnmanager/model/svnauthz.py:1790 572 617 #, python-format 573 618 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 574 619 msgstr "" 575 620 576 #: pysvnmanager/model/svnauthz.py:17 89621 #: pysvnmanager/model/svnauthz.py:1792 577 622 #, python-format 578 623 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 579 624 msgstr "" 580 625 581 #: pysvnmanager/model/svnauthz.py:18 29626 #: pysvnmanager/model/svnauthz.py:1832 582 627 #, python-format 583 628 msgid "" … … 591 636 msgstr "" 592 637 593 #: pysvnmanager/model/svnauthz.py:18 48638 #: pysvnmanager/model/svnauthz.py:1851 594 639 #, python-format 595 640 msgid "" … … 626 671 627 672 #: pysvnmanager/templates/base.mako:35 pysvnmanager/templates/authz/index.mako:5 628 #: pysvnmanager/templates/authz/index.mako:59 0673 #: pysvnmanager/templates/authz/index.mako:592 629 674 msgid "ACL management" 630 675 msgstr "" … … 639 684 msgstr "" 640 685 686 #: pysvnmanager/templates/base.mako:38 687 msgid "Welcome" 688 msgstr "" 689 641 690 #: pysvnmanager/templates/base.mako:39 642 691 msgid "Logout" … … 652 701 653 702 #: pysvnmanager/templates/authz/index.mako:171 654 #: pysvnmanager/templates/authz/index.mako:66 4703 #: pysvnmanager/templates/authz/index.mako:668 655 704 msgid "Full" 656 705 msgstr "" 657 706 658 707 #: pysvnmanager/templates/authz/index.mako:175 659 #: pysvnmanager/templates/authz/index.mako:66 5708 #: pysvnmanager/templates/authz/index.mako:669 660 709 msgid "Denied" 661 710 msgstr "" … … 669 718 msgstr "" 670 719 671 #: pysvnmanager/templates/authz/index.mako:472 720 #: pysvnmanager/templates/authz/index.mako:473 721 msgid "Please input repository name." 722 msgstr "" 723 724 #: pysvnmanager/templates/authz/index.mako:479 725 msgid "Save failed." 726 msgstr "" 727 728 #: pysvnmanager/templates/authz/index.mako:485 672 729 msgid "Please input module path." 673 730 msgstr "" 674 731 675 #: pysvnmanager/templates/authz/index.mako:478 676 msgid "Please input repository name." 677 msgstr "" 678 679 #: pysvnmanager/templates/authz/index.mako:483 680 msgid "Save failed." 681 msgstr "" 682 683 #: pysvnmanager/templates/authz/index.mako:503 732 #: pysvnmanager/templates/authz/index.mako:505 684 733 msgid "Update ACL failed:" 685 734 msgstr "" 686 735 687 #: pysvnmanager/templates/authz/index.mako:5 08736 #: pysvnmanager/templates/authz/index.mako:510 688 737 msgid "Update ACL successfully." 689 738 msgstr "" 690 739 691 #: pysvnmanager/templates/authz/index.mako:5 29740 #: pysvnmanager/templates/authz/index.mako:531 692 741 msgid "No path selected." 693 742 msgstr "" 694 743 695 #: pysvnmanager/templates/authz/index.mako:53 4744 #: pysvnmanager/templates/authz/index.mako:536 696 745 msgid "Are you sure to delete module:" 697 746 msgstr "" 698 747 699 #: pysvnmanager/templates/authz/index.mako:53 6748 #: pysvnmanager/templates/authz/index.mako:538 700 749 #: pysvnmanager/templates/role/index.mako:446 701 750 #: pysvnmanager/templates/role/index.mako:531 … … 703 752 msgstr "" 704 753 705 #: pysvnmanager/templates/authz/index.mako:55 7754 #: pysvnmanager/templates/authz/index.mako:559 706 755 msgid "Can not delete module " 707 756 msgstr "" 708 757 709 #: pysvnmanager/templates/authz/index.mako:56 2758 #: pysvnmanager/templates/authz/index.mako:564 710 759 msgid "Successfully delete module:" 711 760 msgstr "" 712 761 713 #: pysvnmanager/templates/authz/index.mako:59 7762 #: pysvnmanager/templates/authz/index.mako:599 714 763 #: pysvnmanager/templates/repos/hooks.mako:188 715 764 msgid "Repository:" 716 765 msgstr "" 717 766 718 #: pysvnmanager/templates/authz/index.mako:60 0767 #: pysvnmanager/templates/authz/index.mako:603 719 768 msgid "New repository" 720 769 msgstr "" 721 770 722 #: pysvnmanager/templates/authz/index.mako:60 4771 #: pysvnmanager/templates/authz/index.mako:608 723 772 msgid "Repository Name:" 724 773 msgstr "" 725 774 726 #: pysvnmanager/templates/authz/index.mako:6 09775 #: pysvnmanager/templates/authz/index.mako:613 727 776 msgid "Administrators:" 728 777 msgstr "" 729 778 730 #: pysvnmanager/templates/authz/index.mako:62 1779 #: pysvnmanager/templates/authz/index.mako:625 731 780 msgid "Module:" 732 781 msgstr "" 733 782 734 #: pysvnmanager/templates/authz/index.mako:62 4783 #: pysvnmanager/templates/authz/index.mako:628 735 784 msgid "New module" 736 785 msgstr "" 737 786 738 #: pysvnmanager/templates/authz/index.mako:63 0787 #: pysvnmanager/templates/authz/index.mako:634 739 788 msgid "Module Path:" 740 789 msgstr "" 741 790 742 #: pysvnmanager/templates/authz/index.mako:64 4791 #: pysvnmanager/templates/authz/index.mako:648 743 792 msgid "ACL" 744 793 msgstr "" 745 794 746 #: pysvnmanager/templates/authz/index.mako:6 49795 #: pysvnmanager/templates/authz/index.mako:653 747 796 msgid "Users" 748 797 msgstr "" 749 798 750 #: pysvnmanager/templates/authz/index.mako:66 3799 #: pysvnmanager/templates/authz/index.mako:667 751 800 msgid "ReadOnly" 752 801 msgstr "" 753 802 754 #: pysvnmanager/templates/authz/index.mako:6 78755 #: pysvnmanager/templates/role/index.mako:7 11803 #: pysvnmanager/templates/authz/index.mako:682 804 #: pysvnmanager/templates/role/index.mako:721 756 805 msgid "Save" 757 806 msgstr "" 758 807 759 #: pysvnmanager/templates/authz/index.mako:6 79760 #: pysvnmanager/templates/role/index.mako:7 12808 #: pysvnmanager/templates/authz/index.mako:683 809 #: pysvnmanager/templates/role/index.mako:722 761 810 msgid "Delete" 762 811 msgstr "" 763 812 764 #: pysvnmanager/templates/authz/index.mako:68 0765 #: pysvnmanager/templates/role/index.mako:7 13813 #: pysvnmanager/templates/authz/index.mako:684 814 #: pysvnmanager/templates/role/index.mako:723 766 815 msgid "Cancel" 767 816 msgstr "" … … 871 920 msgstr "" 872 921 873 #: pysvnmanager/templates/repos/hooks.mako:19 1922 #: pysvnmanager/templates/repos/hooks.mako:192 874 923 msgid "Add repository" 875 924 msgstr "" 876 925 877 #: pysvnmanager/templates/repos/hooks.mako:19 2926 #: pysvnmanager/templates/repos/hooks.mako:193 878 927 #: pysvnmanager/templates/repos/remove.mako:5 879 928 #: pysvnmanager/templates/repos/remove.mako:49 … … 882 931 msgstr "" 883 932 884 #: pysvnmanager/templates/repos/hooks.mako:19 7933 #: pysvnmanager/templates/repos/hooks.mako:199 885 934 msgid "Uninstalled hooks:" 886 935 msgstr "" 887 936 888 #: pysvnmanager/templates/repos/hooks.mako:22 3937 #: pysvnmanager/templates/repos/hooks.mako:225 889 938 msgid "Install this plugin" 890 939 msgstr "" 891 940 892 941 #: pysvnmanager/templates/role/index.mako:5 893 #: pysvnmanager/templates/role/index.mako:6 25942 #: pysvnmanager/templates/role/index.mako:633 894 943 msgid "Role Management" 895 944 msgstr "" … … 935 984 msgstr "" 936 985 937 #: pysvnmanager/templates/role/index.mako:6 32986 #: pysvnmanager/templates/role/index.mako:640 938 987 msgid "Select a role name:" 939 988 msgstr "" 940 989 941 #: pysvnmanager/templates/role/index.mako:6 36990 #: pysvnmanager/templates/role/index.mako:645 942 991 msgid "New Group" 943 992 msgstr "" 944 993 945 #: pysvnmanager/templates/role/index.mako:6 37994 #: pysvnmanager/templates/role/index.mako:646 946 995 msgid "New Alias" 947 996 msgstr "" 948 997 949 #: pysvnmanager/templates/role/index.mako:6 41998 #: pysvnmanager/templates/role/index.mako:651 950 999 msgid "New group name:" 951 1000 msgstr "" 952 1001 953 #: pysvnmanager/templates/role/index.mako:6 451002 #: pysvnmanager/templates/role/index.mako:655 954 1003 msgid "New alias name:" 955 1004 msgstr "" 956 1005 957 #: pysvnmanager/templates/role/index.mako:6 571006 #: pysvnmanager/templates/role/index.mako:667 958 1007 msgid "Members list" 959 1008 msgstr "" 960 1009 961 #: pysvnmanager/templates/role/index.mako:6 621010 #: pysvnmanager/templates/role/index.mako:672 962 1011 msgid "Other users" 963 1012 msgstr "" 964 1013 965 #: pysvnmanager/templates/role/index.mako:6 811014 #: pysvnmanager/templates/role/index.mako:691 966 1015 msgid "Ignore recursive" 967 1016 msgstr "" 968 1017 969 #: pysvnmanager/templates/role/index.mako: 6931018 #: pysvnmanager/templates/role/index.mako:703 970 1019 msgid "User name:" 971 1020 msgstr "" -
branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po
r54 r83 1 # translation of new.po to 1 2 # translation of pysvnmanager.po to 2 3 # Chinese (China) translations for pysvnmanager. … … 6 7 # 7 8 # FIRST AUTHOR <EMAIL@ADDRESS>, 2008. 8 # Jiang Xin <worldhello.net@gmail.com>, 2008 .9 # Jiang Xin <worldhello.net@gmail.com>, 2008, 2009. 9 10 msgid "" 10 11 msgstr "" 11 "Project-Id-Version: pysvnmanager\n"12 "Project-Id-Version: new\n" 12 13 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 13 "POT-Creation-Date: 200 8-07-03 22:14+0800\n"14 "PO-Revision-Date: 200 8-08-30 13:16+0800\n"14 "POT-Creation-Date: 2009-03-08 16:14+0800\n" 15 "PO-Revision-Date: 2009-03-14 14:52+0800\n" 15 16 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" 16 "Language-Team: < zh@li.org>\n"17 "Language-Team: <en@li.org>\n" 17 18 "Plural-Forms: nplurals=2; plural=(n != 1)\n" 18 19 "MIME-Version: 1.0\n" … … 21 22 "Generated-By: Babel 0.9.4\n" 22 23 23 #: pysvnmanager/controllers/authz.py:6 024 #: pysvnmanager/controllers/authz.py:63 24 25 #: pysvnmanager/templates/authz/index.mako:152 25 26 #: pysvnmanager/templates/check/index.mako:10 … … 27 28 msgstr "所有用户(含匿名)" 28 29 29 #: pysvnmanager/controllers/authz.py:6 130 #: pysvnmanager/controllers/authz.py:64 30 31 #: pysvnmanager/templates/authz/index.mako:154 31 32 #: pysvnmanager/templates/check/index.mako:11 … … 33 34 msgstr "注册用户" 34 35 35 #: pysvnmanager/controllers/authz.py:6 236 #: pysvnmanager/controllers/authz.py:65 36 37 #: pysvnmanager/templates/authz/index.mako:156 37 38 #: pysvnmanager/templates/check/index.mako:12 … … 39 40 msgstr "匿名用户" 40 41 41 #: pysvnmanager/controllers/authz.py: 67 pysvnmanager/controllers/role.py:6742 #: pysvnmanager/controllers/role.py: 8742 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 43 #: pysvnmanager/controllers/role.py:91 43 44 #: pysvnmanager/templates/authz/index.mako:148 44 45 #: pysvnmanager/templates/check/index.mako:17 … … 50 51 msgstr "团队:" 51 52 52 #: pysvnmanager/controllers/authz.py:7 0 pysvnmanager/controllers/role.py:7253 #: pysvnmanager/controllers/role.py: 8953 #: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 54 #: pysvnmanager/controllers/role.py:93 54 55 #: pysvnmanager/templates/authz/index.mako:150 55 56 #: pysvnmanager/templates/check/index.mako:19 … … 61 62 msgstr "别名:" 62 63 63 #: pysvnmanager/controllers/authz.py:8 5 pysvnmanager/controllers/authz.py:11664 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py: 5765 #: pysvnmanager/controllers/repos.py: 76 pysvnmanager/controllers/role.py:6064 #: pysvnmanager/controllers/authz.py:88 pysvnmanager/controllers/authz.py:119 65 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:72 66 #: pysvnmanager/controllers/repos.py:98 pysvnmanager/controllers/role.py:64 66 67 #: pysvnmanager/templates/check/index.mako:9 67 68 #: pysvnmanager/templates/check/index.mako:23 … … 71 72 msgstr "请选择..." 72 73 73 #: pysvnmanager/controllers/authz.py:1 7774 #: pysvnmanager/controllers/authz.py:180 74 75 #, python-format 75 76 msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 76 77 msgstr "用户 %(user)s 修改了授权策略。(rev:%(rev)s)" 77 78 78 #: pysvnmanager/controllers/authz.py:19 079 #: pysvnmanager/controllers/authz.py:195 79 80 #, python-format 80 81 msgid "Repository %s not exist." 81 82 msgstr "版本库 %s 不存在。" 82 83 83 #: pysvnmanager/controllers/authz.py: 19884 #: pysvnmanager/controllers/authz.py:203 84 85 #, python-format 85 86 msgid "Module %s not exist." 86 87 msgstr "模组 %s 不存在。" 87 88 88 #: pysvnmanager/controllers/authz.py:20 489 #: pysvnmanager/controllers/authz.py:209 89 90 msgid "You can not delete yourself from admin list." 90 91 msgstr "您不能将自己从管理员列表中删除。" 91 92 92 #: pysvnmanager/controllers/authz.py:2 2993 #: pysvnmanager/controllers/authz.py:234 93 94 #, python-format 94 95 msgid "User %(user)s delete authz rules. (rev:%(rev)s)" … … 100 101 msgstr "没有权限。" 101 102 102 #: pysvnmanager/controllers/logs.py: 68103 #: pysvnmanager/controllers/logs.py:71 103 104 msgid "Rev" 104 105 msgstr "版本" 105 106 106 #: pysvnmanager/controllers/logs.py: 69107 #: pysvnmanager/controllers/logs.py:72 107 108 msgid "Who" 108 109 msgstr "管理员" 109 110 110 #: pysvnmanager/controllers/logs.py:7 0111 #: pysvnmanager/controllers/logs.py:73 111 112 msgid "When" 112 113 msgstr "时间" 113 114 114 #: pysvnmanager/controllers/logs.py:7 1115 #: pysvnmanager/controllers/logs.py:74 115 116 msgid "Why" 116 117 msgstr "说明" 117 118 118 #: pysvnmanager/controllers/logs.py:7 2119 #: pysvnmanager/controllers/logs.py:75 119 120 msgid "Compare" 120 121 msgstr "比较" 121 122 122 #: pysvnmanager/controllers/logs.py:11 5123 #: pysvnmanager/controllers/logs.py:118 123 124 msgid "Page: " 124 125 msgstr "页面: " 125 126 126 #: pysvnmanager/controllers/logs.py:15 1127 #: pysvnmanager/controllers/logs.py:154 127 128 msgid "Compares between" 128 129 msgstr "版本间比较" 129 130 130 #: pysvnmanager/controllers/logs.py:17 0131 #: pysvnmanager/controllers/logs.py:174 131 132 #, python-format 132 133 msgid "Rollback successfully to revision: %s" 133 134 msgstr "成功回滚至版本: %s" 134 135 135 #: pysvnmanager/controllers/logs.py:1 79136 #: pysvnmanager/controllers/logs.py:181 136 137 #, python-format 137 138 msgid "Rollback failed: %s" 138 139 msgstr "回滚失败: %s" 139 140 140 #: pysvnmanager/controllers/repos.py: 91141 #: pysvnmanager/controllers/repos.py:114 141 142 msgid "Installed hooks:" 142 143 msgstr "已安装插件:" 143 144 144 #: pysvnmanager/controllers/repos.py: 97145 #: pysvnmanager/controllers/repos.py:120 145 146 msgid "Id" 146 147 msgstr "Id" 147 148 148 #: pysvnmanager/controllers/repos.py: 98149 #: pysvnmanager/controllers/repos.py:121 149 150 msgid "Plugin name" 150 151 msgstr "插件名称" 151 152 152 #: pysvnmanager/controllers/repos.py: 99153 #: pysvnmanager/hooks/plugins/__init__.py:3 30153 #: pysvnmanager/controllers/repos.py:122 154 #: pysvnmanager/hooks/plugins/__init__.py:326 154 155 msgid "Type" 155 156 msgstr "类型" 156 157 157 #: pysvnmanager/controllers/repos.py:1 13158 #: pysvnmanager/controllers/repos.py:136 158 159 msgid "Remove selected hooks" 159 160 msgstr "删除选择的插件" 160 161 161 #: pysvnmanager/controllers/repos.py:1 36162 #: pysvnmanager/controllers/repos.py:161 162 163 #, python-format 163 164 msgid "" … … 168 169 "%(msg)s" 169 170 170 #: pysvnmanager/controllers/repos.py:1 39171 #: pysvnmanager/controllers/repos.py:164 171 172 #, python-format 172 173 msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 173 174 msgstr "成功启用版本库'%(repos)s'的插件'%(plugin)s'。 " 174 175 175 #: pysvnmanager/controllers/repos.py:1 60176 #: pysvnmanager/controllers/repos.py:186 176 177 #, python-format 177 178 msgid "" … … 182 183 "%(msg)s" 183 184 184 #: pysvnmanager/controllers/repos.py:1 63185 #: pysvnmanager/controllers/repos.py:189 185 186 #, python-format 186 187 msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 187 188 msgstr "成功删除版本库'%(repos)s'的插件'%(plugin)s'。" 188 189 189 #: pysvnmanager/controllers/repos.py:1 66190 #: pysvnmanager/controllers/repos.py:192 190 191 #, python-format 191 192 msgid "No plugin has been deleted for '%(repos)s'." 192 193 msgstr "未删除版本库'%(repos)s'的插件。" 193 194 194 #: pysvnmanager/controllers/repos.py: 175195 #: pysvnmanager/controllers/repos.py:202 195 196 #, python-format 196 197 msgid "" … … 201 202 "%(msg)s" 202 203 203 #: pysvnmanager/controllers/repos.py: 178204 #: pysvnmanager/controllers/repos.py:205 204 205 #, python-format 205 206 msgid "Create repository '%(repos)s' success." 206 207 msgstr "成功创建版本库'%(repos)s'。" 207 208 208 #: pysvnmanager/controllers/repos.py: 191209 #: pysvnmanager/controllers/repos.py:221 209 210 #, python-format 210 211 msgid "" … … 215 216 "%(msg)s" 216 217 217 #: pysvnmanager/controllers/repos.py: 194218 #: pysvnmanager/controllers/repos.py:224 218 219 #, python-format 219 220 msgid "Delete blank repository '%(repos)s' success." 220 221 msgstr "成功删除版本库'%(repos)s'。" 221 222 222 #: pysvnmanager/controllers/role.py:12 0223 #: pysvnmanager/controllers/role.py:125 223 224 #, python-format 224 225 msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 225 226 msgstr "用户 %(user)s 修改用户组: %(grp)s。(rev:%(rev)s)" 226 227 227 #: pysvnmanager/controllers/role.py:14 0228 #: pysvnmanager/controllers/role.py:146 228 229 #, python-format 229 230 msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 230 231 msgstr "用户 %(user)s 删除用户组: %(grp)s。(rev:%(rev)s)" 231 232 232 #: pysvnmanager/controllers/role.py:16 2233 #: pysvnmanager/controllers/role.py:169 233 234 #, python-format 234 235 msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 235 236 msgstr "用户 %(user)s 修改别名: %(alias)s。(rev:%(rev)s)" 236 237 237 #: pysvnmanager/controllers/role.py:1 82238 #: pysvnmanager/controllers/role.py:190 238 239 #, python-format 239 240 msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 240 241 msgstr "用户 %(user)s 删除别名: %(alias)s。(rev:%(rev)s,%(msg)s)" 241 242 242 #: pysvnmanager/controllers/security.py:5 2243 #: pysvnmanager/controllers/security.py:50 243 244 #, python-format 244 245 msgid "User %s logged in" 245 246 msgstr "用户 %s 登录" 246 247 247 #: pysvnmanager/controllers/security.py:6 3248 #: pysvnmanager/controllers/security.py:61 248 249 #, python-format 249 250 msgid "Login failed for user: %s" 250 251 msgstr "以 %s 身份登录失败" 251 252 252 #: pysvnmanager/controllers/security.py: 71253 #: pysvnmanager/controllers/security.py:69 253 254 #, python-format 254 255 msgid "User %s logged out" … … 334 335 #: pysvnmanager/hooks/plugins/EmailNotify.py:89 335 336 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 337 #: pysvnmanager/hooks/plugins/TracPostCommit.py:66 336 338 msgid "Current configuration" 337 339 msgstr "当前设置" … … 346 348 347 349 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 348 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 1350 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 349 351 msgid "Minimal size of commit log: " 350 352 msgstr "提交说明长度检查,最少:" 351 353 352 354 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:11 7355 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 354 356 msgid "Pattern which commit log must match against: " 355 357 msgstr "提交说明必须与该模板匹配:" … … 361 363 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 362 364 #: pysvnmanager/hooks/plugins/EmailNotify.py:113 363 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:89 365 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:91 366 #: pysvnmanager/hooks/plugins/TracPostCommit.py:94 364 367 msgid "Fill this form" 365 368 msgstr "填写表单" … … 371 374 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 372 375 #: pysvnmanager/hooks/plugins/EmailNotify.py:120 373 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:96 376 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 377 #: pysvnmanager/hooks/plugins/TracPostCommit.py:101 374 378 msgid "Enable" 375 379 msgstr "启用" … … 377 381 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 378 382 #: pysvnmanager/hooks/plugins/EmailNotify.py:122 379 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:98 383 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:100 384 #: pysvnmanager/hooks/plugins/TracPostCommit.py:103 380 385 msgid "Disable" 381 386 msgstr "关闭" 382 387 383 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:12 3388 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 384 389 msgid "Pattern which commit log must <b>NOT</b> match against: " 385 390 msgstr "提交说明<b>不能</b>出现类似内容:" 386 391 387 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:15 6392 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 388 393 msgid "Commit log size must > 0." 389 394 msgstr "提交说明最小长度阈值必须大于零。" … … 461 466 msgstr "启用邮件通知。" 462 467 463 #: pysvnmanager/hooks/plugins/EmailNotify.py:12 5468 #: pysvnmanager/hooks/plugins/EmailNotify.py:124 464 469 msgid "Input email notify configurations: " 465 470 msgstr "输入邮件通知配置参数: " 466 471 467 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 468 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 472 #: pysvnmanager/hooks/plugins/EmailNotify.py:154 469 473 msgid "Wrong configuration." 470 474 msgstr "错误的配置" … … 503 507 msgstr "只读镜像关闭。" 504 508 505 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:7 1509 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 506 510 msgid "Admin user: " 507 511 msgstr "管理员: " 508 512 509 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:9 3513 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 510 514 msgid "Enable readonly mirror: " 511 515 msgstr "启用只读镜像:" 512 516 513 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:10 1517 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 514 518 msgid "Svnsync administrator: " 515 519 msgstr "Svnsync 管理员:" 516 520 521 #: pysvnmanager/hooks/plugins/TracPostCommit.py:27 522 msgid "Trac integration with subversion's post commit hook." 523 msgstr "Trac 与 SVN 整合。" 524 525 #: pysvnmanager/hooks/plugins/TracPostCommit.py:33 526 msgid "" 527 "Integrate subversion with trac: Commit log of subversion appends to trac " 528 "tickets if subversion commit log contains ticket id." 529 msgstr "" 530 "整合 SVN 与 trac: 如果 subversion 的提交说明包含 ticket id,则更新对应 trac 实例的 ticket " 531 "状态,将提交说明附加到 ticket 后。" 532 533 #: pysvnmanager/hooks/plugins/TracPostCommit.py:68 534 msgid "Trac post commit hook is enabled." 535 msgstr "Trac 整合插件已经启用。" 536 537 #: pysvnmanager/hooks/plugins/TracPostCommit.py:70 538 msgid "Trac post commit hook is disabled." 539 msgstr "Trac 整合插件已经禁用。" 540 541 #: pysvnmanager/hooks/plugins/TracPostCommit.py:72 542 #: pysvnmanager/hooks/plugins/TracPostCommit.py:105 543 msgid "Trac environment location: " 544 msgstr "Trac 环境路径:" 545 546 #: pysvnmanager/hooks/plugins/TracPostCommit.py:74 547 msgid "Repository name in trac: " 548 msgstr "此版本库 trac 中的名称: " 549 550 #: pysvnmanager/hooks/plugins/TracPostCommit.py:76 551 msgid "Fixed ticket's status: " 552 msgstr "标记为修复的ticket状态: " 553 554 #: pysvnmanager/hooks/plugins/TracPostCommit.py:98 555 msgid "Enable trac post commit hook: " 556 msgstr "启用 trac 整合插件:" 557 558 #: pysvnmanager/hooks/plugins/TracPostCommit.py:110 559 msgid "Repository name in trac (default is blank): " 560 msgstr "此版本库 trac 中的名称(缺省为空): " 561 562 #: pysvnmanager/hooks/plugins/TracPostCommit.py:115 563 msgid "Fixed ticket status (default is closed): " 564 msgstr "标记为修复的 ticket 状态 (缺省为 closed):" 565 517 566 #: pysvnmanager/hooks/plugins/__init__.py:111 518 567 #, python-format … … 526 575 527 576 #: 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 531 #: pysvnmanager/hooks/plugins/__init__.py:348 532 #: pysvnmanager/hooks/plugins/__init__.py:355 533 #: pysvnmanager/hooks/plugins/__init__.py:364 577 #: pysvnmanager/hooks/plugins/__init__.py:224 578 #: pysvnmanager/hooks/plugins/__init__.py:246 579 #: pysvnmanager/hooks/plugins/__init__.py:344 580 #: pysvnmanager/hooks/plugins/__init__.py:351 581 #: pysvnmanager/hooks/plugins/__init__.py:360 534 582 msgid "Plugin not fully implemented." 535 583 msgstr "插件未完全实现。" 536 584 537 #: pysvnmanager/hooks/plugins/__init__.py:32 9585 #: pysvnmanager/hooks/plugins/__init__.py:325 538 586 msgid "Name" 539 587 msgstr "名称" 540 588 541 #: pysvnmanager/hooks/plugins/__init__.py:3 31589 #: pysvnmanager/hooks/plugins/__init__.py:327 542 590 msgid "Description" 543 591 msgstr "说明" … … 553 601 msgstr "版本库 %s 已经存在。" 554 602 555 #: pysvnmanager/model/repos.py:1 66603 #: pysvnmanager/model/repos.py:193 556 604 #, python-format 557 605 msgid "Repos %s is not a blank repository." … … 590 638 msgstr "更新失败!您的更改是基于一个过期的版本,请先刷新再更改。" 591 639 592 #: pysvnmanager/model/svnauthz.py:150 2 pysvnmanager/model/svnauthz.py:1509593 #: pysvnmanager/model/svnauthz.py:151 3640 #: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 641 #: pysvnmanager/model/svnauthz.py:1516 594 642 #, python-format 595 643 msgid "Unknown rule format: %s" 596 644 msgstr "未知策略格式: %s" 597 645 598 #: pysvnmanager/model/svnauthz.py:15 27646 #: pysvnmanager/model/svnauthz.py:1530 599 647 #, python-format 600 648 msgid "No module exist for %s:%s" 601 649 msgstr "模块不存在: %s:%s" 602 650 603 #: pysvnmanager/model/svnauthz.py:16 37651 #: pysvnmanager/model/svnauthz.py:1640 604 652 #, python-format 605 653 msgid "Alias %s is referenced by group %s." 606 654 msgstr "别名 %s 为用户组 %s 引用。" 607 655 608 #: pysvnmanager/model/svnauthz.py:16 49656 #: pysvnmanager/model/svnauthz.py:1652 609 657 #, python-format 610 658 msgid "%s is referenced by [%s]." 611 659 msgstr "%s 在 [%s] 中被引用。" 612 660 613 #: pysvnmanager/model/svnauthz.py:178 5661 #: pysvnmanager/model/svnauthz.py:1788 614 662 #, python-format 615 663 msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 616 664 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有完全权限 (RW)" 617 665 618 #: pysvnmanager/model/svnauthz.py:17 87666 #: pysvnmanager/model/svnauthz.py:1790 619 667 #, python-format 620 668 msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 621 669 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有只读权限 (RO)" 622 670 623 #: pysvnmanager/model/svnauthz.py:17 89671 #: pysvnmanager/model/svnauthz.py:1792 624 672 #, python-format 625 673 msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 626 674 msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s *没有* 访问权限 (XX)" 627 675 628 #: pysvnmanager/model/svnauthz.py:18 29676 #: pysvnmanager/model/svnauthz.py:1832 629 677 #, python-format 630 678 msgid "" … … 645 693 "\n" 646 694 647 #: pysvnmanager/model/svnauthz.py:18 48695 #: pysvnmanager/model/svnauthz.py:1851 648 696 #, python-format 649 697 msgid "" … … 694 742 #: pysvnmanager/templates/base.mako:35 695 743 #: pysvnmanager/templates/authz/index.mako:5 696 #: pysvnmanager/templates/authz/index.mako:59 0744 #: pysvnmanager/templates/authz/index.mako:592 697 745 msgid "ACL management" 698 746 msgstr "权限控制" … … 708 756 msgstr "修改日志" 709 757 758 #: pysvnmanager/templates/base.mako:38 759 msgid "Welcome" 760 msgstr "欢迎," 761 710 762 #: pysvnmanager/templates/base.mako:39 711 763 msgid "Logout" … … 721 773 722 774 #: pysvnmanager/templates/authz/index.mako:171 723 #: pysvnmanager/templates/authz/index.mako:66 4775 #: pysvnmanager/templates/authz/index.mako:668 724 776 msgid "Full" 725 777 msgstr "完全权限" 726 778 727 779 #: pysvnmanager/templates/authz/index.mako:175 728 #: pysvnmanager/templates/authz/index.mako:66 5780 #: pysvnmanager/templates/authz/index.mako:669 729 781 msgid "Denied" 730 782 msgstr "禁用" … … 738 790 msgstr "未知权限: " 739 791 740 #: pysvnmanager/templates/authz/index.mako:472 792 #: pysvnmanager/templates/authz/index.mako:473 793 msgid "Please input repository name." 794 msgstr "请输入版本库名称。" 795 796 #: pysvnmanager/templates/authz/index.mako:479 797 msgid "Save failed." 798 msgstr "保存失败。" 799 800 #: pysvnmanager/templates/authz/index.mako:485 741 801 msgid "Please input module path." 742 802 msgstr "请输入模组路径。" 743 803 744 #: pysvnmanager/templates/authz/index.mako:478 745 msgid "Please input repository name." 746 msgstr "请输入版本库名称。" 747 748 #: pysvnmanager/templates/authz/index.mako:483 749 msgid "Save failed." 750 msgstr "保存失败。" 751 752 #: pysvnmanager/templates/authz/index.mako:503 804 #: pysvnmanager/templates/authz/index.mako:505 753 805 msgid "Update ACL failed:" 754 806 msgstr "更新ACL失败:" 755 807 756 #: pysvnmanager/templates/authz/index.mako:5 08808 #: pysvnmanager/templates/authz/index.mako:510 757 809 msgid "Update ACL successfully." 758 810 msgstr "成功更新ACL。" 759 811 760 #: pysvnmanager/templates/authz/index.mako:5 29812 #: pysvnmanager/templates/authz/index.mako:531 761 813 msgid "No path selected." 762 814 msgstr "未选择路径。" 763 815 764 #: pysvnmanager/templates/authz/index.mako:53 4816 #: pysvnmanager/templates/authz/index.mako:536 765 817 msgid "Are you sure to delete module:" 766 818 msgstr "您确认要删除模组:" 767 819 768 #: pysvnmanager/templates/authz/index.mako:53 6820 #: pysvnmanager/templates/authz/index.mako:538 769 821 #: pysvnmanager/templates/role/index.mako:446 770 822 #: pysvnmanager/templates/role/index.mako:531 … … 772 824 msgstr "点击 OK 继续,或者点击取消" 773 825 774 #: pysvnmanager/templates/authz/index.mako:55 7826 #: pysvnmanager/templates/authz/index.mako:559 775 827 msgid "Can not delete module " 776 828 msgstr "无法删除模组 " 777 829 778 #: pysvnmanager/templates/authz/index.mako:56 2830 #: pysvnmanager/templates/authz/index.mako:564 779 831 msgid "Successfully delete module:" 780 832 msgstr "成功删除模组:" 781 833 782 #: pysvnmanager/templates/authz/index.mako:59 7834 #: pysvnmanager/templates/authz/index.mako:599 783 835 #: pysvnmanager/templates/repos/hooks.mako:188 784 836 msgid "Repository:" 785 837 msgstr "版本库:" 786 838 787 #: pysvnmanager/templates/authz/index.mako:60 0839 #: pysvnmanager/templates/authz/index.mako:603 788 840 msgid "New repository" 789 841 msgstr "新版本库" 790 842 791 #: pysvnmanager/templates/authz/index.mako:60 4843 #: pysvnmanager/templates/authz/index.mako:608 792 844 msgid "Repository Name:" 793 845 msgstr "版本库名称:" 794 846 795 #: pysvnmanager/templates/authz/index.mako:6 09847 #: pysvnmanager/templates/authz/index.mako:613 796 848 msgid "Administrators:" 797 849 msgstr "管理员:" 798 850 799 #: pysvnmanager/templates/authz/index.mako:62 1851 #: pysvnmanager/templates/authz/index.mako:625 800 852 msgid "Module:" 801 853 msgstr "模组:" 802 854 803 #: pysvnmanager/templates/authz/index.mako:62 4855 #: pysvnmanager/templates/authz/index.mako:628 804 856 msgid "New module" 805 857 msgstr "新模组" 806 858 807 #: pysvnmanager/templates/authz/index.mako:63 0859 #: pysvnmanager/templates/authz/index.mako:634 808 860 msgid "Module Path:" 809 861 msgstr "模组路径:" 810 862 811 #: pysvnmanager/templates/authz/index.mako:64 4863 #: pysvnmanager/templates/authz/index.mako:648 812 864 msgid "ACL" 813 865 msgstr "ACL" 814 866 815 #: pysvnmanager/templates/authz/index.mako:6 49867 #: pysvnmanager/templates/authz/index.mako:653 816 868 msgid "Users" 817 869 msgstr "用户" 818 870 819 #: pysvnmanager/templates/authz/index.mako:66 3871 #: pysvnmanager/templates/authz/index.mako:667 820 872 msgid "ReadOnly" 821 873 msgstr "只读" 822 874 823 #: pysvnmanager/templates/authz/index.mako:6 78824 #: pysvnmanager/templates/role/index.mako:7 11875 #: pysvnmanager/templates/authz/index.mako:682 876 #: pysvnmanager/templates/role/index.mako:721 825 877 msgid "Save" 826 878 msgstr "保存" 827 879 828 #: pysvnmanager/templates/authz/index.mako:6 79829 #: pysvnmanager/templates/role/index.mako:7 12880 #: pysvnmanager/templates/authz/index.mako:683 881 #: pysvnmanager/templates/role/index.mako:722 830 882 msgid "Delete" 831 883 msgstr "删除" 832 884 833 #: pysvnmanager/templates/authz/index.mako:68 0834 #: pysvnmanager/templates/role/index.mako:7 13885 #: pysvnmanager/templates/authz/index.mako:684 886 #: pysvnmanager/templates/role/index.mako:723 835 887 msgid "Cancel" 836 888 msgstr "取消" … … 940 992 msgstr "版本库名称:" 941 993 942 #: pysvnmanager/templates/repos/hooks.mako:19 1994 #: pysvnmanager/templates/repos/hooks.mako:192 943 995 msgid "Add repository" 944 996 msgstr "添加版本库" 945 997 946 #: pysvnmanager/templates/repos/hooks.mako:19 2998 #: pysvnmanager/templates/repos/hooks.mako:193 947 999 #: pysvnmanager/templates/repos/remove.mako:5 948 1000 #: pysvnmanager/templates/repos/remove.mako:49 … … 951 1003 msgstr "删除版本库" 952 1004 953 #: pysvnmanager/templates/repos/hooks.mako:19 71005 #: pysvnmanager/templates/repos/hooks.mako:199 954 1006 msgid "Uninstalled hooks:" 955 1007 msgstr "尚未安装的插件:" 956 1008 957 #: pysvnmanager/templates/repos/hooks.mako:22 31009 #: pysvnmanager/templates/repos/hooks.mako:225 958 1010 msgid "Install this plugin" 959 1011 msgstr "安装此插件" 960 1012 961 1013 #: pysvnmanager/templates/role/index.mako:5 962 #: pysvnmanager/templates/role/index.mako:6 251014 #: pysvnmanager/templates/role/index.mako:633 963 1015 msgid "Role Management" 964 1016 msgstr "角色管理" … … 1004 1056 msgstr "成功删除别名。" 1005 1057 1006 #: pysvnmanager/templates/role/index.mako:6 321058 #: pysvnmanager/templates/role/index.mako:640 1007 1059 msgid "Select a role name:" 1008 1060 msgstr "选择一个角色:" 1009 1061 1010 #: pysvnmanager/templates/role/index.mako:6 361062 #: pysvnmanager/templates/role/index.mako:645 1011 1063 msgid "New Group" 1012 1064 msgstr "新用户组" 1013 1065 1014 #: pysvnmanager/templates/role/index.mako:6 371066 #: pysvnmanager/templates/role/index.mako:646 1015 1067 msgid "New Alias" 1016 1068 msgstr "新别名" 1017 1069 1018 #: pysvnmanager/templates/role/index.mako:6 411070 #: pysvnmanager/templates/role/index.mako:651 1019 1071 msgid "New group name:" 1020 1072 msgstr "新用户组名称:" 1021 1073 1022 #: pysvnmanager/templates/role/index.mako:6 451074 #: pysvnmanager/templates/role/index.mako:655 1023 1075 msgid "New alias name:" 1024 1076 msgstr "新别名名称:" 1025 1077 1026 #: pysvnmanager/templates/role/index.mako:6 571078 #: pysvnmanager/templates/role/index.mako:667 1027 1079 msgid "Members list" 1028 1080 msgstr "成员列表" 1029 1081 1030 #: pysvnmanager/templates/role/index.mako:6 621082 #: pysvnmanager/templates/role/index.mako:672 1031 1083 msgid "Other users" 1032 1084 msgstr "其他用户" 1033 1085 1034 #: pysvnmanager/templates/role/index.mako:6 811086 #: pysvnmanager/templates/role/index.mako:691 1035 1087 msgid "Ignore recursive" 1036 1088 msgstr "忽略组间循环引用" 1037 1089 1038 #: pysvnmanager/templates/role/index.mako: 6931090 #: pysvnmanager/templates/role/index.mako:703 1039 1091 msgid "User name:" 1040 1092 msgstr "用户名:" -
branches/0.2-pylons_0.9.6.2/pysvnmanager/lib/base.py
r50 r83 40 40 #log = logging.getLogger(__name__) 41 41 42 def get_unicode(msg, escape=False):43 if isinstance(msg, basestring) and not isinstance(msg, unicode):44 msg = unicode(msg, 'utf-8')45 if escape and isinstance(msg, basestring):46 msg = msg.encode('raw_unicode_escape')47 return msg48 49 def get_utf8(msg, escape=False):50 if isinstance(msg, unicode):51 msg = msg.encode('utf-8')52 if escape and isinstance(msg, basestring):53 msg = repr(msg)[1:-1]54 return msg55 56 def except_to_unicode(e):57 msg = ', '.join(e.args)58 return get_unicode(msg)59 60 def except_to_utf8(e):61 msg = ', '.join(e.args)62 return get_utf8(msg)63 64 42 class BaseController(WSGIController): 65 43 requires_auth = [] -
branches/0.2-pylons_0.9.6.2/pysvnmanager/model/auth/http.py
r22 r83 1 1 # -*- coding: utf-8 -*- 2 2 3 from crypt import crypt 3 try: 4 from crypt import crypt 5 except ImportError: 6 # Native crypt is not supported by Windows, use fcrypt instead. 7 from fcrypt import crypt 4 8 5 9 def htpasswd_login(username, password, config): -
branches/0.2-pylons_0.9.6.2/pysvnmanager/model/rcsbackup.py
r50 r83 28 28 log = logging.getLogger(__name__) 29 29 30 sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) 31 from pysvnmanager.lib.text import to_unicode, to_utf8 32 30 33 #reload(sys) # in Python2.5, method sys.setdefaultencoding 31 34 #will be delete after initialize. we need reload it. … … 37 40 CMD_RLOG="RCSINIT= rlog" 38 41 CMD_RCSDIFF="RCSINIT= rcsdiff" 39 40 42 41 43 def is_rcs_exist(wcfile): … … 46 48 rcsfile = wcfile+',v' 47 49 return os.path.exists(rcsfile) 48 49 def get_unicode(msg, escape=False):50 if isinstance(msg, basestring) and not isinstance(msg, unicode):51 msg = unicode(msg, 'utf-8')52 if escape and isinstance(msg, basestring):53 msg = msg.encode('raw_unicode_escape')54 return msg55 56 def get_utf8(msg, escape=False):57 if isinstance(msg, unicode):58 msg = msg.encode('utf-8')59 if escape and isinstance(msg, basestring):60 msg = repr(msg)[1:-1]61 return msg62 50 63 51 def backup(wcfile, comment='', user=''): … … 71 59 comment = "no message." 72 60 73 wcfile = get_utf8(wcfile)74 comment = get_utf8(comment)75 user = get_utf8(user, escape=True)61 wcfile = to_utf8(wcfile) 62 comment = to_utf8(comment) 63 user = to_utf8(user, escape=True) 76 64 77 65 cmd = [] … … 111 99 buff = os.popen(cmd).read().strip() 112 100 if buff: 113 raise Exception, "Command: %s\nError Message: %s\n" % ( get_unicode(cmd), get_unicode(buff))101 raise Exception, "Command: %s\nError Message: %s\n" % (to_unicode(cmd), to_unicode(buff)) 114 102 115 103 … … 124 112 cmd = '%(cmd)s %(opts)s -q "%(file)s"' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 125 113 buff = os.popen(cmd).read().strip() 126 return get_unicode(buff)114 return to_unicode(buff) 127 115 128 116 def differ(filename, rev1="", rev2=""): 129 filename= get_utf8(filename)117 filename=to_utf8(filename) 130 118 opts="" 131 119 if rev1 and rev2: … … 137 125 log.debug('Command: '+cmd) 138 126 buff = os.popen(cmd).read() 139 return get_unicode(buff)127 return to_unicode(buff) 140 128 141 129 class RcsLog(object): … … 291 279 commit_time = "" 292 280 if m: 293 commit_time = get_unicode(m.group(1))281 commit_time = to_unicode(m.group(1)) 294 282 else: 295 283 log.error("not find date in line: %s" % lines[1]) … … 300 288 commit_author = "" 301 289 if m: 302 commit_author = get_unicode(eval("'%s'" % m.group(1)))290 commit_author = to_unicode(eval("'%s'" % m.group(1))) 303 291 else: 304 292 log.error("not find author in line: %s" % lines[1]) … … 306 294 307 295 # logs... 308 commit_log = get_unicode('\n'.join(lines[2:]))296 commit_log = to_unicode('\n'.join(lines[2:])) 309 297 310 298 self.revs.append({'revision':commit_revision, -
branches/0.2-pylons_0.9.6.2/pysvnmanager/model/repos.py
r50 r83 90 90 91 91 def hooks_init(self, repos_name): 92 sys_hook_paths = ['/etc/subversion/hooks', '/opt/svn/hooks', ] 93 for p in sys_hook_paths: 94 if os.path.exists(os.path.join(p, "parse_ini.sh")): 95 return self.hooks_init_symlink(p, repos_name) 96 return self.hooks_init_copy(repos_name) 97 98 def hooks_init_symlink(self, hooks_dir, repos_name): 99 if not os.path.exists(os.path.join(hooks_dir, "parse_ini.sh")): 100 raise Exception("\"%s\" is not a valid hooks location." % hooks_dir) 101 dest = "%(root)s/%(entry)s/hooks" % { "root": self.repos_root, "entry": repos_name} 102 dest = os.path.abspath(dest) 103 104 import shutil 105 if os.path.exists(dest): 106 assert os.path.basename(dest) == 'hooks' 107 if os.path.islink(dest): 108 os.unlink(dest) 109 else: 110 shutil.rmtree(dest) 111 elif not os.path.exists(os.path.dirname(dest)): 112 raise Exception("Destination repository '%s' not exist!" % os.path.dirname(dest)) 113 os.symlink(hooks_dir, dest) 114 115 def hooks_init_copy(self, repos_name): 92 116 import distutils.version as dv 93 117 version = '.'.join(self.svnversion()) … … 112 136 if os.path.exists(dest): 113 137 assert os.path.basename(dest) == 'hooks' 114 shutil.rmtree(dest) 115 elif not os.path.exists(os.path.basename(dest)): 116 raise Exception("Destination repository '%s' not exist!" % os.path.basename(dest)) 138 if os.path.islink(dest): 139 os.unlink(dest) 140 else: 141 shutil.rmtree(dest) 142 elif not os.path.exists(os.path.dirname(dest)): 143 raise Exception("Destination repository '%s' not exist!" % os.path.dirname(dest)) 117 144 for root, dirs, files in os.walk(src): 118 145 targetdir = root.replace(src, dest, 1) -
branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/authz/index.mako
r45 r83 468 468 } 469 469 470 if (form.authz_list.length>0 && path =='') 470 471 if (reposname == '') 472 { 473 alert('${_("Please input repository name.")}'); 474 return false; 475 } 476 477 if (mode1 == 'new' && path == '' && admins == '') 478 { 479 alert('${_("Save failed.")}'); 480 return false; 481 } 482 483 if (mode2 == 'new' && path =='') 471 484 { 472 485 alert('${_("Please input module path.")}'); 473 486 return false; 474 487 } 475 476 if (reposname == '') 477 { 478 alert('${_("Please input repository name.")}'); 479 return false; 480 } 481 if (mode1 == 'new' && path == '' && admins == '') 482 { 483 alert('${_("Save failed.")}'); 484 return false; 485 } 486 488 487 489 var params = {reposname:reposname, admins:admins, path:path, rules:rules, mode1:mode1, mode2:mode2, revision:revision}; 488 490 showNoticesPopup(); … … 598 600 <select name="repos_list" size="1" onChange='repos_changed()'> 599 601 </select> 600 <a href="#" onclick='new_repos()'>[+${_("New repository")}]</a> 602 % if c.is_super_user: 603 <a href="#" onclick='new_repos()'>[+${_("New repository")}]</a> 604 % endif 601 605 </DIV> 602 606 -
branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/base.mako
r45 r83 36 36 <td>${h.link_to(_("Repos management"), h.url(controller="repos", id=None))}</td> 37 37 <td>${h.link_to(_("Change log"), h.url(controller="logs", id=None))}</td> 38 <td> welcome${session.get('user')}</td>38 <td>${_("Welcome")} ${session.get('user')}</td> 39 39 <td>${h.link_to(_("Logout"), h.url(controller="logout", id=None))}</td> 40 40 </tr> -
branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/logs/view.mako
r39 r83 14 14 15 15 <form name="main_form" action="${h.url_for(action='rollback')}" onsubmit="return confirm('${_("Rollback to this revision, are you sure?")}');"> 16 % if notc.rollback_enabled:16 % if c.rollback_enabled: 17 17 <input type="submit" name="submit" value='${_("Rollback to this revision")}'> 18 18 -
branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/repos/hooks.mako
r46 r83 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 % if c.is_super_user: 192 ${h.link_to(_("Add repository"), h.url(action="create"))} 193 ${h.link_to(_("Remove repository"), h.url(action="remove"))} 194 % endif 193 195 </DIV> 194 196 -
branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/role/index.mako
r45 r83 602 602 function enable_save_btn() 603 603 { 604 % if c.is_super_user: 604 605 document.main_form.save_btn.disabled = false; 606 % else: 607 ; 608 % endif 605 609 } 606 610 … … 612 616 function enable_delete_btn() 613 617 { 618 % if c.is_super_user: 614 619 document.main_form.delete_btn.disabled = false; 620 % else: 621 ; 622 % endif 615 623 } 616 624 … … 634 642 ${h.options_for_select(role_list_opts)} 635 643 </select> 636 <a href="#" onclick='new_group()'>[+${_("New Group")}]</a> 637 <a href="#" onclick='new_alias()'>[+${_("New Alias")}]</a> 644 % if c.is_super_user: 645 <a href="#" onclick='new_group()'>[+${_("New Group")}]</a> 646 <a href="#" onclick='new_alias()'>[+${_("New Alias")}]</a> 647 % endif 638 648 </div> 639 649 … … 709 719 <div id='action_box' style="position:relative;" class=gainlayout> 710 720 <input type="hidden" name="rolename"> 711 <input type="button" name="save_btn" value='${_("Save")}' onClick="do_save(this.form)">712 <input type="button" name="delete_btn" value='${_("Delete")}' onClick="do_delete(this.form)" >713 <input type="button" name="cancel_btn" value='${_("Cancel")}' onClick="role_changed()" >721 <input type="button" name="save_btn" value='${_("Save")}' onClick="do_save(this.form)" ${c.is_super_user or "DISABLED"}> 722 <input type="button" name="delete_btn" value='${_("Delete")}' onClick="do_delete(this.form)" ${c.is_super_user or "DISABLED"}> 723 <input type="button" name="cancel_btn" value='${_("Cancel")}' onClick="role_changed()" ${c.is_super_user or "DISABLED"}> 714 724 </div> 715 725 <!-- end: action_box -->
![(please configure the [header_logo] section in trac.ini)](/trac/pysvnmanager/chrome/common/trac_banner.png)