我们在项目管理中使用了trac系统,并且对于ticket添加了以下自定义字段并且对它们的格式都有一定要求:

  • svn版本号:格式为 r1234。多个版本号之间使用半角逗号隔开。如:r1234,r5678
  • 完成日期:yyyy-mm-dd的格式
  • 开发周期:表示开发功能所耗费的时间,格式为数字或者一位小数后面跟上单位h或者d。
  • 测试版本号:v开头的标准版本号,如:v2.3.1.5098

但是在实际操作中,很多开发人员不去阅读规范文档或者压根记不起来格式规范,随意填写,很是苦恼。

今天就先试图给完成日期添加一个日期插件让开发人员直接使用日期对话框来选择日期,同时发现它已经自带了格式验证,然后在寻找这个插件的同时发现了一个好用的格式验证插件https://trac-hacks.org/wiki/TracTicketValidatorPlugin。

如何安装此插件就不在这里描述,直奔主题看看如何实现配置trac使插件生效。

  1. 首先要在trac的管理-插件里勾选tracticketvalidator 0.1里的所有组件(实际上只有一个TicketsValidator)。
  2. 手动打开在trac.ini,修改[ticketvalidator]段里的内容。
  3. 添加以下配置,注意的是validates项指定了要对哪些字段进行验证,这些字段名都是添加的Custom Fields的名称。每一个字段都配置一个rule和tip。rule配置项是一个正则表达式,是插件用来对修改ticket时提交的信息进行验证的(插件源码里是这样写的 re.match(rule, fieldValue) )。而tip是在验证出错之后,给用户的警告信息里显示的内容。
    svn.rule = ^(r[0-9]+)(,r[0-9]+)*$
    svn.tip = svn号请使用r开头的版本号,并且以半角逗号分割,例:r1234,r5678
    needtime.rule = ^[0-9]+(\.[0-9])?[h|d]$
    needtime.tip = 完成时间格式:以整数或一位小数开头,以h或d结束(分别表示小时和天).示例:3.1d 或 4h
    testversion.rule = ^v[0-9]+(.[0-9]+){4}$
    testversion.tip = 版本号格式: vnn.nn.nn.nn, 例v2.3.1.5098
    validates = svn,needtime,testversion

然后重启http服务器,配置就生效了,我们尝试以错误的格式修改ticket:

点击“提交变更”后显示错误警告,以及在页面顶部显示出配置的错误提示。

给trac的ticket添加提交时字段验证的更多相关文章

  1. silverlight wpf Command提交时输入验证

    silverlight 或WPF在MVVM模式中使用INotifyDataErrorInfo接口对输入进行验证时 控件lostFocus时会触发验证,但在提交动作(例如button的Command)时 ...

  2. easyui form提交时验证必填,打开时不显示必填提示

    给textbox添加required:true属性后,打开页面时整个表单都是红的,需要将其设置为提交时再验证. 解决方法:通过textbox的novalidate属性来控制是否开启验证 <inp ...

  3. vux中表单验证,在提交时自动聚焦到未验证通过的那栏;及循环表单的验证

    首先vux中的表单验证在点击触发,失焦时才显示错误信息,如果不管它,它就没反应,这显然是不合理的:解决办法就是:在提交时做验证,不通过的话就使用.focus()及.blur()方法给它聚焦,失焦. i ...

  4. [转]jQuery.validate插件在失去焦点时执行验证代码

    转:http://my.oschina.net/enyo/blog/311566 关于 jquery.validate.js 表单验证插件如何在失去焦点时做验证.看手册后发现默认是在表单提交时执行验证 ...

  5. svn提交时强制添加注释 (转)

    SVN提交时,如果没有注释,在查阅历史时,会非常不方便.因此我们需要有一个让程序员提交代码时,强制添加注释的规则.下面看看在SVN中怎么实现. 1. 推荐使用VisualSVN作为服务端(免费下载地址 ...

  6. 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白

    这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...

  7. TClientDataSet 提交时提示 Field value Required 但是未提示具体哪个字段。

    TClientDataSet 提交时提示 Field value Required 但是未提示具体哪个字段. 这个错误特别麻烦,要使用 midas 控件时,虽然很方便.但是出错了根本找不到原因,特别是 ...

  8. Struts(二十四):短路验证&重写实现转换验证失败时短路&非字段验证

    短路验证: 若对一个字段使用多个验证器,默认情况下会执行所有的验证.若希望前面的验证器没有通过,后面的验证器就不再执行,可以使用短路验证. 1.如下拦截器,如果输入字符串,提交表单后,默认是会出现三个 ...

  9. 如何实现织梦dedecms表单提交时发送邮箱功能【已解决】

    我们通过织梦系统制作网站时,很多客户需要有在线留言功能,这时就会用到自定义表单.但是很多用户觉得经常登陆后台查看留言信息太麻烦了,于是想能否在提交留言是直接把内容发送到指定邮箱.网站经过测试终于实现了 ...

随机推荐

  1. nodejs应用离线安装部署、卸载

    公司写的文档,直接粘贴过来了: 本文档提供node应用一键安装.部署.卸载说明,包含对应脚本文件 默认版本:1.nodejs:v6.11.2.linux-x642.全局npm包:pm2.supervi ...

  2. 十七、ThreadPoolExecutor线程池

    一.简介 executor接口 executor接口在JDK的java.util.concurrent包下,它只有一个抽象方法: void execute(Runnable command); 这意味 ...

  3. 找到链表中倒数第k个数

    本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片.视频等原文的内容) 若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cn ...

  4. TCP/IP Socket通信demo

    一个实例通过client端和server端通讯 客户端发送:“我是客户端,请多关照” 服务端回复:“收到来自于"+s.getInetAddress().getHostName()+" ...

  5. hdu 3474 Necklace 单调队列

    Necklace Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  6. 基于注解的简单SSH保存用户小案例

    需求:搭建SSH框架环境,使用注解进行相关的注入(实体类的注解,AOP注解.DI注入),保存用户信息 效果: 一.导依赖包 二.项目的目录结构 三.web.xml配置 <?xml version ...

  7. CSS(一)sytle

    一:CSS语法组成:  选择符 和声明(声明和声明之间用分号隔开)  声明部分:属性和属性值(用冒号链接)  语法:选择符{   属性1:属性值:   属性2:属性值:  } 所有的CSS语句都要放到 ...

  8. 在 Ubuntu上使用 MySQL

    MySQL 安装配置 https://help.ubuntu.com/12.04/serverguide/mysql.html MySQL Manual http://dev.mysql.com/do ...

  9. Document对象关于窗口的一些属性

    在网上搜罗的,只为自己查用方便,不做他用 window.screen.availWidth 返回当前屏幕宽度(空白空间) window.screen.availHeight 返回当前屏幕高度(空白空间 ...

  10. django开发博客(1) 入门

    现在正式开始博客开发 1.安装django1.4 如果你使用的是fedoraDVD版,安装时选择了web开发组建,这一步可以省略,因为它自带django环境 django下载地址 https://ww ...