Changeset 38

Show
Ignore:
Timestamp:
2008年07月31日 17时48分57秒 (4 years ago)
Author:
jiangx
Message:

Fix #7: bugfix: remove -L option from rlog command; add templates for rollback view.

Location:
trunk
Files:
1 added
10 modified

Legend:

Unmodified
Added
Removed
  • trunk/config/Makefile

    r27 r38  
    88        @-rm $(CONFFILE) >/dev/null 2>&1 
    99        @-rm localconfig.pyc >/dev/null 2>&1 
    10         @-rm -f *,v RCS/*,v 2>&1 
     10        @-rm -f *,v RCS/*test,v 2>&1 
    1111 
    1212%: $(SRCDIR)/%.in 
  • trunk/pySvnManager.egg-info/SOURCES.txt

    r37 r38  
    6464pysvnmanager/templates/login/logout.mako 
    6565pysvnmanager/templates/logs/index.mako 
     66pysvnmanager/templates/logs/rollback.mako 
    6667pysvnmanager/templates/logs/view.mako 
    6768pysvnmanager/templates/role/index.mako 
  • trunk/pysvnmanager/controllers/logs.py

    r36 r38  
    6969            'who' : logs[i].get('author',''),  
    7070            'when': logs[i].get('date',''),  
    71             'why' : h.link_to(logs[i].get('log',''), h.url(action='view', id=logs[i].get('revision',''))),  
     71            'why' : h.link_to(logs[i].get('log',''), \ 
     72                              h.url(action='view', id=logs[i].get('revision','')), \ 
     73                              popup=['view_logs'] 
     74                              ),  
    7275            } 
    7376         
     
    138141    def view(self, id): 
    139142        assert id and isinstance(id, basestring) 
    140         c.contents = unicode(self.rcslog.cat(id), 'utf-8') 
     143        c.contents = self.rcslog.cat(id) 
    141144        c.log = self.rcslog.get_logs(id, id)[0] 
    142145        return render('/logs/view.mako') 
    143146     
    144147    def rollback(self, id): 
    145         msg = _("Rollback to revision: %s" % id) 
     148        log_message = _("Rollback successfully to revision: %s") % id 
    146149        try: 
    147150            assert id and isinstance(id, basestring) 
    148151            self.rcslog.restore(id) 
    149             self.rcslog.backup(comment=msg, user=self.login_as) 
     152            self.rcslog.backup(comment=log_message, user=self.login_as) 
    150153        except Exception, e: 
    151             return e 
     154            msg = "%s" % e 
     155            if isinstance(msg, str): 
     156                msg = unicode(msg, 'utf-8') 
     157            c.msg = _("Rollback failed: %s") % msg 
    152158        else: 
    153             return msg 
     159            c.msg = log_message 
     160 
     161        return render('/logs/rollback.mako') 
     162     
  • trunk/pysvnmanager/i18n/en/LC_MESSAGES/pysvnmanager.po

    r36 r38  
    1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    1111"POT-Creation-Date: 2008-07-03 22:14+0800\n" 
    12 "PO-Revision-Date: 2008-07-31 01:18+0800\n" 
     12"PO-Revision-Date: 2008-07-31 09:21+0800\n" 
    1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 
    1414"Language-Team: en <LL@li.org>\n" 
     
    117117msgstr "" 
    118118 
    119 #: pysvnmanager/controllers/logs.py:94 
     119#: pysvnmanager/controllers/logs.py:97 
    120120msgid "Page: " 
    121121msgstr "" 
    122122 
    123 #: pysvnmanager/controllers/logs.py:130 
     123#: pysvnmanager/controllers/logs.py:133 
    124124msgid "Compares between" 
    125125msgstr "" 
    126126 
    127 #: pysvnmanager/controllers/logs.py:145 
    128 #, python-format 
    129 msgid "Rollback to revision: %s" 
     127#: pysvnmanager/controllers/logs.py:148 
     128#, python-format 
     129msgid "Rollback successfully to revision: %s" 
     130msgstr "" 
     131 
     132#: pysvnmanager/controllers/logs.py:157 
     133#, python-format 
     134msgid "Rollback failed: %s" 
    130135msgstr "" 
    131136 
     
    263268msgstr "" 
    264269 
    265 #: pysvnmanager/templates/base.mako:84 
     270#: pysvnmanager/templates/base.mako:11 
    266271msgid "Loading, please wait..." 
    267272msgstr "" 
    268273 
    269 #: pysvnmanager/templates/base.mako:88 
     274#: pysvnmanager/templates/base.mako:27 
    270275msgid "Check permissions" 
    271276msgstr "" 
    272277 
    273 #: pysvnmanager/templates/base.mako:89 
     278#: pysvnmanager/templates/base.mako:28 
    274279msgid "Role management" 
    275280msgstr "" 
    276281 
    277 #: pysvnmanager/templates/base.mako:90 
     282#: pysvnmanager/templates/base.mako:29 
    278283#: pysvnmanager/templates/authz/index.mako:5 
    279284#: pysvnmanager/templates/authz/index.mako:603 
     
    281286msgstr "" 
    282287 
    283 #: pysvnmanager/templates/base.mako:91 
     288#: pysvnmanager/templates/base.mako:30 
    284289msgid "Logs" 
    285290msgstr "" 
    286291 
    287 #: pysvnmanager/templates/base.mako:93 
     292#: pysvnmanager/templates/base.mako:32 
    288293msgid "Logout" 
    289294msgstr "" 
     
    475480#: pysvnmanager/templates/logs/index.mako:5 
    476481#: pysvnmanager/templates/logs/index.mako:60 
    477 #: pysvnmanager/templates/logs/view.mako:5 
     482#: pysvnmanager/templates/logs/rollback.mako:4 
     483#: pysvnmanager/templates/logs/view.mako:4 
    478484msgid "Administration logs" 
    479485msgstr "" 
     
    483489msgstr "" 
    484490 
     491#: pysvnmanager/templates/logs/rollback.mako:9 
     492msgid "Rollback" 
     493msgstr "" 
     494 
     495#: pysvnmanager/templates/logs/rollback.mako:14 
     496#: pysvnmanager/templates/logs/view.mako:18 
     497msgid "Close" 
     498msgstr "" 
     499 
     500#: pysvnmanager/templates/logs/view.mako:9 
     501msgid "View history, revision" 
     502msgstr "" 
     503 
     504#: pysvnmanager/templates/logs/view.mako:15 
     505msgid "Rollback to this revision, are you sure?" 
     506msgstr "" 
     507 
    485508#: pysvnmanager/templates/logs/view.mako:16 
    486 msgid "View history, revision" 
    487 msgstr "" 
    488  
    489 #: pysvnmanager/templates/logs/view.mako:23 
    490509msgid "Rollback to this revision" 
    491510msgstr "" 
  • trunk/pysvnmanager/i18n/pysvnmanager.pot

    r36 r38  
    77msgid "" 
    88msgstr "" 
    9 "Project-Id-Version: pySvnManager 0.1.2\n" 
     9"Project-Id-Version: pySvnManager 0.1.3\n" 
    1010"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    11 "POT-Creation-Date: 2008-07-31 01:18+0800\n" 
     11"POT-Creation-Date: 2008-07-31 09:21+0800\n" 
    1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
    1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 
     
    110110msgstr "" 
    111111 
    112 #: pysvnmanager/controllers/logs.py:94 
     112#: pysvnmanager/controllers/logs.py:97 
    113113msgid "Page: " 
    114114msgstr "" 
    115115 
    116 #: pysvnmanager/controllers/logs.py:130 
     116#: pysvnmanager/controllers/logs.py:133 
    117117msgid "Compares between" 
    118118msgstr "" 
    119119 
    120 #: pysvnmanager/controllers/logs.py:145 
    121 #, python-format 
    122 msgid "Rollback to revision: %s" 
     120#: pysvnmanager/controllers/logs.py:148 
     121#, python-format 
     122msgid "Rollback successfully to revision: %s" 
     123msgstr "" 
     124 
     125#: pysvnmanager/controllers/logs.py:157 
     126#, python-format 
     127msgid "Rollback failed: %s" 
    123128msgstr "" 
    124129 
     
    256261msgstr "" 
    257262 
    258 #: pysvnmanager/templates/base.mako:84 
     263#: pysvnmanager/templates/base.mako:11 
    259264msgid "Loading, please wait..." 
    260265msgstr "" 
    261266 
    262 #: pysvnmanager/templates/base.mako:88 
     267#: pysvnmanager/templates/base.mako:27 
    263268msgid "Check permissions" 
    264269msgstr "" 
    265270 
    266 #: pysvnmanager/templates/base.mako:89 
     271#: pysvnmanager/templates/base.mako:28 
    267272msgid "Role management" 
    268273msgstr "" 
    269274 
    270 #: pysvnmanager/templates/base.mako:90 pysvnmanager/templates/authz/index.mako:5 
     275#: pysvnmanager/templates/base.mako:29 pysvnmanager/templates/authz/index.mako:5 
    271276#: pysvnmanager/templates/authz/index.mako:603 
    272277msgid "ACL management" 
    273278msgstr "" 
    274279 
    275 #: pysvnmanager/templates/base.mako:91 
     280#: pysvnmanager/templates/base.mako:30 
    276281msgid "Logs" 
    277282msgstr "" 
    278283 
    279 #: pysvnmanager/templates/base.mako:93 
     284#: pysvnmanager/templates/base.mako:32 
    280285msgid "Logout" 
    281286msgstr "" 
     
    467472#: pysvnmanager/templates/logs/index.mako:5 
    468473#: pysvnmanager/templates/logs/index.mako:60 
    469 #: pysvnmanager/templates/logs/view.mako:5 
     474#: pysvnmanager/templates/logs/rollback.mako:4 
     475#: pysvnmanager/templates/logs/view.mako:4 
    470476msgid "Administration logs" 
    471477msgstr "" 
     
    475481msgstr "" 
    476482 
     483#: pysvnmanager/templates/logs/rollback.mako:9 
     484msgid "Rollback" 
     485msgstr "" 
     486 
     487#: pysvnmanager/templates/logs/rollback.mako:14 
     488#: pysvnmanager/templates/logs/view.mako:18 
     489msgid "Close" 
     490msgstr "" 
     491 
     492#: pysvnmanager/templates/logs/view.mako:9 
     493msgid "View history, revision" 
     494msgstr "" 
     495 
     496#: pysvnmanager/templates/logs/view.mako:15 
     497msgid "Rollback to this revision, are you sure?" 
     498msgstr "" 
     499 
    477500#: pysvnmanager/templates/logs/view.mako:16 
    478 msgid "View history, revision" 
    479 msgstr "" 
    480  
    481 #: pysvnmanager/templates/logs/view.mako:23 
    482501msgid "Rollback to this revision" 
    483502msgstr "" 
  • trunk/pysvnmanager/i18n/zh/LC_MESSAGES/pysvnmanager.po

    r36 r38  
    99msgid "" 
    1010msgstr "" 
    11 "Project-Id-Version: pysvnmanager\n" 
     11"Project-Id-Version:  pysvnmanager\n" 
    1212"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" 
    1313"POT-Creation-Date: 2008-07-03 22:14+0800\n" 
    14 "PO-Revision-Date: 2008-07-31 01:20+0800\n" 
     14"PO-Revision-Date: 2008-07-31 09:21+0800\n" 
    1515"Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" 
    16 "Language-Team:  <zh@li.org>\n" 
     16"Language-Team: <zh@li.org>\n" 
    1717"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION\n" 
    1818"MIME-Version: 1.0\n" 
    19 "Content-Type: text/plain; charset=UTF-8\n" 
     19"Content-Type: text/plain; charset=utf-8\n" 
    2020"Content-Transfer-Encoding: 8bit\n" 
    2121"Generated-By: Babel 0.9.2\n" 
    22 "X-Generator: KBabel 1.11.4\n" 
    2322 
    2423#: pysvnmanager/controllers/authz.py:29 
     
    120119msgstr "比较" 
    121120 
    122 #: pysvnmanager/controllers/logs.py:94 
     121#: pysvnmanager/controllers/logs.py:97 
    123122msgid "Page: " 
    124123msgstr "页面: " 
    125124 
    126 #: pysvnmanager/controllers/logs.py:130 
     125#: pysvnmanager/controllers/logs.py:133 
    127126msgid "Compares between" 
    128127msgstr "版本间比较" 
    129128 
    130 #: pysvnmanager/controllers/logs.py:145 
    131 #, python-format 
    132 msgid "Rollback to revision: %s" 
    133 msgstr "回滚至版本: %s" 
     129#: pysvnmanager/controllers/logs.py:148 
     130#, python-format 
     131msgid "Rollback successfully to revision: %s" 
     132msgstr "成功回滚至版本: %s" 
     133 
     134#: pysvnmanager/controllers/logs.py:157 
     135#, python-format 
     136msgid "Rollback failed: %s" 
     137msgstr "回滚失败: %s" 
    134138 
    135139#: pysvnmanager/controllers/role.py:103 
     
    286290"%(sep)s\n" 
    287291 
    288 #: pysvnmanager/templates/base.mako:84 
     292#: pysvnmanager/templates/base.mako:11 
    289293msgid "Loading, please wait..." 
    290294msgstr "数据加载中,请稍后..." 
    291295 
    292 #: pysvnmanager/templates/base.mako:88 
     296#: pysvnmanager/templates/base.mako:27 
    293297msgid "Check permissions" 
    294298msgstr "权限检查" 
    295299 
    296 #: pysvnmanager/templates/base.mako:89 
     300#: pysvnmanager/templates/base.mako:28 
    297301msgid "Role management" 
    298302msgstr "角色管理" 
    299303 
    300 #: pysvnmanager/templates/base.mako:90 
     304#: pysvnmanager/templates/base.mako:29 
    301305#: pysvnmanager/templates/authz/index.mako:5 
    302306#: pysvnmanager/templates/authz/index.mako:603 
     
    304308msgstr "权限控制" 
    305309 
    306 #: pysvnmanager/templates/base.mako:91 
     310#: pysvnmanager/templates/base.mako:30 
    307311msgid "Logs" 
    308312msgstr "日志" 
    309313 
    310 #: pysvnmanager/templates/base.mako:93 
     314#: pysvnmanager/templates/base.mako:32 
    311315msgid "Logout" 
    312316msgstr "登出" 
     
    498502#: pysvnmanager/templates/logs/index.mako:5 
    499503#: pysvnmanager/templates/logs/index.mako:60 
    500 #: pysvnmanager/templates/logs/view.mako:5 
     504#: pysvnmanager/templates/logs/rollback.mako:4 
     505#: pysvnmanager/templates/logs/view.mako:4 
    501506msgid "Administration logs" 
    502507msgstr "修改记录" 
     
    506511msgstr "版本比较" 
    507512 
    508 #: pysvnmanager/templates/logs/view.mako:16 
     513#: pysvnmanager/templates/logs/rollback.mako:9 
     514msgid "Rollback" 
     515msgstr "数据回滚" 
     516 
     517#: pysvnmanager/templates/logs/rollback.mako:14 
     518#: pysvnmanager/templates/logs/view.mako:18 
     519msgid "Close" 
     520msgstr "关闭" 
     521 
     522#: pysvnmanager/templates/logs/view.mako:9 
    509523msgid "View history, revision" 
    510524msgstr "查看历史, 版本" 
    511525 
    512 #: pysvnmanager/templates/logs/view.mako:23 
     526#: pysvnmanager/templates/logs/view.mako:15 
     527msgid "Rollback to this revision, are you sure?" 
     528msgstr "你确认回滚文件至此版本么?" 
     529 
     530#: pysvnmanager/templates/logs/view.mako:16 
    513531msgid "Rollback to this revision" 
    514532msgstr "回滚至此版本" 
  • trunk/pysvnmanager/model/rcsbackup.py

    r36 r38  
    9595    buff = os.popen(cmd).read().strip() 
    9696    if buff: 
    97         raise Exception, "Command: %s\nError Message: %s\n" % (cmd, buff) 
     97        raise Exception, "Command: %s\nError Message: %s\n" % (get_unicode(cmd), get_unicode(buff)) 
    9898 
    9999 
     
    108108    cmd = '%(cmd)s %(opts)s -q "%(file)s"' % {'cmd':CMD_CO, "opts":opts, "file":wcfile } 
    109109    buff = os.popen(cmd).read().strip() 
    110     return buff 
     110    return get_unicode(buff) 
    111111 
    112112def differ(filename, rev1="", rev2=""): 
     
    121121    log.debug('Command: '+cmd) 
    122122    buff = os.popen(cmd).read() 
    123     return buff 
     123    return get_unicode(buff) 
    124124 
    125125class RcsLog(object): 
     
    141141        if self.__total == 0: 
    142142            count = 0 
    143         elif self.__total == 1: 
     143        elif self.__total <= self.__log_per_page: 
    144144            count = 1 
    145145        else: 
     
    179179     
    180180    def reload(self): 
    181         cmd = '%(cmd)s -L -h -N "%(file)s"' % {'cmd':CMD_RLOG, 'file':self.__file} 
     181        cmd = '%(cmd)s -h -N "%(file)s"' % {'cmd':CMD_RLOG, 'file':self.__file} 
    182182        buff = os.popen(cmd).read().strip() 
    183          
    184183        # RCS file: 1,v 
    185184        m = self.p['rcs'].search(buff) 
     
    247246            opts="%s,%s" % (opts, rev3) 
    248247 
    249         cmd = '%(cmd)s %(opts)s -L -N "%(file)s"' % {'cmd':CMD_RLOG, 'opts':opts, 'file':self.__file} 
     248        cmd = '%(cmd)s %(opts)s -N "%(file)s"' % {'cmd':CMD_RLOG, 'opts':opts, 'file':self.__file} 
    250249        log.debug('Command: '+cmd) 
    251250        buff = os.popen(cmd).read().strip().rstrip('=').rstrip() 
  • trunk/pysvnmanager/templates/base.mako

    r31 r38  
    33  <head> 
    44    ${self.head_tags()} 
    5     ${h.javascript_include_tag(builtins=True)} 
     5    ${self.ajax_script()} 
     6  </head> 
     7  <body ${self.body_params()}> 
     8 
     9  <div id="popup_shadow" style="z-index:100;visibility:hidden;display:none;position:absolute;top:0px;width:100%;height:100%;background:#000000;opacity:0.0;filter:alpha(opacity=0);"></div> 
     10  <div id="popup_notices" style="z-index:101;border:1px solid gray;position:absolute;top:0;left:250px;visibility:hidden;display:none;background:#eeee20;"> 
     11     ${_("Loading, please wait...")} 
     12  </div> 
     13 
     14        ${self.nav_bar()} 
     15         
     16    ${next.body()} 
     17  </body> 
     18</html> 
     19 
     20<%def name="head_tags()"> 
     21    <title>Override Me!</title> 
     22</%def> 
     23 
     24<%def name="nav_bar()"> 
     25  <table> 
     26      <tr> 
     27          <td>${h.link_to(_("Check permissions"), h.url_for(controller="check", id=None))}</td> 
     28          <td>${h.link_to(_("Role management"), h.url(controller="role", id=None))}</td> 
     29          <td>${h.link_to(_("ACL management"), h.url(controller="authz", id=None))}</td> 
     30          <td>${h.link_to(_("Logs"), h.url(controller="logs", id=None))}</td> 
     31          <td>welcome ${session.get('user')}</td> 
     32          <td>${h.link_to(_("Logout"), h.url(controller="logout", id=None))}</td> 
     33      </tr> 
     34  </table> 
     35</%def> 
     36 
     37<%def name="ajax_script()"> 
     38${h.javascript_include_tag(builtins=True)} 
    639 
    740<!-- IE layout bugfix --> 
     
    75108  document.getElementById('popup_notices').style.display = 'none'; 
    76109} 
    77  
    78110</script> 
    79   </head> 
    80   <body ${self.body_params()}> 
    81  
    82   <div id="popup_shadow" style="z-index:100;visibility:hidden;display:none;position:absolute;top:0px;width:100%;height:100%;background:#000000;opacity:0.0;filter:alpha(opacity=0);"></div> 
    83   <div id="popup_notices" style="z-index:101;border:1px solid gray;position:absolute;top:0;left:250px;visibility:hidden;display:none;background:#eeee20;"> 
    84      ${_("Loading, please wait...")} 
    85   </div> 
    86   <table> 
    87       <tr> 
    88           <td>${h.link_to(_("Check permissions"), h.url(controller="check"))}</td> 
    89           <td>${h.link_to(_("Role management"), h.url(controller="role"))}</td> 
    90           <td>${h.link_to(_("ACL management"), h.url(controller="authz"))}</td> 
    91           <td>${h.link_to(_("Logs"), h.url(controller="logs"))}</td> 
    92           <td>welcome ${session.get('user')}</td> 
    93           <td>${h.link_to(_("Logout"), h.url(controller="logout"))}</td> 
    94       </tr> 
    95   </table> 
    96  
    97     ${next.body()} 
    98   </body> 
    99 </html> 
    100  
    101 <%def name="head_tags()"> 
    102     <title>Override Me!</title> 
    103111</%def> 
    104112 
  • trunk/pysvnmanager/templates/logs/view.mako

    r36 r38  
    11## -*- coding: utf-8 -*- 
    22<%inherit file="/base.mako" /> 
    3  
    43<%def name="head_tags()"> 
    54    <title>${_("Administration logs")}</title> 
    65</%def> 
    7  
    8 <SCRIPT LANGUAGE="JavaScript"> 
    9 function rollback() 
    10 { 
    11    
    12 } 
    13  
    14 </SCRIPT> 
     6<%def name="nav_bar()"></%def> 
     7<%def name="ajax_script()"></%def> 
    158 
    169<h2>${_("View history, revision")} ${c.log.get('revision')}</h2> 
     
    2013</textarea> 
    2114 
    22 <form name="main_form" action="${h.url_for(action='rollback')}"> 
    23 <input type="submit" name="submit" value='${_("Rollback to this revision")}'> 
     15<form name="main_form" action="${h.url_for(action='rollback')}" onsubmit="return confirm('${_("Rollback to this revision, are you sure?")}');"> 
     16  <input type="submit" name="submit" value='${_("Rollback to this revision")}'> 
     17  &nbsp;&nbsp;&nbsp;&nbsp; 
     18  <input type="button" name="close" value='${_("Close")}' onclick="window.close();"> 
    2419</form> 
  • trunk/pysvnmanager/tests/test_rcs_backup.py

    r36 r38  
    122122 
    123123    def testLogs(self): 
    124         for i in range(1,11): 
     124        rcslog = rcs.RcsLog(self.wcfile) 
     125        rcslog.log_per_page = 10 
     126        for i in range(1,rcslog.log_per_page+1): 
    125127            # new file, backup to r1.1 
    126128            self.writefile(i) 
    127129            rcs.backup(self.wcfile, comment="Test no. %d" % i, user="User1") 
    128          
    129         rcslog = rcs.RcsLog(self.wcfile) 
     130            rcslog.reload() 
     131            assert rcslog.total == i, rcslog.total 
     132            assert rcslog.total_page == 1, rcslog.total_page 
     133         
     134        rcslog.reload() 
    130135        assert "rcstest.txt,v" in rcslog.rcsfile, rcslog.rcsfile 
    131136        assert rcslog.head=='1.10', rcslog.head