Changeset 83

Show
Ignore:
Timestamp:
2009年03月14日 15时00分13秒 (3 years ago)
Author:
jiangx
Message:

Fixed #24: Merge with /trunk:53-81

Location:
branches/0.2-pylons_0.9.6.2
Files:
28 modified
9 copied

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  
    88config/Makefile 
    99config/README 
     10contrib/mantis/021_checkin_user_as_bug_submit_user.patch 
     11contrib/trac/10110_trac_svn_hooks_chgset_date.patch 
     12contrib/trac/10115_trac_svn_hooks_ticket_range.patch 
     13contrib/trac/10116_trac_svn_hooks_fixed_status.patch 
    1014docs/index.txt 
    1115pySvnManager.egg-info/PKG-INFO 
     
    111115pysvnmanager/hooks/plugins/EolStyleCheck.py 
    112116pysvnmanager/hooks/plugins/ReadonlySvnMirror.py 
     117pysvnmanager/hooks/plugins/TracPostCommit.py 
    113118pysvnmanager/hooks/plugins/__init__.py 
    114119pysvnmanager/i18n/pysvnmanager.pot 
     
    121126pysvnmanager/lib/base.py 
    122127pysvnmanager/lib/helpers.py 
     128pysvnmanager/lib/text.py 
    123129pysvnmanager/model/__init__.py 
    124130pysvnmanager/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  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324from pysvnmanager.model import repos as _repos 
     
    3334        # Used as checked in user to rcs file. 
    3435        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)) 
    3637         
    3738        # 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 
    4648        else: 
    4749            self.reposlist_unset = set() 
     
    4951    def __before__(self, action): 
    5052        super(AuthzController, self).__before__(action) 
    51         if not self.reposlist: 
     53        if not self.own_reposlist and not self.is_super_user: 
    5254            return redirect_to(h.url_for(controller='security', action='failed')) 
    5355 
    5456    def index(self): 
    5557        c.revision = self.authz.version 
     58        c.is_super_user = self.is_super_user 
    5659        # used for functional test. 
    57         c.reposlist = self.reposlist 
     60        c.reposlist = self.own_reposlist 
    5861         
    5962        all_avail_users = [] 
     
    180183        try: 
    181184            if isAddRepos: 
     185                assert self.is_super_user 
    182186                repos = self.authz.add_repos(reposname) 
    183187            else: 
    184188                repos = self.authz.get_repos(reposname) 
    185189                if not repos: 
     190                    assert self.is_super_user 
    186191                    log.warning("Repos '%s' not exists. Create authz config automatically." % reposname) 
    187192                    repos = self.authz.add_repos(reposname) 
     
    210215            self.authz.save(revision, comment=log_message) 
    211216        except Exception, e: 
    212             msg = except_to_unicode(e) 
     217            msg = to_unicode(e) 
    213218 
    214219        log.info(log_message) 
     
    233238            self.authz.save(revision, comment=log_message) 
    234239        except Exception, e: 
    235             msg = except_to_unicode(e) 
     240            msg = to_unicode(e) 
    236241         
    237242        log.info(log_message) 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/logs.py

    r50 r83  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model import rcsbackup as _rcs 
    2324from pysvnmanager.model.svnauthz import * 
     
    3435        # Default logs per page is 10 
    3536        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)) 
    3639     
    3740    def __before__(self, action): 
    3841        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: 
    4043            return redirect_to(h.url_for(controller='security', action='failed')) 
    4144     
     
    161164        c.contents = self.rcslog.cat(id) 
    162165        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: 
    164167            c.rollback_enabled = True 
    165168        else: 
     
    168171     
    169172    def rollback(self, id): 
     173        assert self.is_super_user 
    170174        log_message = _("Rollback successfully to revision: %s") % id 
    171175        try: 
     
    174178            self.rcslog.backup(comment=log_message, user=self.login_as) 
    175179        except Exception, e: 
    176             msg = e.message 
    177             if isinstance(msg, str): 
    178                 msg = unicode(msg, 'utf-8') 
     180            msg = to_unicode(e) 
    179181            c.msg = _("Rollback failed: %s") % msg 
    180182        else: 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/repos.py

    r50 r83  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324from pysvnmanager.model import repos as _repos 
     
    3435        # Used as checked in user to rcs file. 
    3536        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() 
    4152 
    4253    def __before__(self, action): 
    4354        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: 
    4556            return redirect_to(h.url_for(controller='security', action='failed')) 
    4657         
    4758    def index(self): 
     59        c.is_super_user = self.is_super_user 
    4860        return render('/repos/hooks.mako') 
     61 
     62    def validate_repos(self, reposname): 
     63        assert reposname in self.own_reposlist or self.is_super_user 
    4964 
    5065    def init_repos_list(self): 
     
    5772        msg += 'name[0]="%s";\n' % _("Please choose...") 
    5873        total += 1; 
    59         for reposname in self.repos_list: 
     74        for reposname in sorted(self.reposlist_set): 
    6075            if filter=='blank' and not self.repos.is_blank_svn_repos(reposname): 
    6176                continue 
     
    6378            msg += 'name[%d]="%s";\n' % (total, reposname) 
    6479            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; 
    6586        msg += 'total=%d;\n' % total 
    6687        return msg 
     
    6889    def get_plugin_list(self): 
    6990        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) 
    7193        total = 0; 
    7294        msg = '' 
     
    86108    def get_installed_hook_form(self): 
    87109        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) 
    89112        msg = '' 
    90113        if len(h.applied_plugins) > 0: 
     
    117140    def get_hook_setting_form(self): 
    118141        reposname  = request.params.get('repos') 
     142        self.validate_repos(reposname) 
    119143        pluginname = request.params.get('plugin') 
    120         h = _hooks.Hooks(self.repos_root + '/' + reposname) 
     144        h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 
    121145        result  = "<input type='hidden' name='_repos' value='%s'>" % reposname 
    122146        result += "<input type='hidden' name='_plugin' value='%s'>" % pluginname 
     
    129153            d = request.params 
    130154            reposname = d.get("_repos") 
     155            self.validate_repos(reposname) 
    131156            pluginname = d.get("_plugin") 
    132             h = _hooks.Hooks(self.repos_root + '/' + reposname) 
     157            h = _hooks.Hooks(cfg.repos_root + '/' + reposname) 
    133158            plugin = h.plugins[pluginname] 
    134159            plugin.install(d) 
    135160        except Exception, e: 
    136161            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>" 
    138163        else: 
    139164            result = "<div class='info'>" + _("Apply plugin '%(plugin)s' on '%(repos)s' success.") % { 
     
    145170        d = request.params 
    146171        reposname = d.get("_repos") 
     172        self.validate_repos(reposname) 
    147173        for i in d.keys(): 
    148174            if "pluginid_" in i: 
     
    152178            log.debug("plugin_list:" + ','.join(plugin_list)) 
    153179            try: 
    154                 hookobj = _hooks.Hooks(self.repos_root + '/' + reposname) 
     180                hookobj = _hooks.Hooks(cfg.repos_root + '/' + reposname) 
    155181                for pluginname in plugin_list: 
    156182                    hookobj.plugins[pluginname].reload() 
     
    159185            except Exception, e: 
    160186                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>" 
    162188            else: 
    163189                result = "<div class='info'>" + _("Delete plugin '%(plugin)s' on '%(repos)s' success.") % { 
     
    171197            d = request.params 
    172198            reposname = d.get("reposname") 
     199            self.validate_repos(reposname) 
    173200            self.repos.create(reposname) 
    174201        except Exception, e: 
    175202            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>" 
    177204        else: 
    178205            result = "<div class='info'>" + _("Create repository '%(repos)s' success.") % {"repos":reposname} + "</div>" 
     
    180207         
    181208    def create(self): 
     209        if not self.is_super_user: 
     210            return redirect_to(h.url_for(controller='security', action='failed')) 
    182211        return render('/repos/create.mako') 
    183212 
     
    187216            d = request.params 
    188217            reposname = d.get("repos_list") 
     218            self.validate_repos(reposname) 
    189219            self.repos.delete(reposname) 
    190220        except Exception, e: 
    191221            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>" 
    193223        else: 
    194224            result = "<div class='info'>" + _("Delete blank repository '%(repos)s' success.") % {"repos":reposname} + "</div>" 
     
    196226     
    197227    def remove(self): 
     228        if not self.is_super_user: 
     229            return redirect_to(h.url_for(controller='security', action='failed')) 
    198230        return render('/repos/remove.mako') 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/controllers/role.py

    r50 r83  
    2020 
    2121from pysvnmanager.lib.base import * 
     22from pysvnmanager.lib.text import to_unicode 
    2223from pysvnmanager.model.svnauthz import * 
    2324 
     
    3536        self.userlist = map(lambda x:x.uname, self.authz.userlist) 
    3637        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) 
    3740 
    3841    def __before__(self, action): 
    3942        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: 
    4144            return redirect_to(h.url_for(controller='security', action='failed')) 
    4245 
     
    4649        c.userlist = self.userlist 
    4750        c.grouplist = self.grouplist 
     51        c.is_super_user = self.is_super_user 
    4852        return render('/role/index.mako') 
    4953     
     
    102106         
    103107    def save_group(self): 
     108        assert self.is_super_user 
    104109        d = request.params 
    105110        member_list = [] 
     
    125130            self.authz.save(revision, comment=log_message) 
    126131        except Exception, e: 
    127             msg = except_to_unicode(e) 
     132            msg = to_unicode(e) 
    128133 
    129134        log.info(log_message) 
     
    133138     
    134139    def delete_group(self): 
     140        assert self.is_super_user 
    135141        d = request.params 
    136142        rolename = d.get('role') 
     
    146152                self.authz.save(revision, comment=log_message) 
    147153            except Exception, e: 
    148                 msg = except_to_unicode(e) 
     154                msg = to_unicode(e) 
    149155 
    150156        log.info(log_message) 
     
    154160         
    155161    def save_alias(self): 
     162        assert self.is_super_user 
    156163        d = request.params 
    157164        aliasname = d.get('aliasname') 
     
    167174            self.authz.save(revision, comment=log_message) 
    168175        except Exception, e: 
    169             msg = except_to_unicode(e) 
     176            msg = to_unicode(e) 
    170177 
    171178        log.info(log_message) 
     
    175182     
    176183    def delete_alias(self): 
     184        assert self.is_super_user 
    177185        d = request.params 
    178186        aliasname = d.get('aliasname') 
     
    188196                self.authz.save(revision, comment=log_message) 
    189197            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  
    2020 
    2121from pysvnmanager.lib.base import * 
    22  
    23 from crypt import crypt 
    2422 
    2523log = logging.getLogger(__name__) 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.4/post-commit

    r47 r83  
    5353readconf post_commit 
    5454readconf email  
     55readconf trac 
    5556 
    5657## Sync with downstream mirror sites using svnsync 
     
    6869 
    6970############################################################ 
    70 # 
    71 # Mantisbt integration ( http://www.worldhello.net ) 
    72 # 
     71# Trac post commit hook 
     72TRAC_POST_COMMIT_HOOK=/usr/share/doc/trac/contrib/trac-post-commit-hook 
     73if [ "$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  
     82fi 
     83 
    7384############################################################ 
     85# Mantisbt integration 
    7486if [ "$mantis_integration" = "yes" ]; then 
    7587    SVNLOOK=/opt/svn/bin/svnlook 
    76     SED=/bin/sed 
    7788    MANTISBT=/opt/mantis/web 
    7889    PHP=/opt/php5/bin/php5 
     
    8091    if [ -f "$MANTISBT/core/checkin.php" ]; then 
    8192      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 
     97Author: $commitauthor 
     98Commit Log: 
     99$commitlog 
     100 
     101****** Source code change ****** 
     102Repository: $REPOS, Revision: $REV. 
     103 
     104$commitdiff 
     105EOF 
    86106    fi 
    87107fi 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.5/post-commit

    r47 r83  
    5353readconf post_commit 
    5454readconf email  
     55readconf trac 
    5556 
    5657## Sync with downstream mirror sites using svnsync 
     
    6869 
    6970############################################################ 
    70 # 
    71 # Mantisbt integration ( http://www.worldhello.net ) 
    72 # 
     71# Trac post commit hook 
     72TRAC_POST_COMMIT_HOOK=/usr/share/doc/trac/contrib/trac-post-commit-hook 
     73if [ "$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  
     82fi 
     83 
    7384############################################################ 
     85# Mantisbt integration 
    7486if [ "$mantis_integration" = "yes" ]; then 
    7587    SVNLOOK=/opt/svn/bin/svnlook 
    76     SED=/bin/sed 
    7788    MANTISBT=/opt/mantis/web 
    7889    PHP=/opt/php5/bin/php5 
     
    8091    if [ -f "$MANTISBT/core/checkin.php" ]; then 
    8192      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 
     97Author: $commitauthor 
     98Commit Log: 
     99$commitlog 
     100 
     101****** Source code change ****** 
     102Repository: $REPOS, Revision: $REV. 
     103 
     104$commitdiff 
     105EOF 
    86106    fi 
    87107fi 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/init/hook1.5/scripts/commit_log_check.py

    r47 r83  
    7979            opt_size = int(arg) 
    8080        elif opt in ("-p", "--permit"): 
     81            if arg and not isinstance(arg, unicode): 
     82                arg = unicode(arg, 'utf-8') 
    8183            if arg: 
    82                 if not isinstance(arg, unicode): 
    83                     arg = unicode(arg, 'utf-8') 
    8484                opt_permit_pattern.append(arg) 
    8585        elif opt in ("-P", "--prohibit"): 
     
    8989                opt_prohibit_pattern.append(arg) 
    9090        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 
    9495        else: 
    9596            return usage(1) 
     
    104105        log_cmd = '%s log -t "%s" "%s"' % (SVNLOOK, txn, repos) 
    105106        log_msg = os.popen(log_cmd, 'r').read().rstrip('\n') 
    106     
     107 
    107108    # Check the length of commit log 
    108109    check_strlen(log_msg, opt_size) 
     
    142143     
    143144    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')) 
    146147        sys.exit(1) 
    147148 
     
    154155    if permit: 
    155156        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) 
    158168 
    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) 
    179179 
    180180if __name__ == '__main__': 
    181181    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  
    9999        result += "<p><strong>%s</strong></p>" % _("Fill this form") 
    100100        result += "<blockquote>" 
    101         result += "<table class=hidden>" 
    102         result += "\n<tr><td>" 
     101        result += "\n<dl>" 
     102        result += "\n<dt>" 
    103103        result += _("Enable commit log check: ") 
    104         result += "\n</td><td>" 
     104        result += "\n<dd>" 
    105105        result += "<input type='radio' name='switch' value='yes' " + \ 
    106106                enable_checked  + ">" + _("Enable") + "&nbsp;" 
    107107        result += "<input type='radio' name='switch' value='no' " + \ 
    108108                disable_checked + ">" + _("Disable") 
    109         result += "\n</td></tr>" 
    110         result += "\n<tr><td>" 
     109        result += "\n<dt>" 
    111110        result += _("Minimal size of commit log: ") 
    112         result += "\n</td><td>" 
     111        result += "\n<dd>" 
    113112        result += "<input type='text' name='size' size='5' value=\"%s\">" % \ 
    114113                webhelpers.util.html_escape(self.get_config(self.key_size)) 
    115         result += "\n</td></tr>" 
    116         result += "\n<tr><td>" 
     114        result += "\n<dt>" 
    117115        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>" 
    123121        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>" 
    129127        result += "</blockquote>" 
    130128        return result 
     
    159157        self.set_config(self.key_switch, switch) 
    160158        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) 
    165161        self.save() 
    166162         
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/EmailNotify.py

    r50 r83  
    113113        result += "<p><strong>%s</strong></p>" % _("Fill this form") 
    114114        result += "<blockquote>" 
    115         result += "<table class=hidden>" 
    116         result += "\n<tr><td>" 
     115        result += "<dl>" 
     116        result += "\n<dt>" 
    117117        result += _("Enable email notify.") 
    118         result += "\n</td><td>" 
     118        result += "\n<dd>" 
    119119        result += "<input type='radio' name='switch' value='yes' " + \ 
    120120                enable_checked  + ">" + _("Enable") + "&nbsp;" 
    121121        result += "<input type='radio' name='switch' value='no' " + \ 
    122122                disable_checked + ">" + _("Disable") + "<br>" 
    123         result += "\n</td></tr>" 
    124         result += "\n<tr><td>" 
     123        result += "\n<dt>" 
    125124        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>" 
    131130        result += "</blockquote>" 
    132131        return result 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/ReadonlySvnMirror.py

    r50 r83  
    5151        Simply call 'has_config()'. 
    5252        """ 
    53         return self.has_config(self.key_switch) and self.has_config(self.key_admin) 
     53        return self.has_config(self.key_switch) 
    5454     
    5555    def install_info(self): 
     
    6969                result += "- " + _("Readonly mirror disabled.") 
    7070            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 
    7375        return result 
    7476     
     
    8991        result += "<p><strong>%s</strong></p>" % _("Fill this form") 
    9092        result += "<blockquote>" 
    91         result += "<table class=hidden>" 
    92         result += "\n<tr><td>" 
     93        result += "<dl>" 
     94        result += "\n<dt>" 
    9395        result += _("Enable readonly mirror: ") 
    94         result += "\n</td><td>" 
     96        result += "\n<dd>" 
    9597        result += "<input type='radio' name='switch' value='yes' " + \ 
    9698                enable_checked  + ">" + _("Enable") + "&nbsp;" 
    9799        result += "<input type='radio' name='switch' value='no' " + \ 
    98100                disable_checked + ">" + _("Disable") + "<br>" 
    99         result += "\n</td></tr>" 
    100         result += "\n<tr><td>" 
     101        result += "\n<dt>" 
    101102        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'>" % \ 
    104105                self.get_config(self.key_admin) 
    105         result += "\n</td></tr>" 
    106         result += "\n</table>" 
     106        result += "\n</dl>" 
    107107        result += "</blockquote>" 
    108108        return result 
     
    129129        admin = params.get('admin') 
    130130        if not admin: 
    131             raise Exception(_("Wrong configuration.")) 
     131            switch = 'no' 
    132132        self.set_config(self.key_switch, switch) 
    133133        self.set_config(self.key_admin, admin) 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/hooks/plugins/__init__.py

    r50 r83  
    200200                key = self.key 
    201201 
    202         if value == "": 
    203             if hasattr(self, "value"): 
    204                 value = self.value 
     202        if value == "" and hasattr(self, "value"): 
     203            value = self.value 
    205204         
    206205        if hasattr(self, "section"): 
     
    227226                key = self.key 
    228227 
    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 
    234230         
    235231        if hasattr(self, "section"): 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po

    r54 r83  
    1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    1111"POT-Creation-Date: 2008-07-03 22:14+0800\n" 
    12 "PO-Revision-Date: 2008-08-30 13:16+0800\n" 
     12"PO-Revision-Date: 2009-03-14 14:52+0800\n" 
    1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 
    1414"Language-Team: en <LL@li.org>\n" 
     
    1919"Generated-By: Babel 0.9.4\n" 
    2020 
    21 #: pysvnmanager/controllers/authz.py:60 
     21#: pysvnmanager/controllers/authz.py:63 
    2222#: pysvnmanager/templates/authz/index.mako:152 
    2323#: pysvnmanager/templates/check/index.mako:10 
     
    2525msgstr "" 
    2626 
    27 #: pysvnmanager/controllers/authz.py:61 
     27#: pysvnmanager/controllers/authz.py:64 
    2828#: pysvnmanager/templates/authz/index.mako:154 
    2929#: pysvnmanager/templates/check/index.mako:11 
     
    3131msgstr "" 
    3232 
    33 #: pysvnmanager/controllers/authz.py:62 
     33#: pysvnmanager/controllers/authz.py:65 
    3434#: pysvnmanager/templates/authz/index.mako:156 
    3535#: pysvnmanager/templates/check/index.mako:12 
     
    3737msgstr "" 
    3838 
    39 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 
    40 #: pysvnmanager/controllers/role.py:87 
     39#: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 
     40#: pysvnmanager/controllers/role.py:91 
    4141#: pysvnmanager/templates/authz/index.mako:148 
    4242#: pysvnmanager/templates/check/index.mako:17 
     
    4848msgstr "" 
    4949 
    50 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 
    51 #: pysvnmanager/controllers/role.py:89 
     50#: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 
     51#: pysvnmanager/controllers/role.py:93 
    5252#: pysvnmanager/templates/authz/index.mako:150 
    5353#: pysvnmanager/templates/check/index.mako:19 
     
    5959msgstr "" 
    6060 
    61 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 
    62 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 
    63 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 
     61#: 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 
    6464#: pysvnmanager/templates/check/index.mako:9 
    6565#: pysvnmanager/templates/check/index.mako:23 
     
    6969msgstr "" 
    7070 
    71 #: pysvnmanager/controllers/authz.py:177 
     71#: pysvnmanager/controllers/authz.py:180 
    7272#, python-format 
    7373msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 
    7474msgstr "" 
    7575 
    76 #: pysvnmanager/controllers/authz.py:190 
     76#: pysvnmanager/controllers/authz.py:195 
    7777#, python-format 
    7878msgid "Repository %s not exist." 
    7979msgstr "" 
    8080 
    81 #: pysvnmanager/controllers/authz.py:198 
     81#: pysvnmanager/controllers/authz.py:203 
    8282#, python-format 
    8383msgid "Module %s not exist." 
    8484msgstr "" 
    8585 
    86 #: pysvnmanager/controllers/authz.py:204 
     86#: pysvnmanager/controllers/authz.py:209 
    8787msgid "You can not delete yourself from admin list." 
    8888msgstr "" 
    8989 
    90 #: pysvnmanager/controllers/authz.py:229 
     90#: pysvnmanager/controllers/authz.py:234 
    9191#, python-format 
    9292msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 
     
    9898msgstr "" 
    9999 
    100 #: pysvnmanager/controllers/logs.py:68 
     100#: pysvnmanager/controllers/logs.py:71 
    101101msgid "Rev" 
    102102msgstr "" 
    103103 
    104 #: pysvnmanager/controllers/logs.py:69 
     104#: pysvnmanager/controllers/logs.py:72 
    105105msgid "Who" 
    106106msgstr "" 
    107107 
    108 #: pysvnmanager/controllers/logs.py:70 
     108#: pysvnmanager/controllers/logs.py:73 
    109109msgid "When" 
    110110msgstr "" 
    111111 
    112 #: pysvnmanager/controllers/logs.py:71 
     112#: pysvnmanager/controllers/logs.py:74 
    113113msgid "Why" 
    114114msgstr "" 
    115115 
    116 #: pysvnmanager/controllers/logs.py:72 
     116#: pysvnmanager/controllers/logs.py:75 
    117117msgid "Compare" 
    118118msgstr "" 
    119119 
    120 #: pysvnmanager/controllers/logs.py:115 
     120#: pysvnmanager/controllers/logs.py:118 
    121121msgid "Page: " 
    122122msgstr "" 
    123123 
    124 #: pysvnmanager/controllers/logs.py:151 
     124#: pysvnmanager/controllers/logs.py:154 
    125125msgid "Compares between" 
    126126msgstr "" 
    127127 
    128 #: pysvnmanager/controllers/logs.py:170 
     128#: pysvnmanager/controllers/logs.py:174 
    129129#, python-format 
    130130msgid "Rollback successfully to revision: %s" 
    131131msgstr "" 
    132132 
    133 #: pysvnmanager/controllers/logs.py:179 
     133#: pysvnmanager/controllers/logs.py:181 
    134134#, python-format 
    135135msgid "Rollback failed: %s" 
    136136msgstr "" 
    137137 
    138 #: pysvnmanager/controllers/repos.py:91 
     138#: pysvnmanager/controllers/repos.py:114 
    139139msgid "Installed hooks:" 
    140140msgstr "" 
    141141 
    142 #: pysvnmanager/controllers/repos.py:97 
     142#: pysvnmanager/controllers/repos.py:120 
    143143msgid "Id" 
    144144msgstr "" 
    145145 
    146 #: pysvnmanager/controllers/repos.py:98 
     146#: pysvnmanager/controllers/repos.py:121 
    147147msgid "Plugin name" 
    148148msgstr "" 
    149149 
    150 #: pysvnmanager/controllers/repos.py:99 
    151 #: pysvnmanager/hooks/plugins/__init__.py:330 
     150#: pysvnmanager/controllers/repos.py:122 
     151#: pysvnmanager/hooks/plugins/__init__.py:326 
    152152msgid "Type" 
    153153msgstr "" 
    154154 
    155 #: pysvnmanager/controllers/repos.py:113 
     155#: pysvnmanager/controllers/repos.py:136 
    156156msgid "Remove selected hooks" 
    157157msgstr "" 
    158158 
    159 #: pysvnmanager/controllers/repos.py:136 
     159#: pysvnmanager/controllers/repos.py:161 
    160160#, python-format 
    161161msgid "" 
     
    164164msgstr "" 
    165165 
    166 #: pysvnmanager/controllers/repos.py:139 
     166#: pysvnmanager/controllers/repos.py:164 
    167167#, python-format 
    168168msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 
    169169msgstr "" 
    170170 
    171 #: pysvnmanager/controllers/repos.py:160 
     171#: pysvnmanager/controllers/repos.py:186 
    172172#, python-format 
    173173msgid "" 
     
    176176msgstr "" 
    177177 
    178 #: pysvnmanager/controllers/repos.py:163 
     178#: pysvnmanager/controllers/repos.py:189 
    179179#, python-format 
    180180msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 
    181181msgstr "" 
    182182 
    183 #: pysvnmanager/controllers/repos.py:166 
     183#: pysvnmanager/controllers/repos.py:192 
    184184#, python-format 
    185185msgid "No plugin has been deleted for '%(repos)s'." 
    186186msgstr "" 
    187187 
    188 #: pysvnmanager/controllers/repos.py:175 
     188#: pysvnmanager/controllers/repos.py:202 
    189189#, python-format 
    190190msgid "" 
     
    193193msgstr "" 
    194194 
    195 #: pysvnmanager/controllers/repos.py:178 
     195#: pysvnmanager/controllers/repos.py:205 
    196196#, python-format 
    197197msgid "Create repository '%(repos)s' success." 
    198198msgstr "" 
    199199 
    200 #: pysvnmanager/controllers/repos.py:191 
     200#: pysvnmanager/controllers/repos.py:221 
    201201#, python-format 
    202202msgid "" 
     
    205205msgstr "" 
    206206 
    207 #: pysvnmanager/controllers/repos.py:194 
     207#: pysvnmanager/controllers/repos.py:224 
    208208#, python-format 
    209209msgid "Delete blank repository '%(repos)s' success." 
    210210msgstr "" 
    211211 
    212 #: pysvnmanager/controllers/role.py:120 
     212#: pysvnmanager/controllers/role.py:125 
    213213#, python-format 
    214214msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 
    215215msgstr "" 
    216216 
    217 #: pysvnmanager/controllers/role.py:140 
     217#: pysvnmanager/controllers/role.py:146 
    218218#, python-format 
    219219msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 
    220220msgstr "" 
    221221 
    222 #: pysvnmanager/controllers/role.py:162 
     222#: pysvnmanager/controllers/role.py:169 
    223223#, python-format 
    224224msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 
    225225msgstr "" 
    226226 
    227 #: pysvnmanager/controllers/role.py:182 
     227#: pysvnmanager/controllers/role.py:190 
    228228#, python-format 
    229229msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 
    230230msgstr "" 
    231231 
    232 #: pysvnmanager/controllers/security.py:52 
     232#: pysvnmanager/controllers/security.py:50 
    233233#, python-format 
    234234msgid "User %s logged in" 
    235235msgstr "" 
    236236 
    237 #: pysvnmanager/controllers/security.py:63 
     237#: pysvnmanager/controllers/security.py:61 
    238238#, python-format 
    239239msgid "Login failed for user: %s" 
    240240msgstr "" 
    241241 
    242 #: pysvnmanager/controllers/security.py:71 
     242#: pysvnmanager/controllers/security.py:69 
    243243#, python-format 
    244244msgid "User %s logged out" 
     
    316316#: pysvnmanager/hooks/plugins/EmailNotify.py:89 
    317317#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 
     318#: pysvnmanager/hooks/plugins/TracPostCommit.py:66 
    318319msgid "Current configuration" 
    319320msgstr "" 
     
    328329 
    329330#: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 
    330 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 
     331#: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 
    331332msgid "Minimal size of commit log: " 
    332333msgstr "" 
    333334 
    334335#: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 
    335 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 
     336#: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 
    336337msgid "Pattern which commit log must match against: " 
    337338msgstr "" 
     
    343344#: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 
    344345#: 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 
    346348msgid "Fill this form" 
    347349msgstr "" 
     
    353355#: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 
    354356#: 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 
    356359msgid "Enable" 
    357360msgstr "" 
     
    359362#: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 
    360363#: 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 
    362366msgid "Disable" 
    363367msgstr "" 
    364368 
    365 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 
     369#: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 
    366370msgid "Pattern which commit log must <b>NOT</b> match against: " 
    367371msgstr "" 
    368372 
    369 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 
     373#: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 
    370374msgid "Commit log size must > 0." 
    371375msgstr "" 
     
    423427msgstr "" 
    424428 
    425 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 
     429#: pysvnmanager/hooks/plugins/EmailNotify.py:124 
    426430msgid "Input email notify configurations: " 
    427431msgstr "" 
    428432 
    429 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 
    430 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 
     433#: pysvnmanager/hooks/plugins/EmailNotify.py:154 
    431434msgid "Wrong configuration." 
    432435msgstr "" 
     
    465468msgstr "" 
    466469 
    467 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 
     470#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 
    468471msgid "Admin user: " 
    469472msgstr "" 
    470473 
    471 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 
     474#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 
    472475msgid "Enable readonly mirror: " 
    473476msgstr "" 
    474477 
    475 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 
     478#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 
    476479msgid "Svnsync administrator: " 
    477480msgstr "" 
    478481 
     482#: pysvnmanager/hooks/plugins/TracPostCommit.py:27 
     483msgid "Trac integration with subversion's post commit hook." 
     484msgstr "" 
     485 
     486#: pysvnmanager/hooks/plugins/TracPostCommit.py:33 
     487msgid "" 
     488"Integrate subversion with trac: Commit log of subversion appends to trac " 
     489"tickets if subversion commit log contains ticket id." 
     490msgstr "" 
     491 
     492#: pysvnmanager/hooks/plugins/TracPostCommit.py:68 
     493msgid "Trac post commit hook is enabled." 
     494msgstr "" 
     495 
     496#: pysvnmanager/hooks/plugins/TracPostCommit.py:70 
     497msgid "Trac post commit hook is disabled." 
     498msgstr "" 
     499 
     500#: pysvnmanager/hooks/plugins/TracPostCommit.py:72 
     501#: pysvnmanager/hooks/plugins/TracPostCommit.py:105 
     502msgid "Trac environment location: " 
     503msgstr "" 
     504 
     505#: pysvnmanager/hooks/plugins/TracPostCommit.py:74 
     506msgid "Repository name in trac: " 
     507msgstr "" 
     508 
     509#: pysvnmanager/hooks/plugins/TracPostCommit.py:76 
     510msgid "Fixed ticket's status: " 
     511msgstr "" 
     512 
     513#: pysvnmanager/hooks/plugins/TracPostCommit.py:98 
     514msgid "Enable trac post commit hook: " 
     515msgstr "" 
     516 
     517#: pysvnmanager/hooks/plugins/TracPostCommit.py:110 
     518msgid "Repository name in trac (default is blank): " 
     519msgstr "" 
     520 
     521#: pysvnmanager/hooks/plugins/TracPostCommit.py:115 
     522msgid "Fixed ticket status (default is closed): " 
     523msgstr "" 
     524 
    479525#: pysvnmanager/hooks/plugins/__init__.py:111 
    480526#, python-format 
     
    488534 
    489535#: 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 
    496541msgid "Plugin not fully implemented." 
    497542msgstr "" 
    498543 
    499 #: pysvnmanager/hooks/plugins/__init__.py:329 
     544#: pysvnmanager/hooks/plugins/__init__.py:325 
    500545msgid "Name" 
    501546msgstr "" 
    502547 
    503 #: pysvnmanager/hooks/plugins/__init__.py:331 
     548#: pysvnmanager/hooks/plugins/__init__.py:327 
    504549msgid "Description" 
    505550msgstr "" 
     
    515560msgstr "" 
    516561 
    517 #: pysvnmanager/model/repos.py:166 
     562#: pysvnmanager/model/repos.py:193 
    518563#, python-format 
    519564msgid "Repos %s is not a blank repository." 
     
    552597msgstr "" 
    553598 
    554 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 
    555 #: pysvnmanager/model/svnauthz.py:1513 
     599#: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 
     600#: pysvnmanager/model/svnauthz.py:1516 
    556601#, python-format 
    557602msgid "Unknown rule format: %s" 
    558603msgstr "" 
    559604 
    560 #: pysvnmanager/model/svnauthz.py:1527 
     605#: pysvnmanager/model/svnauthz.py:1530 
    561606#, python-format 
    562607msgid "No module exist for %s:%s" 
    563608msgstr "" 
    564609 
    565 #: pysvnmanager/model/svnauthz.py:1637 
     610#: pysvnmanager/model/svnauthz.py:1640 
    566611#, python-format 
    567612msgid "Alias %s is referenced by group %s." 
    568613msgstr "" 
    569614 
    570 #: pysvnmanager/model/svnauthz.py:1649 
     615#: pysvnmanager/model/svnauthz.py:1652 
    571616#, python-format 
    572617msgid "%s is referenced by [%s]." 
    573618msgstr "" 
    574619 
    575 #: pysvnmanager/model/svnauthz.py:1785 
     620#: pysvnmanager/model/svnauthz.py:1788 
    576621#, python-format 
    577622msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 
    578623msgstr "" 
    579624 
    580 #: pysvnmanager/model/svnauthz.py:1787 
     625#: pysvnmanager/model/svnauthz.py:1790 
    581626#, python-format 
    582627msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 
    583628msgstr "" 
    584629 
    585 #: pysvnmanager/model/svnauthz.py:1789 
     630#: pysvnmanager/model/svnauthz.py:1792 
    586631#, python-format 
    587632msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 
    588633msgstr "" 
    589634 
    590 #: pysvnmanager/model/svnauthz.py:1829 
     635#: pysvnmanager/model/svnauthz.py:1832 
    591636#, python-format 
    592637msgid "" 
     
    600645msgstr "" 
    601646 
    602 #: pysvnmanager/model/svnauthz.py:1848 
     647#: pysvnmanager/model/svnauthz.py:1851 
    603648#, python-format 
    604649msgid "" 
     
    636681#: pysvnmanager/templates/base.mako:35 
    637682#: pysvnmanager/templates/authz/index.mako:5 
    638 #: pysvnmanager/templates/authz/index.mako:590 
     683#: pysvnmanager/templates/authz/index.mako:592 
    639684msgid "ACL management" 
    640685msgstr "" 
     
    650695msgstr "" 
    651696 
     697#: pysvnmanager/templates/base.mako:38 
     698msgid "Welcome" 
     699msgstr "" 
     700 
    652701#: pysvnmanager/templates/base.mako:39 
    653702msgid "Logout" 
     
    663712 
    664713#: pysvnmanager/templates/authz/index.mako:171 
    665 #: pysvnmanager/templates/authz/index.mako:664 
     714#: pysvnmanager/templates/authz/index.mako:668 
    666715msgid "Full" 
    667716msgstr "" 
    668717 
    669718#: pysvnmanager/templates/authz/index.mako:175 
    670 #: pysvnmanager/templates/authz/index.mako:665 
     719#: pysvnmanager/templates/authz/index.mako:669 
    671720msgid "Denied" 
    672721msgstr "" 
     
    680729msgstr "" 
    681730 
    682 #: pysvnmanager/templates/authz/index.mako:472 
     731#: pysvnmanager/templates/authz/index.mako:473 
     732msgid "Please input repository name." 
     733msgstr "" 
     734 
     735#: pysvnmanager/templates/authz/index.mako:479 
     736msgid "Save failed." 
     737msgstr "" 
     738 
     739#: pysvnmanager/templates/authz/index.mako:485 
    683740msgid "Please input module path." 
    684741msgstr "" 
    685742 
    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 
    695744msgid "Update ACL failed:" 
    696745msgstr "" 
    697746 
    698 #: pysvnmanager/templates/authz/index.mako:508 
     747#: pysvnmanager/templates/authz/index.mako:510 
    699748msgid "Update ACL successfully." 
    700749msgstr "" 
    701750 
    702 #: pysvnmanager/templates/authz/index.mako:529 
     751#: pysvnmanager/templates/authz/index.mako:531 
    703752msgid "No path selected." 
    704753msgstr "" 
    705754 
    706 #: pysvnmanager/templates/authz/index.mako:534 
     755#: pysvnmanager/templates/authz/index.mako:536 
    707756msgid "Are you sure to delete module:" 
    708757msgstr "" 
    709758 
    710 #: pysvnmanager/templates/authz/index.mako:536 
     759#: pysvnmanager/templates/authz/index.mako:538 
    711760#: pysvnmanager/templates/role/index.mako:446 
    712761#: pysvnmanager/templates/role/index.mako:531 
     
    714763msgstr "" 
    715764 
    716 #: pysvnmanager/templates/authz/index.mako:557 
     765#: pysvnmanager/templates/authz/index.mako:559 
    717766msgid "Can not delete module " 
    718767msgstr "" 
    719768 
    720 #: pysvnmanager/templates/authz/index.mako:562 
     769#: pysvnmanager/templates/authz/index.mako:564 
    721770msgid "Successfully delete module:" 
    722771msgstr "" 
    723772 
    724 #: pysvnmanager/templates/authz/index.mako:597 
     773#: pysvnmanager/templates/authz/index.mako:599 
    725774#: pysvnmanager/templates/repos/hooks.mako:188 
    726775msgid "Repository:" 
    727776msgstr "" 
    728777 
    729 #: pysvnmanager/templates/authz/index.mako:600 
     778#: pysvnmanager/templates/authz/index.mako:603 
    730779msgid "New repository" 
    731780msgstr "" 
    732781 
    733 #: pysvnmanager/templates/authz/index.mako:604 
     782#: pysvnmanager/templates/authz/index.mako:608 
    734783msgid "Repository Name:" 
    735784msgstr "" 
    736785 
    737 #: pysvnmanager/templates/authz/index.mako:609 
     786#: pysvnmanager/templates/authz/index.mako:613 
    738787msgid "Administrators:" 
    739788msgstr "" 
    740789 
    741 #: pysvnmanager/templates/authz/index.mako:621 
     790#: pysvnmanager/templates/authz/index.mako:625 
    742791msgid "Module:" 
    743792msgstr "" 
    744793 
    745 #: pysvnmanager/templates/authz/index.mako:624 
     794#: pysvnmanager/templates/authz/index.mako:628 
    746795msgid "New module" 
    747796msgstr "" 
    748797 
    749 #: pysvnmanager/templates/authz/index.mako:630 
     798#: pysvnmanager/templates/authz/index.mako:634 
    750799msgid "Module Path:" 
    751800msgstr "" 
    752801 
    753 #: pysvnmanager/templates/authz/index.mako:644 
     802#: pysvnmanager/templates/authz/index.mako:648 
    754803msgid "ACL" 
    755804msgstr "" 
    756805 
    757 #: pysvnmanager/templates/authz/index.mako:649 
     806#: pysvnmanager/templates/authz/index.mako:653 
    758807msgid "Users" 
    759808msgstr "" 
    760809 
    761 #: pysvnmanager/templates/authz/index.mako:663 
     810#: pysvnmanager/templates/authz/index.mako:667 
    762811msgid "ReadOnly" 
    763812msgstr "" 
    764813 
    765 #: pysvnmanager/templates/authz/index.mako:678 
    766 #: pysvnmanager/templates/role/index.mako:711 
     814#: pysvnmanager/templates/authz/index.mako:682 
     815#: pysvnmanager/templates/role/index.mako:721 
    767816msgid "Save" 
    768817msgstr "" 
    769818 
    770 #: pysvnmanager/templates/authz/index.mako:679 
    771 #: pysvnmanager/templates/role/index.mako:712 
     819#: pysvnmanager/templates/authz/index.mako:683 
     820#: pysvnmanager/templates/role/index.mako:722 
    772821msgid "Delete" 
    773822msgstr "" 
    774823 
    775 #: pysvnmanager/templates/authz/index.mako:680 
    776 #: pysvnmanager/templates/role/index.mako:713 
     824#: pysvnmanager/templates/authz/index.mako:684 
     825#: pysvnmanager/templates/role/index.mako:723 
    777826msgid "Cancel" 
    778827msgstr "" 
     
    882931msgstr "" 
    883932 
    884 #: pysvnmanager/templates/repos/hooks.mako:191 
     933#: pysvnmanager/templates/repos/hooks.mako:192 
    885934msgid "Add repository" 
    886935msgstr "" 
    887936 
    888 #: pysvnmanager/templates/repos/hooks.mako:192 
     937#: pysvnmanager/templates/repos/hooks.mako:193 
    889938#: pysvnmanager/templates/repos/remove.mako:5 
    890939#: pysvnmanager/templates/repos/remove.mako:49 
     
    893942msgstr "" 
    894943 
    895 #: pysvnmanager/templates/repos/hooks.mako:197 
     944#: pysvnmanager/templates/repos/hooks.mako:199 
    896945msgid "Uninstalled hooks:" 
    897946msgstr "" 
    898947 
    899 #: pysvnmanager/templates/repos/hooks.mako:223 
     948#: pysvnmanager/templates/repos/hooks.mako:225 
    900949msgid "Install this plugin" 
    901950msgstr "" 
    902951 
    903952#: pysvnmanager/templates/role/index.mako:5 
    904 #: pysvnmanager/templates/role/index.mako:625 
     953#: pysvnmanager/templates/role/index.mako:633 
    905954msgid "Role Management" 
    906955msgstr "" 
     
    946995msgstr "" 
    947996 
    948 #: pysvnmanager/templates/role/index.mako:632 
     997#: pysvnmanager/templates/role/index.mako:640 
    949998msgid "Select a role name:" 
    950999msgstr "" 
    9511000 
    952 #: pysvnmanager/templates/role/index.mako:636 
     1001#: pysvnmanager/templates/role/index.mako:645 
    9531002msgid "New Group" 
    9541003msgstr "" 
    9551004 
    956 #: pysvnmanager/templates/role/index.mako:637 
     1005#: pysvnmanager/templates/role/index.mako:646 
    9571006msgid "New Alias" 
    9581007msgstr "" 
    9591008 
    960 #: pysvnmanager/templates/role/index.mako:641 
     1009#: pysvnmanager/templates/role/index.mako:651 
    9611010msgid "New group name:" 
    9621011msgstr "" 
    9631012 
    964 #: pysvnmanager/templates/role/index.mako:645 
     1013#: pysvnmanager/templates/role/index.mako:655 
    9651014msgid "New alias name:" 
    9661015msgstr "" 
    9671016 
    968 #: pysvnmanager/templates/role/index.mako:657 
     1017#: pysvnmanager/templates/role/index.mako:667 
    9691018msgid "Members list" 
    9701019msgstr "" 
    9711020 
    972 #: pysvnmanager/templates/role/index.mako:662 
     1021#: pysvnmanager/templates/role/index.mako:672 
    9731022msgid "Other users" 
    9741023msgstr "" 
    9751024 
    976 #: pysvnmanager/templates/role/index.mako:681 
     1025#: pysvnmanager/templates/role/index.mako:691 
    9771026msgid "Ignore recursive" 
    9781027msgstr "" 
    9791028 
    980 #: pysvnmanager/templates/role/index.mako:693 
     1029#: pysvnmanager/templates/role/index.mako:703 
    9811030msgid "User name:" 
    9821031msgstr "" 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/pysvnmanager.pot

    r54 r83  
    11# Translations template for pySvnManager. 
    2 # Copyright (C) 2008 ORGANIZATION 
     2# Copyright (C) 2009 ORGANIZATION 
    33# This file is distributed under the same license as the pySvnManager project. 
    4 # FIRST AUTHOR <EMAIL@ADDRESS>, 2008. 
     4# FIRST AUTHOR <EMAIL@ADDRESS>, 2009. 
    55# 
    66#, fuzzy 
    77msgid "" 
    88msgstr "" 
    9 "Project-Id-Version: pySvnManager 0.2.1\n" 
     9"Project-Id-Version: pySvnManager 0.2.2\n" 
    1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    11 "POT-Creation-Date: 2008-08-30 13:16+0800\n" 
     11"POT-Creation-Date: 2009-03-14 14:51+0800\n" 
    1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
    1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 
     
    1818"Generated-By: Babel 0.9.4\n" 
    1919 
    20 #: pysvnmanager/controllers/authz.py:60 pysvnmanager/templates/authz/index.mako:152 
     20#: pysvnmanager/controllers/authz.py:63 pysvnmanager/templates/authz/index.mako:152 
    2121#: pysvnmanager/templates/check/index.mako:10 
    2222msgid "All users(with anon)" 
    2323msgstr "" 
    2424 
    25 #: pysvnmanager/controllers/authz.py:61 pysvnmanager/templates/authz/index.mako:154 
     25#: pysvnmanager/controllers/authz.py:64 pysvnmanager/templates/authz/index.mako:154 
    2626#: pysvnmanager/templates/check/index.mako:11 
    2727msgid "Known users" 
    2828msgstr "" 
    2929 
    30 #: pysvnmanager/controllers/authz.py:62 pysvnmanager/templates/authz/index.mako:156 
     30#: pysvnmanager/controllers/authz.py:65 pysvnmanager/templates/authz/index.mako:156 
    3131#: pysvnmanager/templates/check/index.mako:12 
    3232msgid "Anonymous" 
    3333msgstr "" 
    3434 
    35 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 
    36 #: pysvnmanager/controllers/role.py:87 pysvnmanager/templates/authz/index.mako:148 
     35#: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 
     36#: pysvnmanager/controllers/role.py:91 pysvnmanager/templates/authz/index.mako:148 
    3737#: pysvnmanager/templates/check/index.mako:17 
    3838#: pysvnmanager/templates/role/index.mako:18 
     
    4343msgstr "" 
    4444 
    45 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 
    46 #: pysvnmanager/controllers/role.py:89 pysvnmanager/templates/authz/index.mako:150 
     45#: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 
     46#: pysvnmanager/controllers/role.py:93 pysvnmanager/templates/authz/index.mako:150 
    4747#: pysvnmanager/templates/check/index.mako:19 
    4848#: pysvnmanager/templates/role/index.mako:23 
     
    5353msgstr "" 
    5454 
    55 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 
    56 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 
    57 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 
     55#: 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 
    5858#: pysvnmanager/templates/check/index.mako:9 
    5959#: pysvnmanager/templates/check/index.mako:23 
     
    6363msgstr "" 
    6464 
    65 #: pysvnmanager/controllers/authz.py:177 
     65#: pysvnmanager/controllers/authz.py:180 
    6666#, python-format 
    6767msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 
    6868msgstr "" 
    6969 
    70 #: pysvnmanager/controllers/authz.py:190 
     70#: pysvnmanager/controllers/authz.py:195 
    7171#, python-format 
    7272msgid "Repository %s not exist." 
    7373msgstr "" 
    7474 
    75 #: pysvnmanager/controllers/authz.py:198 
     75#: pysvnmanager/controllers/authz.py:203 
    7676#, python-format 
    7777msgid "Module %s not exist." 
    7878msgstr "" 
    7979 
    80 #: pysvnmanager/controllers/authz.py:204 
     80#: pysvnmanager/controllers/authz.py:209 
    8181msgid "You can not delete yourself from admin list." 
    8282msgstr "" 
    8383 
    84 #: pysvnmanager/controllers/authz.py:229 
     84#: pysvnmanager/controllers/authz.py:234 
    8585#, python-format 
    8686msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 
     
    9191msgstr "" 
    9292 
    93 #: pysvnmanager/controllers/logs.py:68 
     93#: pysvnmanager/controllers/logs.py:71 
    9494msgid "Rev" 
    9595msgstr "" 
    9696 
    97 #: pysvnmanager/controllers/logs.py:69 
     97#: pysvnmanager/controllers/logs.py:72 
    9898msgid "Who" 
    9999msgstr "" 
    100100 
    101 #: pysvnmanager/controllers/logs.py:70 
     101#: pysvnmanager/controllers/logs.py:73 
    102102msgid "When" 
    103103msgstr "" 
    104104 
    105 #: pysvnmanager/controllers/logs.py:71 
     105#: pysvnmanager/controllers/logs.py:74 
    106106msgid "Why" 
    107107msgstr "" 
    108108 
    109 #: pysvnmanager/controllers/logs.py:72 
     109#: pysvnmanager/controllers/logs.py:75 
    110110msgid "Compare" 
    111111msgstr "" 
    112112 
    113 #: pysvnmanager/controllers/logs.py:115 
     113#: pysvnmanager/controllers/logs.py:118 
    114114msgid "Page: " 
    115115msgstr "" 
    116116 
    117 #: pysvnmanager/controllers/logs.py:151 
     117#: pysvnmanager/controllers/logs.py:154 
    118118msgid "Compares between" 
    119119msgstr "" 
    120120 
    121 #: pysvnmanager/controllers/logs.py:170 
     121#: pysvnmanager/controllers/logs.py:174 
    122122#, python-format 
    123123msgid "Rollback successfully to revision: %s" 
    124124msgstr "" 
    125125 
    126 #: pysvnmanager/controllers/logs.py:179 
     126#: pysvnmanager/controllers/logs.py:181 
    127127#, python-format 
    128128msgid "Rollback failed: %s" 
    129129msgstr "" 
    130130 
    131 #: pysvnmanager/controllers/repos.py:91 
     131#: pysvnmanager/controllers/repos.py:114 
    132132msgid "Installed hooks:" 
    133133msgstr "" 
    134134 
    135 #: pysvnmanager/controllers/repos.py:97 
     135#: pysvnmanager/controllers/repos.py:120 
    136136msgid "Id" 
    137137msgstr "" 
    138138 
    139 #: pysvnmanager/controllers/repos.py:98 
     139#: pysvnmanager/controllers/repos.py:121 
    140140msgid "Plugin name" 
    141141msgstr "" 
    142142 
    143 #: pysvnmanager/controllers/repos.py:99 pysvnmanager/hooks/plugins/__init__.py:330 
     143#: pysvnmanager/controllers/repos.py:122 pysvnmanager/hooks/plugins/__init__.py:326 
    144144msgid "Type" 
    145145msgstr "" 
    146146 
    147 #: pysvnmanager/controllers/repos.py:113 
     147#: pysvnmanager/controllers/repos.py:136 
    148148msgid "Remove selected hooks" 
    149149msgstr "" 
    150150 
    151 #: pysvnmanager/controllers/repos.py:136 
     151#: pysvnmanager/controllers/repos.py:161 
    152152#, python-format 
    153153msgid "" 
     
    156156msgstr "" 
    157157 
    158 #: pysvnmanager/controllers/repos.py:139 
     158#: pysvnmanager/controllers/repos.py:164 
    159159#, python-format 
    160160msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 
    161161msgstr "" 
    162162 
    163 #: pysvnmanager/controllers/repos.py:160 
     163#: pysvnmanager/controllers/repos.py:186 
    164164#, python-format 
    165165msgid "" 
     
    168168msgstr "" 
    169169 
    170 #: pysvnmanager/controllers/repos.py:163 
     170#: pysvnmanager/controllers/repos.py:189 
    171171#, python-format 
    172172msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 
    173173msgstr "" 
    174174 
    175 #: pysvnmanager/controllers/repos.py:166 
     175#: pysvnmanager/controllers/repos.py:192 
    176176#, python-format 
    177177msgid "No plugin has been deleted for '%(repos)s'." 
    178178msgstr "" 
    179179 
    180 #: pysvnmanager/controllers/repos.py:175 
     180#: pysvnmanager/controllers/repos.py:202 
    181181#, python-format 
    182182msgid "" 
     
    185185msgstr "" 
    186186 
    187 #: pysvnmanager/controllers/repos.py:178 
     187#: pysvnmanager/controllers/repos.py:205 
    188188#, python-format 
    189189msgid "Create repository '%(repos)s' success." 
    190190msgstr "" 
    191191 
    192 #: pysvnmanager/controllers/repos.py:191 
     192#: pysvnmanager/controllers/repos.py:221 
    193193#, python-format 
    194194msgid "" 
     
    197197msgstr "" 
    198198 
    199 #: pysvnmanager/controllers/repos.py:194 
     199#: pysvnmanager/controllers/repos.py:224 
    200200#, python-format 
    201201msgid "Delete blank repository '%(repos)s' success." 
    202202msgstr "" 
    203203 
    204 #: pysvnmanager/controllers/role.py:120 
     204#: pysvnmanager/controllers/role.py:125 
    205205#, python-format 
    206206msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 
    207207msgstr "" 
    208208 
    209 #: pysvnmanager/controllers/role.py:140 
     209#: pysvnmanager/controllers/role.py:146 
    210210#, python-format 
    211211msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 
    212212msgstr "" 
    213213 
    214 #: pysvnmanager/controllers/role.py:162 
     214#: pysvnmanager/controllers/role.py:169 
    215215#, python-format 
    216216msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 
    217217msgstr "" 
    218218 
    219 #: pysvnmanager/controllers/role.py:182 
     219#: pysvnmanager/controllers/role.py:190 
    220220#, python-format 
    221221msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 
    222222msgstr "" 
    223223 
    224 #: pysvnmanager/controllers/security.py:52 
     224#: pysvnmanager/controllers/security.py:50 
    225225#, python-format 
    226226msgid "User %s logged in" 
    227227msgstr "" 
    228228 
    229 #: pysvnmanager/controllers/security.py:63 
     229#: pysvnmanager/controllers/security.py:61 
    230230#, python-format 
    231231msgid "Login failed for user: %s" 
    232232msgstr "" 
    233233 
    234 #: pysvnmanager/controllers/security.py:71 
     234#: pysvnmanager/controllers/security.py:69 
    235235#, python-format 
    236236msgid "User %s logged out" 
     
    308308#: pysvnmanager/hooks/plugins/EmailNotify.py:89 
    309309#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 
     310#: pysvnmanager/hooks/plugins/TracPostCommit.py:66 
    310311msgid "Current configuration" 
    311312msgstr "" 
     
    320321 
    321322#: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 
    322 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 
     323#: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 
    323324msgid "Minimal size of commit log: " 
    324325msgstr "" 
    325326 
    326327#: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 
    327 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 
     328#: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 
    328329msgid "Pattern which commit log must match against: " 
    329330msgstr "" 
     
    335336#: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 
    336337#: 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 
    338340msgid "Fill this form" 
    339341msgstr "" 
     
    345347#: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 
    346348#: 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 
    348351msgid "Enable" 
    349352msgstr "" 
     
    351354#: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 
    352355#: 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 
    354358msgid "Disable" 
    355359msgstr "" 
    356360 
    357 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 
     361#: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 
    358362msgid "Pattern which commit log must <b>NOT</b> match against: " 
    359363msgstr "" 
    360364 
    361 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 
     365#: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 
    362366msgid "Commit log size must > 0." 
    363367msgstr "" 
     
    415419msgstr "" 
    416420 
    417 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 
     421#: pysvnmanager/hooks/plugins/EmailNotify.py:124 
    418422msgid "Input email notify configurations: " 
    419423msgstr "" 
    420424 
    421 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 
    422 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 
     425#: pysvnmanager/hooks/plugins/EmailNotify.py:154 
    423426msgid "Wrong configuration." 
    424427msgstr "" 
     
    456459msgstr "" 
    457460 
    458 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 
     461#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 
    459462msgid "Admin user: " 
    460463msgstr "" 
    461464 
    462 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 
     465#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 
    463466msgid "Enable readonly mirror: " 
    464467msgstr "" 
    465468 
    466 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 
     469#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 
    467470msgid "Svnsync administrator: " 
    468471msgstr "" 
    469472 
     473#: pysvnmanager/hooks/plugins/TracPostCommit.py:27 
     474msgid "Trac integration with subversion's post commit hook." 
     475msgstr "" 
     476 
     477#: pysvnmanager/hooks/plugins/TracPostCommit.py:33 
     478msgid "" 
     479"Integrate subversion with trac: Commit log of subversion appends to trac " 
     480"tickets if subversion commit log contains ticket id." 
     481msgstr "" 
     482 
     483#: pysvnmanager/hooks/plugins/TracPostCommit.py:68 
     484msgid "Trac post commit hook is enabled." 
     485msgstr "" 
     486 
     487#: pysvnmanager/hooks/plugins/TracPostCommit.py:70 
     488msgid "Trac post commit hook is disabled." 
     489msgstr "" 
     490 
     491#: pysvnmanager/hooks/plugins/TracPostCommit.py:72 
     492#: pysvnmanager/hooks/plugins/TracPostCommit.py:105 
     493msgid "Trac environment location: " 
     494msgstr "" 
     495 
     496#: pysvnmanager/hooks/plugins/TracPostCommit.py:74 
     497msgid "Repository name in trac: " 
     498msgstr "" 
     499 
     500#: pysvnmanager/hooks/plugins/TracPostCommit.py:76 
     501msgid "Fixed ticket's status: " 
     502msgstr "" 
     503 
     504#: pysvnmanager/hooks/plugins/TracPostCommit.py:98 
     505msgid "Enable trac post commit hook: " 
     506msgstr "" 
     507 
     508#: pysvnmanager/hooks/plugins/TracPostCommit.py:110 
     509msgid "Repository name in trac (default is blank): " 
     510msgstr "" 
     511 
     512#: pysvnmanager/hooks/plugins/TracPostCommit.py:115 
     513msgid "Fixed ticket status (default is closed): " 
     514msgstr "" 
     515 
    470516#: pysvnmanager/hooks/plugins/__init__.py:111 
    471517#, python-format 
     
    479525 
    480526#: 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 
    487532msgid "Plugin not fully implemented." 
    488533msgstr "" 
    489534 
    490 #: pysvnmanager/hooks/plugins/__init__.py:329 
     535#: pysvnmanager/hooks/plugins/__init__.py:325 
    491536msgid "Name" 
    492537msgstr "" 
    493538 
    494 #: pysvnmanager/hooks/plugins/__init__.py:331 
     539#: pysvnmanager/hooks/plugins/__init__.py:327 
    495540msgid "Description" 
    496541msgstr "" 
     
    506551msgstr "" 
    507552 
    508 #: pysvnmanager/model/repos.py:166 
     553#: pysvnmanager/model/repos.py:193 
    509554#, python-format 
    510555msgid "Repos %s is not a blank repository." 
     
    543588msgstr "" 
    544589 
    545 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 
    546 #: pysvnmanager/model/svnauthz.py:1513 
     590#: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 
     591#: pysvnmanager/model/svnauthz.py:1516 
    547592#, python-format 
    548593msgid "Unknown rule format: %s" 
    549594msgstr "" 
    550595 
    551 #: pysvnmanager/model/svnauthz.py:1527 
     596#: pysvnmanager/model/svnauthz.py:1530 
    552597#, python-format 
    553598msgid "No module exist for %s:%s" 
    554599msgstr "" 
    555600 
    556 #: pysvnmanager/model/svnauthz.py:1637 
     601#: pysvnmanager/model/svnauthz.py:1640 
    557602#, python-format 
    558603msgid "Alias %s is referenced by group %s." 
    559604msgstr "" 
    560605 
    561 #: pysvnmanager/model/svnauthz.py:1649 
     606#: pysvnmanager/model/svnauthz.py:1652 
    562607#, python-format 
    563608msgid "%s is referenced by [%s]." 
    564609msgstr "" 
    565610 
    566 #: pysvnmanager/model/svnauthz.py:1785 
     611#: pysvnmanager/model/svnauthz.py:1788 
    567612#, python-format 
    568613msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 
    569614msgstr "" 
    570615 
    571 #: pysvnmanager/model/svnauthz.py:1787 
     616#: pysvnmanager/model/svnauthz.py:1790 
    572617#, python-format 
    573618msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 
    574619msgstr "" 
    575620 
    576 #: pysvnmanager/model/svnauthz.py:1789 
     621#: pysvnmanager/model/svnauthz.py:1792 
    577622#, python-format 
    578623msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 
    579624msgstr "" 
    580625 
    581 #: pysvnmanager/model/svnauthz.py:1829 
     626#: pysvnmanager/model/svnauthz.py:1832 
    582627#, python-format 
    583628msgid "" 
     
    591636msgstr "" 
    592637 
    593 #: pysvnmanager/model/svnauthz.py:1848 
     638#: pysvnmanager/model/svnauthz.py:1851 
    594639#, python-format 
    595640msgid "" 
     
    626671 
    627672#: pysvnmanager/templates/base.mako:35 pysvnmanager/templates/authz/index.mako:5 
    628 #: pysvnmanager/templates/authz/index.mako:590 
     673#: pysvnmanager/templates/authz/index.mako:592 
    629674msgid "ACL management" 
    630675msgstr "" 
     
    639684msgstr "" 
    640685 
     686#: pysvnmanager/templates/base.mako:38 
     687msgid "Welcome" 
     688msgstr "" 
     689 
    641690#: pysvnmanager/templates/base.mako:39 
    642691msgid "Logout" 
     
    652701 
    653702#: pysvnmanager/templates/authz/index.mako:171 
    654 #: pysvnmanager/templates/authz/index.mako:664 
     703#: pysvnmanager/templates/authz/index.mako:668 
    655704msgid "Full" 
    656705msgstr "" 
    657706 
    658707#: pysvnmanager/templates/authz/index.mako:175 
    659 #: pysvnmanager/templates/authz/index.mako:665 
     708#: pysvnmanager/templates/authz/index.mako:669 
    660709msgid "Denied" 
    661710msgstr "" 
     
    669718msgstr "" 
    670719 
    671 #: pysvnmanager/templates/authz/index.mako:472 
     720#: pysvnmanager/templates/authz/index.mako:473 
     721msgid "Please input repository name." 
     722msgstr "" 
     723 
     724#: pysvnmanager/templates/authz/index.mako:479 
     725msgid "Save failed." 
     726msgstr "" 
     727 
     728#: pysvnmanager/templates/authz/index.mako:485 
    672729msgid "Please input module path." 
    673730msgstr "" 
    674731 
    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 
    684733msgid "Update ACL failed:" 
    685734msgstr "" 
    686735 
    687 #: pysvnmanager/templates/authz/index.mako:508 
     736#: pysvnmanager/templates/authz/index.mako:510 
    688737msgid "Update ACL successfully." 
    689738msgstr "" 
    690739 
    691 #: pysvnmanager/templates/authz/index.mako:529 
     740#: pysvnmanager/templates/authz/index.mako:531 
    692741msgid "No path selected." 
    693742msgstr "" 
    694743 
    695 #: pysvnmanager/templates/authz/index.mako:534 
     744#: pysvnmanager/templates/authz/index.mako:536 
    696745msgid "Are you sure to delete module:" 
    697746msgstr "" 
    698747 
    699 #: pysvnmanager/templates/authz/index.mako:536 
     748#: pysvnmanager/templates/authz/index.mako:538 
    700749#: pysvnmanager/templates/role/index.mako:446 
    701750#: pysvnmanager/templates/role/index.mako:531 
     
    703752msgstr "" 
    704753 
    705 #: pysvnmanager/templates/authz/index.mako:557 
     754#: pysvnmanager/templates/authz/index.mako:559 
    706755msgid "Can not delete module " 
    707756msgstr "" 
    708757 
    709 #: pysvnmanager/templates/authz/index.mako:562 
     758#: pysvnmanager/templates/authz/index.mako:564 
    710759msgid "Successfully delete module:" 
    711760msgstr "" 
    712761 
    713 #: pysvnmanager/templates/authz/index.mako:597 
     762#: pysvnmanager/templates/authz/index.mako:599 
    714763#: pysvnmanager/templates/repos/hooks.mako:188 
    715764msgid "Repository:" 
    716765msgstr "" 
    717766 
    718 #: pysvnmanager/templates/authz/index.mako:600 
     767#: pysvnmanager/templates/authz/index.mako:603 
    719768msgid "New repository" 
    720769msgstr "" 
    721770 
    722 #: pysvnmanager/templates/authz/index.mako:604 
     771#: pysvnmanager/templates/authz/index.mako:608 
    723772msgid "Repository Name:" 
    724773msgstr "" 
    725774 
    726 #: pysvnmanager/templates/authz/index.mako:609 
     775#: pysvnmanager/templates/authz/index.mako:613 
    727776msgid "Administrators:" 
    728777msgstr "" 
    729778 
    730 #: pysvnmanager/templates/authz/index.mako:621 
     779#: pysvnmanager/templates/authz/index.mako:625 
    731780msgid "Module:" 
    732781msgstr "" 
    733782 
    734 #: pysvnmanager/templates/authz/index.mako:624 
     783#: pysvnmanager/templates/authz/index.mako:628 
    735784msgid "New module" 
    736785msgstr "" 
    737786 
    738 #: pysvnmanager/templates/authz/index.mako:630 
     787#: pysvnmanager/templates/authz/index.mako:634 
    739788msgid "Module Path:" 
    740789msgstr "" 
    741790 
    742 #: pysvnmanager/templates/authz/index.mako:644 
     791#: pysvnmanager/templates/authz/index.mako:648 
    743792msgid "ACL" 
    744793msgstr "" 
    745794 
    746 #: pysvnmanager/templates/authz/index.mako:649 
     795#: pysvnmanager/templates/authz/index.mako:653 
    747796msgid "Users" 
    748797msgstr "" 
    749798 
    750 #: pysvnmanager/templates/authz/index.mako:663 
     799#: pysvnmanager/templates/authz/index.mako:667 
    751800msgid "ReadOnly" 
    752801msgstr "" 
    753802 
    754 #: pysvnmanager/templates/authz/index.mako:678 
    755 #: pysvnmanager/templates/role/index.mako:711 
     803#: pysvnmanager/templates/authz/index.mako:682 
     804#: pysvnmanager/templates/role/index.mako:721 
    756805msgid "Save" 
    757806msgstr "" 
    758807 
    759 #: pysvnmanager/templates/authz/index.mako:679 
    760 #: pysvnmanager/templates/role/index.mako:712 
     808#: pysvnmanager/templates/authz/index.mako:683 
     809#: pysvnmanager/templates/role/index.mako:722 
    761810msgid "Delete" 
    762811msgstr "" 
    763812 
    764 #: pysvnmanager/templates/authz/index.mako:680 
    765 #: pysvnmanager/templates/role/index.mako:713 
     813#: pysvnmanager/templates/authz/index.mako:684 
     814#: pysvnmanager/templates/role/index.mako:723 
    766815msgid "Cancel" 
    767816msgstr "" 
     
    871920msgstr "" 
    872921 
    873 #: pysvnmanager/templates/repos/hooks.mako:191 
     922#: pysvnmanager/templates/repos/hooks.mako:192 
    874923msgid "Add repository" 
    875924msgstr "" 
    876925 
    877 #: pysvnmanager/templates/repos/hooks.mako:192 
     926#: pysvnmanager/templates/repos/hooks.mako:193 
    878927#: pysvnmanager/templates/repos/remove.mako:5 
    879928#: pysvnmanager/templates/repos/remove.mako:49 
     
    882931msgstr "" 
    883932 
    884 #: pysvnmanager/templates/repos/hooks.mako:197 
     933#: pysvnmanager/templates/repos/hooks.mako:199 
    885934msgid "Uninstalled hooks:" 
    886935msgstr "" 
    887936 
    888 #: pysvnmanager/templates/repos/hooks.mako:223 
     937#: pysvnmanager/templates/repos/hooks.mako:225 
    889938msgid "Install this plugin" 
    890939msgstr "" 
    891940 
    892941#: pysvnmanager/templates/role/index.mako:5 
    893 #: pysvnmanager/templates/role/index.mako:625 
     942#: pysvnmanager/templates/role/index.mako:633 
    894943msgid "Role Management" 
    895944msgstr "" 
     
    935984msgstr "" 
    936985 
    937 #: pysvnmanager/templates/role/index.mako:632 
     986#: pysvnmanager/templates/role/index.mako:640 
    938987msgid "Select a role name:" 
    939988msgstr "" 
    940989 
    941 #: pysvnmanager/templates/role/index.mako:636 
     990#: pysvnmanager/templates/role/index.mako:645 
    942991msgid "New Group" 
    943992msgstr "" 
    944993 
    945 #: pysvnmanager/templates/role/index.mako:637 
     994#: pysvnmanager/templates/role/index.mako:646 
    946995msgid "New Alias" 
    947996msgstr "" 
    948997 
    949 #: pysvnmanager/templates/role/index.mako:641 
     998#: pysvnmanager/templates/role/index.mako:651 
    950999msgid "New group name:" 
    9511000msgstr "" 
    9521001 
    953 #: pysvnmanager/templates/role/index.mako:645 
     1002#: pysvnmanager/templates/role/index.mako:655 
    9541003msgid "New alias name:" 
    9551004msgstr "" 
    9561005 
    957 #: pysvnmanager/templates/role/index.mako:657 
     1006#: pysvnmanager/templates/role/index.mako:667 
    9581007msgid "Members list" 
    9591008msgstr "" 
    9601009 
    961 #: pysvnmanager/templates/role/index.mako:662 
     1010#: pysvnmanager/templates/role/index.mako:672 
    9621011msgid "Other users" 
    9631012msgstr "" 
    9641013 
    965 #: pysvnmanager/templates/role/index.mako:681 
     1014#: pysvnmanager/templates/role/index.mako:691 
    9661015msgid "Ignore recursive" 
    9671016msgstr "" 
    9681017 
    969 #: pysvnmanager/templates/role/index.mako:693 
     1018#: pysvnmanager/templates/role/index.mako:703 
    9701019msgid "User name:" 
    9711020msgstr "" 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po

    r54 r83  
     1# translation of new.po to 
    12# translation of pysvnmanager.po to 
    23# Chinese (China) translations for pysvnmanager. 
     
    67# 
    78# FIRST AUTHOR <EMAIL@ADDRESS>, 2008. 
    8 # Jiang Xin <worldhello.net@gmail.com>, 2008. 
     9# Jiang Xin <worldhello.net@gmail.com>, 2008, 2009. 
    910msgid "" 
    1011msgstr "" 
    11 "Project-Id-Version:  pysvnmanager\n" 
     12"Project-Id-Version:  new\n" 
    1213"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    13 "POT-Creation-Date: 2008-07-03 22:14+0800\n" 
    14 "PO-Revision-Date: 2008-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" 
    1516"Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" 
    16 "Language-Team: <zh@li.org>\n" 
     17"Language-Team: <en@li.org>\n" 
    1718"Plural-Forms: nplurals=2; plural=(n != 1)\n" 
    1819"MIME-Version: 1.0\n" 
     
    2122"Generated-By: Babel 0.9.4\n" 
    2223 
    23 #: pysvnmanager/controllers/authz.py:60 
     24#: pysvnmanager/controllers/authz.py:63 
    2425#: pysvnmanager/templates/authz/index.mako:152 
    2526#: pysvnmanager/templates/check/index.mako:10 
     
    2728msgstr "所有用户(含匿名)" 
    2829 
    29 #: pysvnmanager/controllers/authz.py:61 
     30#: pysvnmanager/controllers/authz.py:64 
    3031#: pysvnmanager/templates/authz/index.mako:154 
    3132#: pysvnmanager/templates/check/index.mako:11 
     
    3334msgstr "注册用户" 
    3435 
    35 #: pysvnmanager/controllers/authz.py:62 
     36#: pysvnmanager/controllers/authz.py:65 
    3637#: pysvnmanager/templates/authz/index.mako:156 
    3738#: pysvnmanager/templates/check/index.mako:12 
     
    3940msgstr "匿名用户" 
    4041 
    41 #: pysvnmanager/controllers/authz.py:67 pysvnmanager/controllers/role.py:67 
    42 #: pysvnmanager/controllers/role.py:87 
     42#: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:71 
     43#: pysvnmanager/controllers/role.py:91 
    4344#: pysvnmanager/templates/authz/index.mako:148 
    4445#: pysvnmanager/templates/check/index.mako:17 
     
    5051msgstr "团队:" 
    5152 
    52 #: pysvnmanager/controllers/authz.py:70 pysvnmanager/controllers/role.py:72 
    53 #: pysvnmanager/controllers/role.py:89 
     53#: pysvnmanager/controllers/authz.py:73 pysvnmanager/controllers/role.py:76 
     54#: pysvnmanager/controllers/role.py:93 
    5455#: pysvnmanager/templates/authz/index.mako:150 
    5556#: pysvnmanager/templates/check/index.mako:19 
     
    6162msgstr "别名:" 
    6263 
    63 #: pysvnmanager/controllers/authz.py:85 pysvnmanager/controllers/authz.py:116 
    64 #: pysvnmanager/controllers/check.py:106 pysvnmanager/controllers/repos.py:57 
    65 #: pysvnmanager/controllers/repos.py:76 pysvnmanager/controllers/role.py:60 
     64#: 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 
    6667#: pysvnmanager/templates/check/index.mako:9 
    6768#: pysvnmanager/templates/check/index.mako:23 
     
    7172msgstr "请选择..." 
    7273 
    73 #: pysvnmanager/controllers/authz.py:177 
     74#: pysvnmanager/controllers/authz.py:180 
    7475#, python-format 
    7576msgid "User %(user)s changed authz rules. (rev:%(rev)s)" 
    7677msgstr "用户 %(user)s 修改了授权策略。(rev:%(rev)s)" 
    7778 
    78 #: pysvnmanager/controllers/authz.py:190 
     79#: pysvnmanager/controllers/authz.py:195 
    7980#, python-format 
    8081msgid "Repository %s not exist." 
    8182msgstr "版本库 %s 不存在。" 
    8283 
    83 #: pysvnmanager/controllers/authz.py:198 
     84#: pysvnmanager/controllers/authz.py:203 
    8485#, python-format 
    8586msgid "Module %s not exist." 
    8687msgstr "模组 %s 不存在。" 
    8788 
    88 #: pysvnmanager/controllers/authz.py:204 
     89#: pysvnmanager/controllers/authz.py:209 
    8990msgid "You can not delete yourself from admin list." 
    9091msgstr "您不能将自己从管理员列表中删除。" 
    9192 
    92 #: pysvnmanager/controllers/authz.py:229 
     93#: pysvnmanager/controllers/authz.py:234 
    9394#, python-format 
    9495msgid "User %(user)s delete authz rules. (rev:%(rev)s)" 
     
    100101msgstr "没有权限。" 
    101102 
    102 #: pysvnmanager/controllers/logs.py:68 
     103#: pysvnmanager/controllers/logs.py:71 
    103104msgid "Rev" 
    104105msgstr "版本" 
    105106 
    106 #: pysvnmanager/controllers/logs.py:69 
     107#: pysvnmanager/controllers/logs.py:72 
    107108msgid "Who" 
    108109msgstr "管理员" 
    109110 
    110 #: pysvnmanager/controllers/logs.py:70 
     111#: pysvnmanager/controllers/logs.py:73 
    111112msgid "When" 
    112113msgstr "时间" 
    113114 
    114 #: pysvnmanager/controllers/logs.py:71 
     115#: pysvnmanager/controllers/logs.py:74 
    115116msgid "Why" 
    116117msgstr "说明" 
    117118 
    118 #: pysvnmanager/controllers/logs.py:72 
     119#: pysvnmanager/controllers/logs.py:75 
    119120msgid "Compare" 
    120121msgstr "比较" 
    121122 
    122 #: pysvnmanager/controllers/logs.py:115 
     123#: pysvnmanager/controllers/logs.py:118 
    123124msgid "Page: " 
    124125msgstr "页面: " 
    125126 
    126 #: pysvnmanager/controllers/logs.py:151 
     127#: pysvnmanager/controllers/logs.py:154 
    127128msgid "Compares between" 
    128129msgstr "版本间比较" 
    129130 
    130 #: pysvnmanager/controllers/logs.py:170 
     131#: pysvnmanager/controllers/logs.py:174 
    131132#, python-format 
    132133msgid "Rollback successfully to revision: %s" 
    133134msgstr "成功回滚至版本: %s" 
    134135 
    135 #: pysvnmanager/controllers/logs.py:179 
     136#: pysvnmanager/controllers/logs.py:181 
    136137#, python-format 
    137138msgid "Rollback failed: %s" 
    138139msgstr "回滚失败: %s" 
    139140 
    140 #: pysvnmanager/controllers/repos.py:91 
     141#: pysvnmanager/controllers/repos.py:114 
    141142msgid "Installed hooks:" 
    142143msgstr "已安装插件:" 
    143144 
    144 #: pysvnmanager/controllers/repos.py:97 
     145#: pysvnmanager/controllers/repos.py:120 
    145146msgid "Id" 
    146147msgstr "Id" 
    147148 
    148 #: pysvnmanager/controllers/repos.py:98 
     149#: pysvnmanager/controllers/repos.py:121 
    149150msgid "Plugin name" 
    150151msgstr "插件名称" 
    151152 
    152 #: pysvnmanager/controllers/repos.py:99 
    153 #: pysvnmanager/hooks/plugins/__init__.py:330 
     153#: pysvnmanager/controllers/repos.py:122 
     154#: pysvnmanager/hooks/plugins/__init__.py:326 
    154155msgid "Type" 
    155156msgstr "类型" 
    156157 
    157 #: pysvnmanager/controllers/repos.py:113 
     158#: pysvnmanager/controllers/repos.py:136 
    158159msgid "Remove selected hooks" 
    159160msgstr "删除选择的插件" 
    160161 
    161 #: pysvnmanager/controllers/repos.py:136 
     162#: pysvnmanager/controllers/repos.py:161 
    162163#, python-format 
    163164msgid "" 
     
    168169"%(msg)s" 
    169170 
    170 #: pysvnmanager/controllers/repos.py:139 
     171#: pysvnmanager/controllers/repos.py:164 
    171172#, python-format 
    172173msgid "Apply plugin '%(plugin)s' on '%(repos)s' success." 
    173174msgstr "成功启用版本库'%(repos)s'的插件'%(plugin)s'。 " 
    174175 
    175 #: pysvnmanager/controllers/repos.py:160 
     176#: pysvnmanager/controllers/repos.py:186 
    176177#, python-format 
    177178msgid "" 
     
    182183"%(msg)s" 
    183184 
    184 #: pysvnmanager/controllers/repos.py:163 
     185#: pysvnmanager/controllers/repos.py:189 
    185186#, python-format 
    186187msgid "Delete plugin '%(plugin)s' on '%(repos)s' success." 
    187188msgstr "成功删除版本库'%(repos)s'的插件'%(plugin)s'。" 
    188189 
    189 #: pysvnmanager/controllers/repos.py:166 
     190#: pysvnmanager/controllers/repos.py:192 
    190191#, python-format 
    191192msgid "No plugin has been deleted for '%(repos)s'." 
    192193msgstr "未删除版本库'%(repos)s'的插件。" 
    193194 
    194 #: pysvnmanager/controllers/repos.py:175 
     195#: pysvnmanager/controllers/repos.py:202 
    195196#, python-format 
    196197msgid "" 
     
    201202"%(msg)s" 
    202203 
    203 #: pysvnmanager/controllers/repos.py:178 
     204#: pysvnmanager/controllers/repos.py:205 
    204205#, python-format 
    205206msgid "Create repository '%(repos)s' success." 
    206207msgstr "成功创建版本库'%(repos)s'。" 
    207208 
    208 #: pysvnmanager/controllers/repos.py:191 
     209#: pysvnmanager/controllers/repos.py:221 
    209210#, python-format 
    210211msgid "" 
     
    215216"%(msg)s" 
    216217 
    217 #: pysvnmanager/controllers/repos.py:194 
     218#: pysvnmanager/controllers/repos.py:224 
    218219#, python-format 
    219220msgid "Delete blank repository '%(repos)s' success." 
    220221msgstr "成功删除版本库'%(repos)s'。" 
    221222 
    222 #: pysvnmanager/controllers/role.py:120 
     223#: pysvnmanager/controllers/role.py:125 
    223224#, python-format 
    224225msgid "User %(user)s changed group: %(grp)s. (rev:%(rev)s)" 
    225226msgstr "用户 %(user)s 修改用户组: %(grp)s。(rev:%(rev)s)" 
    226227 
    227 #: pysvnmanager/controllers/role.py:140 
     228#: pysvnmanager/controllers/role.py:146 
    228229#, python-format 
    229230msgid "User %(user)s delete group: %(grp)s. (rev:%(rev)s)" 
    230231msgstr "用户 %(user)s 删除用户组: %(grp)s。(rev:%(rev)s)" 
    231232 
    232 #: pysvnmanager/controllers/role.py:162 
     233#: pysvnmanager/controllers/role.py:169 
    233234#, python-format 
    234235msgid "User %(user)s changed alias: %(alias)s. (rev:%(rev)s)" 
    235236msgstr "用户 %(user)s 修改别名: %(alias)s。(rev:%(rev)s)" 
    236237 
    237 #: pysvnmanager/controllers/role.py:182 
     238#: pysvnmanager/controllers/role.py:190 
    238239#, python-format 
    239240msgid "User %(user)s delete alias: %(alias)s. (rev:%(rev)s,%(msg)s)" 
    240241msgstr "用户 %(user)s 删除别名: %(alias)s。(rev:%(rev)s,%(msg)s)" 
    241242 
    242 #: pysvnmanager/controllers/security.py:52 
     243#: pysvnmanager/controllers/security.py:50 
    243244#, python-format 
    244245msgid "User %s logged in" 
    245246msgstr "用户 %s 登录" 
    246247 
    247 #: pysvnmanager/controllers/security.py:63 
     248#: pysvnmanager/controllers/security.py:61 
    248249#, python-format 
    249250msgid "Login failed for user: %s" 
    250251msgstr "以 %s 身份登录失败" 
    251252 
    252 #: pysvnmanager/controllers/security.py:71 
     253#: pysvnmanager/controllers/security.py:69 
    253254#, python-format 
    254255msgid "User %s logged out" 
     
    334335#: pysvnmanager/hooks/plugins/EmailNotify.py:89 
    335336#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:65 
     337#: pysvnmanager/hooks/plugins/TracPostCommit.py:66 
    336338msgid "Current configuration" 
    337339msgstr "当前设置" 
     
    346348 
    347349#: pysvnmanager/hooks/plugins/CommitLogCheck.py:72 
    348 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:111 
     350#: pysvnmanager/hooks/plugins/CommitLogCheck.py:110 
    349351msgid "Minimal size of commit log: " 
    350352msgstr "提交说明长度检查,最少:" 
    351353 
    352354#: pysvnmanager/hooks/plugins/CommitLogCheck.py:77 
    353 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:117 
     355#: pysvnmanager/hooks/plugins/CommitLogCheck.py:115 
    354356msgid "Pattern which commit log must match against: " 
    355357msgstr "提交说明必须与该模板匹配:" 
     
    361363#: pysvnmanager/hooks/plugins/CommitLogCheck.py:99 
    362364#: 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 
    364367msgid "Fill this form" 
    365368msgstr "填写表单" 
     
    371374#: pysvnmanager/hooks/plugins/CommitLogCheck.py:106 
    372375#: 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 
    374378msgid "Enable" 
    375379msgstr "启用" 
     
    377381#: pysvnmanager/hooks/plugins/CommitLogCheck.py:108 
    378382#: 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 
    380385msgid "Disable" 
    381386msgstr "关闭" 
    382387 
    383 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:123 
     388#: pysvnmanager/hooks/plugins/CommitLogCheck.py:121 
    384389msgid "Pattern which commit log must <b>NOT</b> match against: " 
    385390msgstr "提交说明<b>不能</b>出现类似内容:" 
    386391 
    387 #: pysvnmanager/hooks/plugins/CommitLogCheck.py:156 
     392#: pysvnmanager/hooks/plugins/CommitLogCheck.py:154 
    388393msgid "Commit log size must > 0." 
    389394msgstr "提交说明最小长度阈值必须大于零。" 
     
    461466msgstr "启用邮件通知。" 
    462467 
    463 #: pysvnmanager/hooks/plugins/EmailNotify.py:125 
     468#: pysvnmanager/hooks/plugins/EmailNotify.py:124 
    464469msgid "Input email notify configurations: " 
    465470msgstr "输入邮件通知配置参数: " 
    466471 
    467 #: pysvnmanager/hooks/plugins/EmailNotify.py:155 
    468 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:131 
     472#: pysvnmanager/hooks/plugins/EmailNotify.py:154 
    469473msgid "Wrong configuration." 
    470474msgstr "错误的配置" 
     
    503507msgstr "只读镜像关闭。" 
    504508 
    505 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:71 
     509#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:73 
    506510msgid "Admin user: " 
    507511msgstr "管理员: " 
    508512 
    509 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:93 
     513#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:95 
    510514msgid "Enable readonly mirror: " 
    511515msgstr "启用只读镜像:" 
    512516 
    513 #: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:101 
     517#: pysvnmanager/hooks/plugins/ReadonlySvnMirror.py:102 
    514518msgid "Svnsync administrator: " 
    515519msgstr "Svnsync 管理员:" 
    516520 
     521#: pysvnmanager/hooks/plugins/TracPostCommit.py:27 
     522msgid "Trac integration with subversion's post commit hook." 
     523msgstr "Trac 与 SVN 整合。" 
     524 
     525#: pysvnmanager/hooks/plugins/TracPostCommit.py:33 
     526msgid "" 
     527"Integrate subversion with trac: Commit log of subversion appends to trac " 
     528"tickets if subversion commit log contains ticket id." 
     529msgstr "" 
     530"整合 SVN 与 trac: 如果 subversion 的提交说明包含 ticket id,则更新对应 trac 实例的 ticket " 
     531"状态,将提交说明附加到 ticket 后。" 
     532 
     533#: pysvnmanager/hooks/plugins/TracPostCommit.py:68 
     534msgid "Trac post commit hook is enabled." 
     535msgstr "Trac 整合插件已经启用。" 
     536 
     537#: pysvnmanager/hooks/plugins/TracPostCommit.py:70 
     538msgid "Trac post commit hook is disabled." 
     539msgstr "Trac 整合插件已经禁用。" 
     540 
     541#: pysvnmanager/hooks/plugins/TracPostCommit.py:72 
     542#: pysvnmanager/hooks/plugins/TracPostCommit.py:105 
     543msgid "Trac environment location: " 
     544msgstr "Trac 环境路径:" 
     545 
     546#: pysvnmanager/hooks/plugins/TracPostCommit.py:74 
     547msgid "Repository name in trac: " 
     548msgstr "此版本库 trac 中的名称: " 
     549 
     550#: pysvnmanager/hooks/plugins/TracPostCommit.py:76 
     551msgid "Fixed ticket's status: " 
     552msgstr "标记为修复的ticket状态: " 
     553 
     554#: pysvnmanager/hooks/plugins/TracPostCommit.py:98 
     555msgid "Enable trac post commit hook: " 
     556msgstr "启用 trac 整合插件:" 
     557 
     558#: pysvnmanager/hooks/plugins/TracPostCommit.py:110 
     559msgid "Repository name in trac (default is blank): " 
     560msgstr "此版本库 trac 中的名称(缺省为空): " 
     561 
     562#: pysvnmanager/hooks/plugins/TracPostCommit.py:115 
     563msgid "Fixed ticket status (default is closed): " 
     564msgstr "标记为修复的 ticket 状态 (缺省为 closed):" 
     565 
    517566#: pysvnmanager/hooks/plugins/__init__.py:111 
    518567#, python-format 
     
    526575 
    527576#: 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 
    534582msgid "Plugin not fully implemented." 
    535583msgstr "插件未完全实现。" 
    536584 
    537 #: pysvnmanager/hooks/plugins/__init__.py:329 
     585#: pysvnmanager/hooks/plugins/__init__.py:325 
    538586msgid "Name" 
    539587msgstr "名称" 
    540588 
    541 #: pysvnmanager/hooks/plugins/__init__.py:331 
     589#: pysvnmanager/hooks/plugins/__init__.py:327 
    542590msgid "Description" 
    543591msgstr "说明" 
     
    553601msgstr "版本库 %s 已经存在。" 
    554602 
    555 #: pysvnmanager/model/repos.py:166 
     603#: pysvnmanager/model/repos.py:193 
    556604#, python-format 
    557605msgid "Repos %s is not a blank repository." 
     
    590638msgstr "更新失败!您的更改是基于一个过期的版本,请先刷新再更改。" 
    591639 
    592 #: pysvnmanager/model/svnauthz.py:1502 pysvnmanager/model/svnauthz.py:1509 
    593 #: pysvnmanager/model/svnauthz.py:1513 
     640#: pysvnmanager/model/svnauthz.py:1505 pysvnmanager/model/svnauthz.py:1512 
     641#: pysvnmanager/model/svnauthz.py:1516 
    594642#, python-format 
    595643msgid "Unknown rule format: %s" 
    596644msgstr "未知策略格式: %s" 
    597645 
    598 #: pysvnmanager/model/svnauthz.py:1527 
     646#: pysvnmanager/model/svnauthz.py:1530 
    599647#, python-format 
    600648msgid "No module exist for %s:%s" 
    601649msgstr "模块不存在: %s:%s" 
    602650 
    603 #: pysvnmanager/model/svnauthz.py:1637 
     651#: pysvnmanager/model/svnauthz.py:1640 
    604652#, python-format 
    605653msgid "Alias %s is referenced by group %s." 
    606654msgstr "别名 %s 为用户组 %s 引用。" 
    607655 
    608 #: pysvnmanager/model/svnauthz.py:1649 
     656#: pysvnmanager/model/svnauthz.py:1652 
    609657#, python-format 
    610658msgid "%s is referenced by [%s]." 
    611659msgstr "%s 在 [%s] 中被引用。" 
    612660 
    613 #: pysvnmanager/model/svnauthz.py:1785 
     661#: pysvnmanager/model/svnauthz.py:1788 
    614662#, python-format 
    615663msgid "User %(username)s has Full (RW) rights for module %(repos)s:%(path)s" 
    616664msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有完全权限 (RW)" 
    617665 
    618 #: pysvnmanager/model/svnauthz.py:1787 
     666#: pysvnmanager/model/svnauthz.py:1790 
    619667#, python-format 
    620668msgid "User %(username)s has ReadOnly (RO) rights for module %(repos)s:%(path)s" 
    621669msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s 具有只读权限 (RO)" 
    622670 
    623 #: pysvnmanager/model/svnauthz.py:1789 
     671#: pysvnmanager/model/svnauthz.py:1792 
    624672#, python-format 
    625673msgid "User %(username)s can *NOT* access to module %(repos)s:%(path)s" 
    626674msgstr "用户 %(username)s 对模组 %(repos)s:%(path)s *没有* 访问权限 (XX)" 
    627675 
    628 #: pysvnmanager/model/svnauthz.py:1829 
     676#: pysvnmanager/model/svnauthz.py:1832 
    629677#, python-format 
    630678msgid "" 
     
    645693"\n" 
    646694 
    647 #: pysvnmanager/model/svnauthz.py:1848 
     695#: pysvnmanager/model/svnauthz.py:1851 
    648696#, python-format 
    649697msgid "" 
     
    694742#: pysvnmanager/templates/base.mako:35 
    695743#: pysvnmanager/templates/authz/index.mako:5 
    696 #: pysvnmanager/templates/authz/index.mako:590 
     744#: pysvnmanager/templates/authz/index.mako:592 
    697745msgid "ACL management" 
    698746msgstr "权限控制" 
     
    708756msgstr "修改日志" 
    709757 
     758#: pysvnmanager/templates/base.mako:38 
     759msgid "Welcome" 
     760msgstr "欢迎," 
     761 
    710762#: pysvnmanager/templates/base.mako:39 
    711763msgid "Logout" 
     
    721773 
    722774#: pysvnmanager/templates/authz/index.mako:171 
    723 #: pysvnmanager/templates/authz/index.mako:664 
     775#: pysvnmanager/templates/authz/index.mako:668 
    724776msgid "Full" 
    725777msgstr "完全权限" 
    726778 
    727779#: pysvnmanager/templates/authz/index.mako:175 
    728 #: pysvnmanager/templates/authz/index.mako:665 
     780#: pysvnmanager/templates/authz/index.mako:669 
    729781msgid "Denied" 
    730782msgstr "禁用" 
     
    738790msgstr "未知权限: " 
    739791 
    740 #: pysvnmanager/templates/authz/index.mako:472 
     792#: pysvnmanager/templates/authz/index.mako:473 
     793msgid "Please input repository name." 
     794msgstr "请输入版本库名称。" 
     795 
     796#: pysvnmanager/templates/authz/index.mako:479 
     797msgid "Save failed." 
     798msgstr "保存失败。" 
     799 
     800#: pysvnmanager/templates/authz/index.mako:485 
    741801msgid "Please input module path." 
    742802msgstr "请输入模组路径。" 
    743803 
    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 
    753805msgid "Update ACL failed:" 
    754806msgstr "更新ACL失败:" 
    755807 
    756 #: pysvnmanager/templates/authz/index.mako:508 
     808#: pysvnmanager/templates/authz/index.mako:510 
    757809msgid "Update ACL successfully." 
    758810msgstr "成功更新ACL。" 
    759811 
    760 #: pysvnmanager/templates/authz/index.mako:529 
     812#: pysvnmanager/templates/authz/index.mako:531 
    761813msgid "No path selected." 
    762814msgstr "未选择路径。" 
    763815 
    764 #: pysvnmanager/templates/authz/index.mako:534 
     816#: pysvnmanager/templates/authz/index.mako:536 
    765817msgid "Are you sure to delete module:" 
    766818msgstr "您确认要删除模组:" 
    767819 
    768 #: pysvnmanager/templates/authz/index.mako:536 
     820#: pysvnmanager/templates/authz/index.mako:538 
    769821#: pysvnmanager/templates/role/index.mako:446 
    770822#: pysvnmanager/templates/role/index.mako:531 
     
    772824msgstr "点击 OK 继续,或者点击取消" 
    773825 
    774 #: pysvnmanager/templates/authz/index.mako:557 
     826#: pysvnmanager/templates/authz/index.mako:559 
    775827msgid "Can not delete module " 
    776828msgstr "无法删除模组 " 
    777829 
    778 #: pysvnmanager/templates/authz/index.mako:562 
     830#: pysvnmanager/templates/authz/index.mako:564 
    779831msgid "Successfully delete module:" 
    780832msgstr "成功删除模组:" 
    781833 
    782 #: pysvnmanager/templates/authz/index.mako:597 
     834#: pysvnmanager/templates/authz/index.mako:599 
    783835#: pysvnmanager/templates/repos/hooks.mako:188 
    784836msgid "Repository:" 
    785837msgstr "版本库:" 
    786838 
    787 #: pysvnmanager/templates/authz/index.mako:600 
     839#: pysvnmanager/templates/authz/index.mako:603 
    788840msgid "New repository" 
    789841msgstr "新版本库" 
    790842 
    791 #: pysvnmanager/templates/authz/index.mako:604 
     843#: pysvnmanager/templates/authz/index.mako:608 
    792844msgid "Repository Name:" 
    793845msgstr "版本库名称:" 
    794846 
    795 #: pysvnmanager/templates/authz/index.mako:609 
     847#: pysvnmanager/templates/authz/index.mako:613 
    796848msgid "Administrators:" 
    797849msgstr "管理员:" 
    798850 
    799 #: pysvnmanager/templates/authz/index.mako:621 
     851#: pysvnmanager/templates/authz/index.mako:625 
    800852msgid "Module:" 
    801853msgstr "模组:" 
    802854 
    803 #: pysvnmanager/templates/authz/index.mako:624 
     855#: pysvnmanager/templates/authz/index.mako:628 
    804856msgid "New module" 
    805857msgstr "新模组" 
    806858 
    807 #: pysvnmanager/templates/authz/index.mako:630 
     859#: pysvnmanager/templates/authz/index.mako:634 
    808860msgid "Module Path:" 
    809861msgstr "模组路径:" 
    810862 
    811 #: pysvnmanager/templates/authz/index.mako:644 
     863#: pysvnmanager/templates/authz/index.mako:648 
    812864msgid "ACL" 
    813865msgstr "ACL" 
    814866 
    815 #: pysvnmanager/templates/authz/index.mako:649 
     867#: pysvnmanager/templates/authz/index.mako:653 
    816868msgid "Users" 
    817869msgstr "用户" 
    818870 
    819 #: pysvnmanager/templates/authz/index.mako:663 
     871#: pysvnmanager/templates/authz/index.mako:667 
    820872msgid "ReadOnly" 
    821873msgstr "只读" 
    822874 
    823 #: pysvnmanager/templates/authz/index.mako:678 
    824 #: pysvnmanager/templates/role/index.mako:711 
     875#: pysvnmanager/templates/authz/index.mako:682 
     876#: pysvnmanager/templates/role/index.mako:721 
    825877msgid "Save" 
    826878msgstr "保存" 
    827879 
    828 #: pysvnmanager/templates/authz/index.mako:679 
    829 #: pysvnmanager/templates/role/index.mako:712 
     880#: pysvnmanager/templates/authz/index.mako:683 
     881#: pysvnmanager/templates/role/index.mako:722 
    830882msgid "Delete" 
    831883msgstr "删除" 
    832884 
    833 #: pysvnmanager/templates/authz/index.mako:680 
    834 #: pysvnmanager/templates/role/index.mako:713 
     885#: pysvnmanager/templates/authz/index.mako:684 
     886#: pysvnmanager/templates/role/index.mako:723 
    835887msgid "Cancel" 
    836888msgstr "取消" 
     
    940992msgstr "版本库名称:" 
    941993 
    942 #: pysvnmanager/templates/repos/hooks.mako:191 
     994#: pysvnmanager/templates/repos/hooks.mako:192 
    943995msgid "Add repository" 
    944996msgstr "添加版本库" 
    945997 
    946 #: pysvnmanager/templates/repos/hooks.mako:192 
     998#: pysvnmanager/templates/repos/hooks.mako:193 
    947999#: pysvnmanager/templates/repos/remove.mako:5 
    9481000#: pysvnmanager/templates/repos/remove.mako:49 
     
    9511003msgstr "删除版本库" 
    9521004 
    953 #: pysvnmanager/templates/repos/hooks.mako:197 
     1005#: pysvnmanager/templates/repos/hooks.mako:199 
    9541006msgid "Uninstalled hooks:" 
    9551007msgstr "尚未安装的插件:" 
    9561008 
    957 #: pysvnmanager/templates/repos/hooks.mako:223 
     1009#: pysvnmanager/templates/repos/hooks.mako:225 
    9581010msgid "Install this plugin" 
    9591011msgstr "安装此插件" 
    9601012 
    9611013#: pysvnmanager/templates/role/index.mako:5 
    962 #: pysvnmanager/templates/role/index.mako:625 
     1014#: pysvnmanager/templates/role/index.mako:633 
    9631015msgid "Role Management" 
    9641016msgstr "角色管理" 
     
    10041056msgstr "成功删除别名。" 
    10051057 
    1006 #: pysvnmanager/templates/role/index.mako:632 
     1058#: pysvnmanager/templates/role/index.mako:640 
    10071059msgid "Select a role name:" 
    10081060msgstr "选择一个角色:" 
    10091061 
    1010 #: pysvnmanager/templates/role/index.mako:636 
     1062#: pysvnmanager/templates/role/index.mako:645 
    10111063msgid "New Group" 
    10121064msgstr "新用户组" 
    10131065 
    1014 #: pysvnmanager/templates/role/index.mako:637 
     1066#: pysvnmanager/templates/role/index.mako:646 
    10151067msgid "New Alias" 
    10161068msgstr "新别名" 
    10171069 
    1018 #: pysvnmanager/templates/role/index.mako:641 
     1070#: pysvnmanager/templates/role/index.mako:651 
    10191071msgid "New group name:" 
    10201072msgstr "新用户组名称:" 
    10211073 
    1022 #: pysvnmanager/templates/role/index.mako:645 
     1074#: pysvnmanager/templates/role/index.mako:655 
    10231075msgid "New alias name:" 
    10241076msgstr "新别名名称:" 
    10251077 
    1026 #: pysvnmanager/templates/role/index.mako:657 
     1078#: pysvnmanager/templates/role/index.mako:667 
    10271079msgid "Members list" 
    10281080msgstr "成员列表" 
    10291081 
    1030 #: pysvnmanager/templates/role/index.mako:662 
     1082#: pysvnmanager/templates/role/index.mako:672 
    10311083msgid "Other users" 
    10321084msgstr "其他用户" 
    10331085 
    1034 #: pysvnmanager/templates/role/index.mako:681 
     1086#: pysvnmanager/templates/role/index.mako:691 
    10351087msgid "Ignore recursive" 
    10361088msgstr "忽略组间循环引用" 
    10371089 
    1038 #: pysvnmanager/templates/role/index.mako:693 
     1090#: pysvnmanager/templates/role/index.mako:703 
    10391091msgid "User name:" 
    10401092msgstr "用户名:" 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/lib/base.py

    r50 r83  
    4040#log = logging.getLogger(__name__) 
    4141 
    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 msg 
    48  
    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 msg 
    55  
    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  
    6442class BaseController(WSGIController): 
    6543    requires_auth = [] 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/model/auth/http.py

    r22 r83  
    11# -*- coding: utf-8 -*- 
    22 
    3 from crypt import crypt 
     3try: 
     4    from crypt import crypt 
     5except ImportError: 
     6    # Native crypt is not supported by Windows, use fcrypt instead. 
     7    from fcrypt import crypt 
    48 
    59def htpasswd_login(username, password, config): 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/model/rcsbackup.py

    r50 r83  
    2828log = logging.getLogger(__name__) 
    2929 
     30sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))) 
     31from pysvnmanager.lib.text import to_unicode, to_utf8 
     32 
    3033#reload(sys) # in Python2.5, method sys.setdefaultencoding  
    3134            #will be delete after initialize. we need reload it. 
     
    3740CMD_RLOG="RCSINIT= rlog" 
    3841CMD_RCSDIFF="RCSINIT= rcsdiff" 
    39  
    4042 
    4143def is_rcs_exist(wcfile): 
     
    4648        rcsfile = wcfile+',v' 
    4749    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 msg 
    55  
    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 msg 
    6250 
    6351def backup(wcfile, comment='', user=''): 
     
    7159        comment = "no message." 
    7260     
    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) 
    7664     
    7765    cmd = [] 
     
    11199    buff = os.popen(cmd).read().strip() 
    112100    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)) 
    114102 
    115103 
     
    124112    cmd = '%(cmd)s %(opts)s -q "%(file)s"' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
    125113    buff = os.popen(cmd).read().strip() 
    126     return get_unicode(buff) 
     114    return to_unicode(buff) 
    127115 
    128116def differ(filename, rev1="", rev2=""): 
    129     filename=get_utf8(filename) 
     117    filename=to_utf8(filename) 
    130118    opts="" 
    131119    if rev1 and rev2: 
     
    137125    log.debug('Command: '+cmd) 
    138126    buff = os.popen(cmd).read() 
    139     return get_unicode(buff) 
     127    return to_unicode(buff) 
    140128 
    141129class RcsLog(object): 
     
    291279            commit_time = "" 
    292280            if m: 
    293                 commit_time = get_unicode(m.group(1)) 
     281                commit_time = to_unicode(m.group(1)) 
    294282            else: 
    295283                log.error("not find date in line: %s" % lines[1]) 
     
    300288            commit_author = "" 
    301289            if m: 
    302                 commit_author = get_unicode(eval("'%s'" % m.group(1))) 
     290                commit_author = to_unicode(eval("'%s'" % m.group(1))) 
    303291            else: 
    304292                log.error("not find author in line: %s" % lines[1]) 
     
    306294             
    307295            # logs... 
    308             commit_log = get_unicode('\n'.join(lines[2:])) 
     296            commit_log = to_unicode('\n'.join(lines[2:])) 
    309297             
    310298            self.revs.append({'revision':commit_revision, 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/model/repos.py

    r50 r83  
    9090     
    9191    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): 
    92116        import distutils.version as dv 
    93117        version = '.'.join(self.svnversion()) 
     
    112136        if os.path.exists(dest): 
    113137            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)) 
    117144        for root, dirs, files in os.walk(src): 
    118145            targetdir = root.replace(src, dest, 1) 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/authz/index.mako

    r45 r83  
    468468        } 
    469469 
    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 =='') 
    471484        { 
    472485                alert('${_("Please input module path.")}'); 
    473486                return false; 
    474487        } 
    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 
    487489        var params = {reposname:reposname, admins:admins, path:path, rules:rules, mode1:mode1, mode2:mode2, revision:revision}; 
    488490        showNoticesPopup(); 
     
    598600    <select name="repos_list" size="1" onChange='repos_changed()'> 
    599601    </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 
    601605</DIV> 
    602606 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/base.mako

    r45 r83  
    3636          <td>${h.link_to(_("Repos management"), h.url(controller="repos", id=None))}</td> 
    3737          <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> 
    3939          <td>${h.link_to(_("Logout"), h.url(controller="logout", id=None))}</td> 
    4040      </tr> 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/logs/view.mako

    r39 r83  
    1414 
    1515<form name="main_form" action="${h.url_for(action='rollback')}" onsubmit="return confirm('${_("Rollback to this revision, are you sure?")}');"> 
    16 % if not c.rollback_enabled: 
     16% if c.rollback_enabled: 
    1717  <input type="submit" name="submit" value='${_("Rollback to this revision")}'> 
    1818  &nbsp;&nbsp;&nbsp;&nbsp; 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/repos/hooks.mako

    r46 r83  
    189189    <select name="repos_list" size="1" onChange='repos_changed()'> 
    190190    </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 
    193195</DIV> 
    194196 
  • branches/0.2-pylons_0.9.6.2/pysvnmanager/templates/role/index.mako

    r45 r83  
    602602function enable_save_btn() 
    603603{ 
     604% if c.is_super_user: 
    604605        document.main_form.save_btn.disabled = false; 
     606% else: 
     607    ; 
     608% endif  
    605609} 
    606610 
     
    612616function enable_delete_btn() 
    613617{ 
     618% if c.is_super_user: 
    614619        document.main_form.delete_btn.disabled = false; 
     620% else: 
     621    ; 
     622% endif  
    615623} 
    616624 
     
    634642        ${h.options_for_select(role_list_opts)} 
    635643    </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 
    638648</div> 
    639649 
     
    709719<div id='action_box' style="position:relative;" class=gainlayout> 
    710720        <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"}> 
    714724</div> 
    715725<!-- end: action_box -->