一个简单易用、安装的issue-tracking系统,具有命令行、网页和电子邮件界面。高度可定制。
项目描述
我自豪地向大家发布 Roundup 问题跟踪器的 2.4.0 版本。这个版本是错误修复和功能发布,所以请务必阅读 docs/upgrading.txt,以确保您的跟踪器更新到最新状态。
79 项更改,一如既往,包括一些新功能和许多错误修复。
2.4.0 版本将是支持 Python 2 的最后一个版本。下一个次要版本计划于 2025 年中发布,距离 Roundup 开始支持 Python 3 已有 5 年。
请注意,您应该运行 roundup-admin ... migrate 以更新数据库模式版本。在使用 Web、命令行或邮件界面之前,以及在任何用户访问跟踪器之前,请执行此操作。
您可以使用以下方式安装它
pip install roundup
(最好在虚拟环境中)。要下载它,使用
pip download roundup
然后从 tarball 解包并测试/安装。
2.4.0 版本中从 2.3.0 版本中显著改进的包括
修复了三个 CVE。其中一个需要更改您跟踪器的家目录。其他两个通过安装 2.4.0 来修复。有关详细信息以及如何在 2.4.0 及更早版本中修复这些问题的说明,请参阅 https://www.roundup-tracker.org/docs/security.html。
由于来自马萨诸塞大学波士顿分校 CS682 的一名学生团队的帮助,新增了新的 classhelper 组件。这修复了许多与旧 classhelper 相关的问题。它作为 Web 组件实现,需要 REST 接口访问。如果 REST 不可用或浏览器不支持 Web 组件,它将回退到经典 classhelper。
修复了使用 pip 安装 Windows Python 的问题。它曾经会在安装或下载过程中进入无限循环。还修复了共享文件(模板)的安装问题,以便 roundup-admin 可以找到它们。
在搜索 URL 中将 @current_user 用作用户属性的值时,将使用当前登录用户。现在您可以像这样共享搜索:“我的问题”,因为“my”将成为当前登录用户。
现在对 REST/XML-RPC 接口的登录失败实施速率限制,以限制密码猜测攻击。
utf8mb4 是 MySQL 的默认字符集。这要求您使用 mysql 客户端迁移数据库。您可以选择在 config.ini 中保留较旧的字符集。
可以使用在 pg_service.conf 中定义的 PostgreSQL 服务。支持 PostgreSQL 模式,以消除 roundup 用户需要数据库创建/删除权限的需求。
修复了将大型跟踪器导入 PostgreSQL 时的内存不足问题。
多个roundup-admin改进:显示受保护属性(如创建日期)、输出格式改进、命令历史记录。在Windows上,pyreadline3得到支持,以提供可编辑的交互式命令行。
2.3.0版本中的实验性wsgi性能改进现在默认开启,并且是可选的。
新增模板函数:utils.readfile和utils.expandfile。Python核心中包含的JavaScript将移动到外部文件,并且能够将Roundup的值替换到JavaScript中。
允许从模板内部设置模板的内容类型。这允许从模板返回json或xml,而不需要.json或.xml扩展名。
修复了Windows上的导入/导出问题,使用Unix样式的行结束符,修复了Windows上的导出/导入问题,并使导出在不同平台上可移植。
包括测试套件修复在内的各种其他Windows平台修复。
移除了sqlite版本1和StructuredText支持。
文件CHANGES.txt列出了每个版本中新增的功能和修复的错误详情。最新的更改在此公告的末尾。另请参阅doc/upgrading.txt中的信息。
如果您发现错误,请向issues AT roundup-tracker.org报告,或创建https://issues.roundup-tracker.org的账户并新建一个工单。如果您有修复问题的补丁,可以将其附加到电子邮件中或上传到跟踪器。
升级
如果您是从旧版本的Roundup升级,您必须遵循doc/upgrading.txt文档中给出的所有“软件升级”指南。
请注意,您应该为所有跟踪器运行roundup-admin ... migrate以更新数据库模式版本。在您使用Web、命令行或邮件接口之前,以及任何用户访问跟踪器之前,请执行此操作。
Roundup需要Python 2.7.12之后的Python 2版本或Python 3.6或更高版本的Python 3才能正确运行。(Python 3.4或3.5可能可行,但未经测试。)请注意,Roundup 2.4.0将是最后一个支持Python 2的版本。您应该使用Python 3部署新的跟踪器,并计划将旧跟踪器从Python 2升级到Python 3。请参阅升级指南。
要试用Roundup,只需下载(上方说明),解压并运行
python demo.py
然后打开演示应用程序打印的URL。
版本信息和下载页面
源代码和文档可在网站找到
邮件列表 - 提问的地方
关于Roundup
Roundup是一个简单易用且易于安装的缺陷跟踪系统,具有命令行、Web和电子邮件接口。它基于Software Carpentry“Track”设计竞赛中获胜的设计者Ka-Ping Yee的设计。
Roundup管理多个问题(具有灵活的属性,如“描述”、“优先级”等)并提供以下功能:
提交新问题,
查找和编辑现有问题,
与其他参与者讨论问题。
系统通过管理讨论并在问题被编辑时通知相关方,促进了参与者之间的沟通。Roundup的一个主要设计目标是易于开始使用。因此,Roundup可以在任何Python 3.6+安装上“开箱即用”。它甚至不需要安装即可运行,尽管提供了一个安装脚本。
它包含五个基本问题跟踪器模板
一个经典的缺陷/功能跟踪器
一个更广泛的开发跟踪器,用于缺陷/功能等
一个响应式的开发跟踪器版本
一个jinja2版本的开发模板(工作正在进行中)
一个最小化骨架
并支持四种数据库后端(anydbm、sqlite、mysql和postgresql)。
近期变更
从2.3.0到2.4.0
修复
CVE-2024-39124 - classhelpers (_generic.help.html) 类存在跨站脚本攻击漏洞。使用该端点并构造特殊URL会导致URL中嵌入的脚本执行。(由Alec Romano(4rdr)发现/报告,John Rouillard修复/测试)
CVE-2024-39125 - 如果Referer头设置为脚本标签,则在报告Referer头错误时将执行它。(由Alec Romano(4rdr)发现/报告,John Rouillard修复/测试)
CVE-2024-39126 - 附加到问题上的PDF、XML和SVG文件可以包含嵌入式JavaScript。当访问文件时,将执行此JavaScript。现在PDF文件将下载而不是在浏览器中显示。为所有下载文件添加了内容安全策略,以防止SVG文件中的代码执行。(由Alec Romano(4rdr)发现/报告,John Rouillard修复/测试)
issue2551282 - MySQL utf8mb4问题;issue2551115 - 将utf8mb4作为MySQL的默认编码,而不是utf8。默认数据库类型和校对已设置为:utf8mb4, utf8mb4_unicode_ci 和 utf8mb4_0900_bin。它们可以从config.ini中配置。在upgrading.txt中已记录升级MySQL数据库的说明。
issue2551063 - Rest/Xmlrpc接口需要失败的登录保护。添加了失败的API登录速率限制和过期锁定。(John Rouillard)
issue2551184 - 改进i18n处理。补丁测试以确保它使用测试跟踪器的locale文件,而不是其他locale文件。(Marcus Priesch)
issue2551283 - 如果使用markdown2 2.4.9版本,则失败,它破坏了[issue1](issue1)样式链接。支持markdown2 2.4.8及以下版本和2.4.10及其新的架构过滤方法。(John Rouillard)
多个flake8修复(John Rouillard)
在‘for sendto in sendto:’中重命名循环变量(John Rouillard)
issue2551193 - 修复了删除cgi和cgitb标准Python模块(和FieldStorage/MiniFieldStorage)的roundup。使用roundup.anypy.cgi_替换从cgi的导入,除非它不存在,否则将加载系统cgi。然后它将加载roundup.anypy.vendored.cgi并使*FieldStorage符号可用。Roundup使用自己的cgitb.py而不是系统cgitb.py。它看起来是系统cgitb.py的前身。(John Rouillard)
issue2551278 - datetime.datetime.utcnow弃用。用产生时区感知日期的等效调用替换调用,而不是产生无时区的日期。(John Rouillard)
使用“roundup-admin display”时,如果请求标题或受保护字段,则仅缩进列表。如果未使用新功能,则输出看起来与2.3.0之前相同。roundup-admin输出从未打算被机器解析,除非需要,否则不要破坏它。(John Rouillard)
issue2551290 - 在Windows 10上pip安装roundup卡住。使用pip或源安装将进入无限循环。(John Rouillard)
记录pyreadline3的使用,以允许roundup-admin在Windows上具有CLI编辑。(John Rouillard)
issue2551293 - 从Tracker实例中删除schema_hook。它看起来是一个用于测试的已弃用hook。从未记录,并且无法从schema.py访问。()
修复roundup-admin安全命令。将其可选参数转换为小写。角色按小写角色名称索引。因此,“security User”和“security user”应生成相同的输出。(John Rouillard,来自邮件列表上的Chuck Cunningham的问题)
使roundup-server在^C时更快地退出。这似乎仅限于Windows。(John Rouillard)
修复错误处理,以确保导入非用户项时失败不会导致第二个回溯。(由Norbert Schlemmer发现,John Rouillard修复)
处理在PostgreSQL中导入大型跟踪器时的内存不足错误。(由Norbert Schlemmer发现,Norbert进行了大量测试,John Rouillard修复)
在test/test_hyperdbvals.py中使用unittest.mock而不是mock。(由Ralf Schlatterbeck发现,John Rouillard修复)
在roundup_healthcheck中禁用wget的代理。(Norbert Schlemmer Noschvie在github.com上)
支持dicttoxml2.py,以使在3.7及更高版本上运行的Roundup可用。dicttoxml使用类型别名:collection.Iterator,它在Python 3.10中被删除。(由Norbert Schlemmer发现,John Rouillard修复)
修复所有模板(除jinja2外)中user.item.html中的重复html id“password”(John Rouillard)
修复在indexer_dbm.py中保存索引时未关闭文件的问题。(John Rouillard)
修复开发跟踪器中的任务索引,以防止选择所有字段时崩溃。(John Rouillard)
修复Windows安装问题。当使用pip时,共享目录被安装在与lib目录下的目录树中。修复它,使其使用Lib/share来安装共享树。这样让Roundup可以找到跟踪器模板和翻译文件。(由Simon Eigeldinger发现,John Rouillard修复)
修复roundup-demo,交互模式会删除现有的跟踪器。(由Tonu Mikk发现,John Rouillard修复)
修复在未使用FTS5支持的情况下使用SQLite3库时的检测/报告问题。安装文档已更新,指出在将SQLite用作后端时需要FTS5支持。(由Tonu Mikk发现,John Rouillard修复)
问题2551320:user.help-search.html不尊重属性。现在在为用户使用classhelp时设置url参数属性将显示请求的属性。(UMass-Boston CS682春季2024班Patel Malav和Nikunj Thakkar发现;John Rouillard修复)
使用ast.eval_literal()而不是eval()将CSV导出的字符串值转换为Python对象/值。
仅当Content-Type尚未设置时,才使用模板猜测的Content-Type作为标题。这允许模板设置自己的内容类型。例如:_generic.translate可以通过request.client.additional_headers设置内容类型为application/json并从模板返回json。这个json可以访问javascript辅助程序的1i18n函数。(John Rouillard)
当模板处理引发异常时,行号有时会丢失。这会导致cgitb引发第二个异常,从而覆盖有关模板问题的信息。作为一个临时解决方案,将行号设置为-1,以便可以看到原始的跟踪信息。这可能是在ZopeTAL中的一个错误。(John Rouillard)
问题2551328 - 如果结果数是页面大小的倍数,则REST结果显示下一链接。不应该有下一链接。(UMass-Boston CS682春季2024班Patel Malav和Bharath Kanama发现;John Rouillard修复)
问题2551264 - REST X-Total-Count标题和@total_size计数在分页时错误 - 现在返回正确的值。(John Rouillard)
问题2551331 - 修复重复首次/最后方法。(John Rouillard)
修复Windows上的导入/导出。使用Unix行终止字符。(John Rouillard)
修复在Windows上使用dumbdbm作为后端时的anydbm会话/otks clear()方法。还使anydbm在使用dumbdbm时检测初始化的数据库。(John Rouillard)
在Windows Python下修复static_files配置选项中的'-'目录的使用。(John Rouillard)
问题2551334 - 修复阻止在Windows Python下运行测试套件的测试错误数量。正在进行中。(John Rouillard)
问题2551302 - 从back_sqlite.py中删除对sqlite版本1的支持。我们已经使用sqlite3超过十年了。(John Rouillard)
问题2551285 - 删除StructuredText支持。reStructuredText仍然得到支持。(John Rouillard)
使用roundup-demo -p选项设置监听端口。以前被忽略。(John Rouillard)
问题2551346 - 经典跟踪器的statusauditor在detectors/config.ini缺少STATUSAUDITOR_CHATTING_REQUIRES_TWO_USERS时引发错误。jinja2和经典模板的statusauditor.py已被更改为在detectors/config.ini中缺少设置时假定此选项已关闭。其他模板没有实现此选项。(John Rouillard)
问题2551350 - 3.12版Python与roundup 2.3.0的更改。修复cgitb.py由于pydoc.html.header()签名更改而崩溃的问题。(Andrew(kragacles)修补,John Rouillard应用)
问题2551350 - 3.12版Python与roundup 2.3.0的更改。修复mailer.py由于starttls签名更改而崩溃的问题。(Andrew(kragacles)修补,John Rouillard修改并应用)
通过设置target=" _blank",使classhelper链接在新窗口中打开。这可以防止在禁用javascript的情况下覆盖当前页面。(John Rouillard)
issue2551341 - 如果索引URL中缺少@columns,则分组标题colspan属性=0。在段落中添加“或100”,以便标题跨越所有行(最多100行)。
修复roundup-server响应需要301重定向的问题。未设置内容长度导致挂起/错误。(John Rouillard)
当模板文件无效时,报告文件名的基本名而不是报告TypeError。(John Rouillard)
使Last-Modified标题使用GMT而不是-0000时区。修复redbot测试报告的错误。(John Rouillard)
对于任何可能压缩的文件(即使文件未编码/压缩),也发送Vary: Accept-Encoding。由Redbot测试发现。(John Rouillard)
使If-None-Match对于静态文件(@file)情况工作。由Redbot测试发现(John Rouillard)
对于文件未修改的if-modified-since条件请求,发送vary: accept-encoding。(John Rouillard)
在rest.py中更新JWT示例,使用datetime.datetime.utcnow()的替换。(John Rouillard)
issue2551219 - 在使用roundup-server在SSL/TLS模式下时,记录PEM文件的要求。当PEM文件缺少证书或私钥时,报告更好的错误信息。(John Rouillard)
清理roundup-server索引生成。发送正确的Content-Length标题,以便HTTP/1.1连接不会挂起。(John Rouillard)
修复使用csv导出动作时的延迟。CSV文件是增量写入的,因此我们无法确定内容长度。当使用HTTP/1.1时,这会导致浏览器等待超时,从而产生延迟。在CSV文件写入后强制关闭连接可以消除延迟。(John Rouillard)
特性
issue2551323 - 删除XHTML支持。禁用将html_version设置为xhtml的选项。使用html_version设置为xhtml运行roundup命令将导致“Invalid value for HTML_VERSION: 'xhtml'”错误。(John Rouillard)
issue2551103 - 在roundup-admin中添加pragma 'display_protected'。如果为true,则在使用display或specification子命令时打印受保护的属性,如id、activity、actor等。(John Rouillard)
为roundup-admin添加-P pragma=value命令行选项。允许在非交互模式下设置pragma。(John Rouillard)
issue685275 - 添加pragma show_retired以控制使用list/table时退休项目的显示。添加pragma display_header以打印display命令的标题。标题显示标识符和退休/活动状态。(John Rouillard)
issue2551299 - 支持config.ini rdbms选项“service”。允许使用PostgreSQL连接服务文件(pg_service.conf)来为每个跟踪器配置数据库。还替换了使用PGSERVICE环境变量为单个实例跟踪器的情况。(由ivanov提出的问题。John Rouillard)
issue2550852 - 支持指定用于Roundup数据库的PostgreSQL模式。(Stuart McGraw提供的补丁;轻微修改、测试、文档:John Rouillard)
issue2551274: 添加REST API的配置记录,当发生失败时,我们现在记录状态码和错误信息。(Ralf Schlatterbeck)
issue2551317 - 在customizing.txt文档中添加一些Jinja2示例。(John Rouillard)
多个脚本/…更新 - Python3、linting、增强:weekly-report、schema-dump.py、roundup-reminder、copy-user.py、dump_dbm_sessions_db.py、contributors.py(John Rouillard)
roundup/msgfile.py现在可以调用为“python msgfmt.py de.po de.mo”或“python msgfmt.py -o de.mo de.po”,以编译翻译文件,如果缺少GNU msgfmt。(John Rouillard)
在会话之间保存roundup-admin历史记录。通过加载~/.roundup_admin_rlrc文件来设置历史记录大小以持久保存。添加pragma history_length以覆盖会话。(John Rouillard)
roundup-admin历史记录命令现在以更易于阅读的格式转储日志条目。使用raw选项以获取较旧的机器可解析的输出。(John Rouillard)
支持多个JWT密钥,以允许密钥轮换。有关详细信息,请参阅更新的config.ini。(John Rouillard)
issue2551212 - 2.2.0版本中添加的wsgi性能优化功能默认开启。如有需要,可关闭。详细信息请参阅upgrading.txt。(John Rouillard)
issue2551270 - 更好的JavaScript模板支持。添加了utils.readfile(file, optional=False)和utils.expandfile(file, token_dict=None, optional=False)函数。允许读取外部文件(例如JavaScript)并使用tal:contents或等效的jinja函数插入。expandfile允许设置一个字典和文件中的标记,例如“%(token_name)s”形式的标记将在文件中替换为字典中的值。(John Rouillard)
在rest接口集合查询中添加@group。当使用select元素中的optgroup时很有用。(John Rouillard)
roundup-demo可以使用-H参数在URL中设置主机名。因此,您可以使用“roundup-demo … -B hostname -H hostname”启动一个可以从您的网络访问的演示跟踪器。(John Rouillard)
issue2551347 - 让_generic.help.html在没有属性设置的情况下工作。这适用于经典或最小化跟踪器。允许仅用于信息(例如,优先级或状态的描述)而无需在classhelper中选择属性的情况下使用classhelp。这对于添加链接属性的说明很有用。(John Rouillard)
issue1525113 - 用于按登录用户过滤的标记。使用@current_user与指向“user”类的链接属性一起使用,以匹配当前登录用户。允许通过删除硬编码的用户ID并替换为当前用户的ID来共享查询,例如“我创建的问题”或“我负责的问题”。跟踪器模板已更新以使用它。(John Rouillard,来自Jon C. Thomason的补丁)
添加/REST/data/user/roles REST端点。(John Rouillard)
issue2551353 - 为2.4.0版本发布添加roundup-classhelper。将新的classhelper网络组件集成到现有的classhelper链接中。这解决了当前classhelper使用当前网络功能的一批未解决的问题。(Patel Malav,Nikunj Thakkar,Bharath Kanama,由John Rouillard集成)
在所有密码字段上禁用拼写检查,以尝试防止浏览器将密码暴露给外部服务器。(John Rouillard)
项目详情
roundup-2.4.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f4e0f3287e877a38a531c7668308472b85cdc9665b25ba2b90daaf16848b778 |
|
MD5 | b5f75029beb64905883219af0b941695 |
|
BLAKE2b-256 | 29b520e0f106edc670a46a019e1f1f0af3c46c7ba9ca45fa0a4752af78483ef7 |