python - 获取 Python 中的 Trac 项目列表

标签 python project-management trac

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

感谢您提供的任何帮助。

最佳答案

您可以编写如下脚本:

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 的替代方案 - 您会仍然需要检查每个所谓的 env 是否确实是一个 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'}

关于python - 获取 Python 中的 Trac 项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634183/

相关文章:

c++ - Python 属性和 Swig

python - 求和矩阵行,不包括其他数组的索引

wiki - Trac,如何分层组织页面?

svn - 跟踪一个人开发的项目中的任务和错误历史有用吗?

python - 如何使用变量作为标识符输入列表中的项目?

python - cProfile.run 函数调用与复杂性

project-management - 对于地理上分散的团队,可以使用什么项目管理工具?

python - Django 设置.py : Separate local and global configuration

git - 如何使用git同步多个项目?

用于管理项目和用户的 SVN GUI 前端?