-
转 - Trac系列(6):用户管理和身份验证
2011-11-11 15:09:10
关于TRAC的权限设置,可参考如下文章,写的简单易懂。转载地址:http://hi.baidu.com/xuexiba/blog/item/23980ffafc7c229459ee90dd.html#0Trac系列(6):用户管理和身份验证2007-09-05 22:44在Trac中,添加、删除、配置用户账户以及身份验证的过程依赖于运行Trac的方式,也就是使用哪种方式、在哪种Web服务器上运行Trac。
下面介绍使用Tracd时如何管理用户帐号以及进行身份验证。
在以前的讲解中,我们建立了一个Angel项目的Trac环境,用以下的命令:
C:\Python24\Scripts>..\python tracd -p 8001 C:\SCM\Angel\Angel_Trac
来运行Trac环境。
虽然使用浏览器访问该项目时,页面上方也有一个“Login”连接,但是是无法使用的,点击了会报错,提示:
“Authentication information not available. Please refer to the installation documentation.”
这是因为我们没有为该项目设置用户、分配权限和密码。要使Login可用,我们需要做以下三个工作:
1. 创建用户并分配权限
过程如下图:
现在我们的Angel项目有了一个admin的用户,是Trac的管理员。
2. 给用户设定密码
Tracd支持Basic和Digest两种身份验证方式,默认使用Digest,在这里只介绍Digest方式,这是来源于Apache的用户管理和身份验证方式。
Digest方式需要提供一个特定格式的密码文件,可以使用Apache的htdigest命令来生成密码文件。如果没有Apache,可以使用下面的python脚本来生成密码(我就是使用的这种方式)
from optparse import OptionParser
import md5
# build the options
usage = "usage: %prog [options]"
parser = OptionParser(usage=usage)
parser.add_option("-u", "--username",action="store", dest="username", type = "string",
help="the username for whom to generate a password")
parser.add_option("-p", "--password",action="store", dest="password", type = "string",
help="the password to use")
(options, args) = parser.parse_args()
# check options
if (options.username is None) or (options.password is None):
parser.error("You must supply both the username and password")
# Generate the string to enter into the htdigest file
realm = 'trac'
kd = lambda x: md5.md5(':'.join(x)).hexdigest()
print ':'.join((options.username, realm, kd([options.username, realm, options.password])))将上面的代码保存到一个新文本文件中,并重命名该文件的扩展名为py(假定修改后该文件是
trac-digest.py,放在了C:\SCM目录),使用下面的命令
python trac-digest.py -u username -p password >> c:\digest.txt
具体到我们的项目就是
C:\Python24>python c:\scm\trac-digest.py -u admin -p admin >>c:\scm\digest.txt
会在c:\scm\目录下生成一个digest.txt的密码文件,该文件的格式是“用户名:范围名(readlm名称,默认是trac):密码的密文”。
如下图
可以多次执行上面的命令在一个密码文件中为多个用户设定密码。
3. 使用带验证选项的行命令启动tracd
命令如下
tracd -p 8080 --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1
或者
tracd -p 8080 --auth=*,/path/to/users.htdigest,mycompany.com /path/to/project1
具体到我们的项目就是
C:\Python24\Scripts>..\python tracd -p 8001 --auth=Angel_Trac,c:\scm\digest.txt,trac C:\SCM\Angel\Angel_Trac
或者
C:\Python24\Scripts>..\python tracd -p 8001 --auth=*,c:\scm\digest.txt,trac C:\SCM\Angel\Angel_Trac
需要注意:
a.红色的部分,是realm(范围),在行命令中的realm必须与生成密码文件的脚本总的realm相同。
b.蓝色的部分,也就是--auth的第一个参数,不是项目名称,是Trac环境全路径的最后一个目录。
ok,现在打开浏览器,访问Trac网站,点击“Login”,就会弹出登陆对话框进行身份验证了。如下图
是不是感觉很麻烦呢,没关系,Trac有插件来扩展这些功能,我们随后就会介绍如何用插件来管理用户和配置Trac。
最后,需要强调的是,这篇文章只是对使用tracd运行Trac的用户管理,其他方式请参考Trac官方网站的指南。
参考文献:
Trac的官方指南中的TracAdmin介绍。
Trac的官方指南中的Trac Permissions介绍。
Trac的官方指南中的Tracd介绍 。 -
Trac - 如何自定义RoadMap中的内容
2011-11-11 11:22:15
曾经写过一篇文章介绍如何自定义字段及流程的文章(http://www.51testing.com/index.php?uid-49689-action-spacelist-type-blog-itemtypeid-11268),今天介绍如何自定义RoadMap.原文参见:http://trac.edgewall.org/wiki/TracRoadmapCustomGroupsTrac中的roadmap是对milestone的一个集合统计,如果你在创建ticket时选择了相应的milestone,则打开roadmap tab时,默认显示如下:这个图中只是显示了已解决及未解决的tickets数,根据我们自定义流程中文章中的介绍,trac允许用户自已添加一些流程,如果用户也想在roadmap中体现出来自定义的status,该如何做呢?
1. 比如用户在trac.ini [ticket-custom]中自定义了testing流程,定义内容如下:
testing = new, accepted, needs_work, assigned, reopened -> testing
testing.name = Submit to report for testing
testing.operations = set_owner
testing.permissions = TICKET_MODIFY2. 如果用户想在roadmap中看新增加的状态,可做如下处理:
(1)在trac.ini文件中增加[milestone-group] section,其中内容包括如下:
[milestone-groups] # The definition consists in a comma-separated list of accepted status. # Also, '*' means any status and could be used to associate all remaining # states to one catch-all group. # Qualifiers for the above group (the group must have been defined first): # Definition of a 'closed' group: closed = closed # 此closed状态,必须已经提前定义过 closed.order = 1 closed.query_args = group=resolution closed.overall_completion = true # Definition of an 'in testing' group: inQA = testing # 此testing状态,必须已经提前定义过 inQA.order = 2 inQA.css_class = new inQA.label = in testing # Definition of an 'active' group: active = * active.order = 3 active.css_class = open active.label = in progress # The CSS class can be one of: new (yellow), open (no color) or # closed (green). New styles can easily be added using the following # selector: `table.progress td.<class>`
完成后,重新trac server,可得到如下roadmap:
3. 上述内容的解释
<groupname> 可以是一个或多个status,多个status之间用逗号分隔;使用*则意味着匹配所有在[milestone-group]中尚未定义的状态 <groupname>.order 表示在上图progress bar中显示的位置 <groupname>.query_args Optional extra parameter for the query <groupname>.overall_completion true/false - count in the overall completion statistic <groupname>.css_class 定义progress bar中显示的颜色new (yellow), open (no color) or closed (green). <groupname>.label 显示在progress bar中的名称 -
TRAC Configure
2009-06-05 14:11:47
公司一直在用TRAC作为BUG管理工具,原先我们用的是0.10版本的,一直用了两年,虽然期间也发现了TRAC 0.10中的一些不方便使用的地方,比如bug流程中没有测试的部分,经过流程上的口头统一还都可以克服. 但自从与我们的客户合作后,客户要求我们的TRAC能与他们的BUG库实现导入导出的对接,这下麻烦可来了.客户的BUG库比较复杂,有很多功能必须通过自定义才能实现, TRAC 0.10偏偏没有自定义的能力. 后来发现Trac 0.11可以实现自定义的功能,但需要配置一下, 0.11中的自定义功能:
1.Resolution 自定义- 在解决BUG的过程中,总有一些BUG是属于现在不解决,要以后解决的,那在选择resolution时,应该有一个选项能标识出以后修改.
- 用ADMIN的权限登录TRAC,打开"ADMIN" TAB
- 单击resolution
- 添加一个项为"Deferred",保存
- 现在登录试试,应该可以看到自定义的Deferred项了.
- 在创建BUG的过程中,需要一些其它的选项,比如"是否属于回归测试BUG"等等, 但TICKET默认的字段中没有这些选项,这就需要管理员修改TRAC.INI文件.
- 参考地址:http://trac.edgewall.org/wiki/TracTicketsCustomFields
- 实例:要添加一个"是否属于回归测试BUG"的复选框
- 管理员在某一PROJECTTRAC安装目录-Conf目录中找到 TRAC.ini 并双击打开
- 在这个文档的最后面添加如下内容
- [ticket-custom]
- RT(这个名字根据自己的需要修改)= checkbox(类型)
RT.label = Regression Testing(显示在TICKET中的字段名称)
RT.value = 0(默认值是不选中,如果是1则默认值为选中状态) - 保存TRAC.ini
- 刷新TRAC,创建一个TICKET,看一下是不是多出了一个复选框字段"是否属于回归测试BUG",且默认值为不选中状态.
- 比如我想创建一个新的TEST REPORT,这个TEST REPORT可以查询出所有BUG,并且复选框字段"是否属于回归测试BUG"做为一列显示在这个TEST REPORT中,该如何操作呢?
- 管理员单击View tickets TAB,然后在打开的页面中单击"CREATE NEW REPORT"
- 输入TEST REPORT的名称,比如"All tickets for ** build"
- 在Query for Report栏中输入如下SQL语句
- SELECT
id AS ticket,
summary,
component,
status,
resolution as Suebstatus,(CASE WHEN a.value='1' THEN 'yes' ELSE 'no' END) AS Regression, #自定义字段的别名为Regression,且在显示时,如果值=1就显示yes,如果值=0则显示no
priority,
t.type AS type,
owner,
strftime('%Y-%m-%d',time,'unixepoch') AS Created, #TRAC日期格式存的字符形式的,要想导入时显示的是日期格式,必须做一下格式的转换
strftime('%Y-%m-%d',changetime,'unixepoch')AS Modified, description AS _description,
reporter AS reporter
b.value AS clientversion
FROM ticket t
LEFT OUTER JOIN ticket_custom a ON (t.id = a.ticket and a.name = 'rt - 在Trac.ini文件中定义的名称(用小写表示)')#联合自定义的字段
LEFT OUTER JOIN ticket_custom b ON (t.id = b.ticket and b.name = 'clientversion')
LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
WHERE status IN ('new', 'assigned', 'reopened', 'closed') and version='** build'
ORDER BY time desc - 保存,看一下这个TEST REPORT regression是不是做为一列显示出来呢!
- 在TRAC 0.10版本中不能体现测试的流程,通过配置TRAC 0.11的workflow,可以把测试流程嵌入到BUG生命周期中.
- 管理员在某一PROJECTTRAC安装目录-Conf目录中找到 TRAC.ini 并双击打开
- 在这个文档的最后面添加如下内容
testing = new,accepted,needs_work,assigned,reopened -> testing
testing.name = Submit to reporter for testing
testing.permissions = TICKET_MODIFY
reject = testing -> needs_work
reject.name = Failed testing, return to developer
pass = testing -> closed
pass.name = Passes Testing
pass.operations = set_resolution
pass.set_resolution = fixed- 保存,无需重启SERVER. 打开一个open状态的BUG,看一下是不是多了"Submit to reporter for testing"的选项.
- 选中"Submit to reporter for testing"的选项,并更新, 再看一下是不是现在成了三个选项"leave as testing","Failed testing, return to developer","Passes Testing".
这个目前正在研究,我还不是特别的明白,可以把参考地址提供给大家共同研究:http://pacopablo.com/wiki/pacopablo/blog/set-assign-to-drop-down
6.TRAC独立版window系统下的安装- http://trac.edgewall.org/wiki/TracOnWindowsStandalone
- 需要注意的是在create a Project Environment时候,除了填写PROJECT名称外,其它的均按默认操作,直接回车即可(C:\Python23\Scripts> python trac-admin C:\path\to\trac_env initenv)
- 启动独立版的SERVER:C:\Python23\Scripts> python tracd --port 8000 C:\path\to\trac_env
- 通过浏览器打开 http://localhost:8000/projectname
- 注意事项: 打开浏览器后, 发现无法登录, 你只是以匿名用户的身份来REVIEW, 并没有创建的权限, 如果想要有这些功能还需要权限及用户设置, 这一块的东西相对比较复杂,我在项目中并没有用到这块, 我直接使用以下语句把匿名用户的权限提升到了ADMIN
-
$ trac-admin /path/to/projenv permission add anonymous TRAC_ADMIN
我的栏目
标题搜索
我的存档
数据统计
- 访问量: 123851
- 日志数: 79
- 建立时间: 2008-02-14
- 更新时间: 2013-08-09