【问题标题】:Getting a listing of Trac projects in Python在 Python 中获取 Trac 项目的列表
【发布时间】:2010-09-03 08:41:58
【问题描述】:

是否可以在 Python 中使用 trac 模块来获取给定目录中所有项目的列表?如果可能的话,最好也能得到描述之类的东西。我似乎不知道该怎么做。

感谢您提供的任何帮助。

【问题讨论】:

    标签: python project-management trac


    【解决方案1】:

    您可以编写如下脚本:

    import trac.admin.console
    import trac.config
    import os
    
    def _get_project_options(envdir):
        confpath = os.path.join(envdir, 'conf/trac.ini')
        config = trac.config.Configuration(confpath)
        return dict([x for x in config.options(u'project')])
    
    def _get_project_name(envdir):
        admin = trac.admin.console.TracAdmin(envdir)
        if admin.env_check():
            options = _get_project_options(envdir)
            return options[u'name']
        else:
            return None
    
    def iter_trac_projects_from_dir(dirname):
        for which in os.listdir(dirname):
            if not which in ('.', '..') and os.path.isdir(dirname):
                envdirname = os.path.join(dirname, which)
                project_name = _get_project_name(envdirname)
                if project_name:
                    yield (project_name, envdirname)
    
    def get_trac_projects_from_dir(dirname):
        return [pr for pr in iter_trac_projects_from_dir(dirname)]
    

    然后,您可以使用iter_trac_projects_from_dirget_trac_projects_from_dir,您认为最适合您。

    或者,您可以使用模块trac.web.main 中的函数get_enviroments,但只能作为os.listdir 的替代——您仍然需要检查每个所谓的环境是否真的是一个trac 环境。看看为什么:

    >>> import trac.web.main
    >>> env = {'trac.env_parent_dir': 
    ...        '/home/manu/tmp'}
    >>> trac.web.main.get_environments(env)
    {'test': '/home/manu/tmp/test', 'no-a-real-trac-project': '/home/manu/tmp/no-a-real-trac-project', 'test2': '/home/manu/tmp/test2'}
    

    【讨论】:

    • 请注意 _get_project_options 返回所有选项。你也可以在那里得到描述。
    【解决方案2】:

    使用TRAC_ENV_PARENT_DIR 环境变量几乎可以满足您的需要:它会为您创建一个索引页面。请参阅此处有关“使用多​​个项目”的部分:http://trac.edgewall.org/wiki/TracCgi#Apacheweb-serverconfiguration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2012-08-09
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多