Changeset 44

Show
Ignore:
Timestamp:
2008年08月25日 18时27分15秒 (4 years ago)
Author:
jiangx
Message:

Fix #8: add controller/view for svn repos add/remove management.

Location:
trunk
Files:
2 added
6 modified

Legend:

Unmodified
Added
Removed
  • trunk/README.txt

    r4 r44  
    1818 
    1919Then you are ready to go. 
     20 
     21Installation from Source code 
     22============================= 
     23 
     24Check source code from sourceforge.net:: 
     25 
     26    svn co https://sourceforge.net/projects/pysvnmanager/trunk pysvnmanager 
     27 
     28Make a config file as follows:: 
     29 
     30    cd pysvnmanager/config 
     31    make 
     32 
     33Compile l18n messages:: 
     34     
     35    cd pysvnmanager 
     36    python setup.py compile_catalog 
     37 
     38Start web service:: 
     39 
     40    paster serve --reload develogment.ini 
     41 
     42 
  • trunk/development.ini

    r41 r44  
    7878[logger_pysvnmanager] 
    7979level = DEBUG 
    80 handlers = 
     80handlers = console 
    8181qualname = pysvnmanager 
    8282 
  • trunk/pysvnmanager/controllers/repos.py

    r43 r44  
    66from pysvnmanager.model import repos as _repos 
    77from pysvnmanager.model import hooks as _hooks 
    8  
    98 
    109log = logging.getLogger(__name__) 
     
    3332 
    3433    def init_repos_list(self): 
     34        filter = request.params.get('filter') 
    3535        total = 0; 
    3636        msg = '' 
     
    4141        total += 1; 
    4242        for reposname in self.repos_list: 
     43            if filter=='blank' and not self.repos.is_blank_svn_repos(reposname): 
     44                continue 
    4345            msg += 'id[%d]="%s";' % (total, reposname) 
    4446            msg += 'name[%d]="%s";\n' % (total, reposname) 
    4547            total += 1; 
    4648        msg += 'total=%d;\n' % total 
    47         msg += 'revision="%s";\n' % self.authz.version 
    4849        return msg 
    4950 
    5051    def get_plugin_list(self): 
    51         reposname = request.params.get('select')         
     52        reposname = request.params.get('select') 
    5253        h = _hooks.Hooks(self.repos_root + reposname) 
    5354        total = 0; 
     
    6768     
    6869    def get_remove_hook_form_content(self): 
    69         reposname = request.params.get('select')         
     70        reposname = request.params.get('select') 
    7071        h = _hooks.Hooks(self.repos_root + reposname) 
    7172        msg = '' 
    7273        if len(h.applied_plugins) > 0: 
    73             msg += "Installed hooks:" 
     74            msg += _("Installed hooks:") 
    7475            msg += "<br>\n" 
    7576            num = 0 
     
    8586                    msg += ' - %(detail)s' % { 'detail': detail, } 
    8687                msg += '<br>\n' 
    87             msg += '<input type="submit" name="remove_hook" value="Remove selected hooks">\n' 
     88            msg += '<input type="submit" name="remove_hook" value="%s">\n' % _("Remove selected hooks") 
    8889 
    8990        return msg 
     
    105106            plugin.set_plugin(d) 
    106107        except Exception, e: 
    107             result = "Apply plugin '%(plugin)s on '%(repos)s' Failed. Error message:<br>\n%(msg)s" % { 
     108            result = _("Apply plugin '%(plugin)s on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    108109                        "plugin": pluginname, "repos":reposname, "msg": e} 
    109110        else: 
    110             result = "Apply plugin '%(plugin)s on '%(repos)s' success." % { 
     111            result = _("Apply plugin '%(plugin)s on '%(repos)s' success.") % { 
    111112                        "plugin": pluginname, "repos":reposname} 
    112113        return result 
     
    123124                    plugin.delete_plugin() 
    124125        except Exception, e: 
    125             result = "Delete plugin '%(plugin)s on '%(repos)s' Failed. Error message:<br>\n%(msg)s" % { 
     126            result = _("Delete plugin '%(plugin)s on '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
    126127                        "plugin": pluginname, "repos":reposname, "msg": e} 
    127128        else: 
    128             result = "Delete plugin '%(plugin)s on '%(repos)s' success." % { 
     129            result = _("Delete plugin '%(plugin)s on '%(repos)s' success.") % { 
    129130                        "plugin": pluginname, "repos":reposname} 
    130131        return result 
    131      
     132 
     133    def create_submit(self): 
     134        try: 
     135            d = request.params 
     136            reposname = d.get("reposname") 
     137            self.repos.create(reposname) 
     138        except Exception, e: 
     139            result = _("Create repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
     140                        "repos":reposname, "msg": e} 
     141        else: 
     142            result = _("Create repository '%(repos)s' success.") % {"repos":reposname} 
     143        return result 
     144         
    132145    def create(self): 
    133146        return render('/repos/create.mako') 
    134147 
     148 
     149    def remove_submit(self): 
     150        try: 
     151            d = request.params 
     152            reposname = d.get("repos_list") 
     153            self.repos.delete(reposname) 
     154        except Exception, e: 
     155            result = _("Delete repository '%(repos)s' Failed. Error message:<br>\n%(msg)s") % { 
     156                        "repos":reposname, "msg": e} 
     157        else: 
     158            result = _("Delete blank repository '%(repos)s' success.") % {"repos":reposname} 
     159        return result 
     160     
    135161    def remove(self): 
    136162        return render('/repos/remove.mako') 
  • trunk/pysvnmanager/model/repos.py

    r42 r44  
    6060         
    6161    def create(self, repos_name): 
     62        repos_name = repos_name.strip() 
     63        assert repos_name != "" 
     64 
    6265        repos_path = "%(root)s/%(entry)s" % { "root": self.repos_root, "entry": repos_name} 
    6366        if os.path.exists(repos_path): 
     
    122125             
    123126    def delete(self, repos_name): 
     127        repos_name = repos_name.strip() 
     128        assert repos_name != "" 
    124129        repos_path = "%(root)s/%(entry)s" % { "root": self.repos_root, "entry": repos_name} 
    125130        if os.path.exists(repos_path): 
    126131            if self.is_blank_svn_repos(repos_name): 
    127132                from svn import repos as _repos 
    128                 _repos.delete(repos_path) 
    129             else: 
    130                 raise Exception, _("Repos %s is not a blank repository.") % repos_name 
     133                return _repos.delete(repos_path) 
     134         
     135        raise Exception, _("Repos %s is not a blank repository.") % repos_name 
     136         
    131137         
    132138 
  • trunk/pysvnmanager/templates/repos/hooks.mako

    r43 r44  
    4444        var name = new Array(); 
    4545        var total = 0; 
    46         var revision = ''; 
    4746         
    4847        repos_list = document.main_form.repos_list; 
     
    5554                        repos_list.options[i] = new Option(name[i], id[i]); 
    5655                } 
    57                 document.main_form.revision.value = revision; 
    5856        } 
    5957        catch(exception) { 
     
    6866        var name = document.main_form.repos_list.value; 
    6967        var params = {select:name}; 
    70         var revision = ''; 
    7168 
    7269        if (name=='...'||name=='') 
     
    193190 
    194191<form name="main_form" method="post"> 
    195 <input type="hidden" name="revision" value="${c.revision}"> 
    196192<DIV style="position:relative;" class=gainlayout> 
    197193 
     
    200196    <select name="repos_list" size="1" onChange='repos_changed()'> 
    201197    </select> 
    202 <a href="#" onclick='#'>[+${_("Add repository")}]</a> 
    203 <a href="#" onclick='#'>[-${_("Remove repository")}]</a> 
     198${h.link_to(_("Add repository"), h.url(action="create"))} 
     199${h.link_to(_("Remove repository"), h.url(action="remove"))} 
     200##<a href="#" onclick='#'>[+${_("Add repository")}]</a> 
     201##<a href="#" onclick='#'>[-${_("Remove repository")}]</a> 
    204202</DIV> 
    205203 
     
    218216            html={'id':'apply_new_hook_form'},  
    219217            url=h.url(action='apply_new_hook'),  
    220             update=dict(success="message", failure="message"),  
     218            update="message",  
    221219            method='post', before='apply_new_hook_form_submit(this); showNoticesPopup()', 
    222220            complete='hideNoticesPopup();switch_message_box();repos_changed()', 
     
    241239            html={'id':'remove_hook_form'},  
    242240            url=h.url(action='remove_hook'),  
    243             update=dict(success="message", failure="message"),  
     241            update="message", 
    244242            method='post', before='remove_hook_form_submit(this); showNoticesPopup()', 
    245243            complete='hideNoticesPopup();switch_message_box();repos_changed()', 
  • trunk/setup.py

    r37 r44  
    88setup( 
    99    name='pySvnManager', 
    10     version="0.1.3", 
     10    version="0.2.0", 
    1111    description='SVN authz web management tools.', 
    1212    author='Jiang Xin',