Django工具,封装dateutil.rrule
项目描述
django-recurrence
django-recurrence 是一个用于在 Django 中处理周期性日期的实用工具。
功能
使用 rfc2445 的子集(封装 dateutil.rrule)的周期/规则对象,用于指定周期性日期/时间,
RecurrenceField 用于在数据库中存储周期性日期时间,以及
JavaScript 小部件。
RecurrenceField 提供了一个 Django 模型字段,用于将周期性信息序列化以存储在数据库中。
例如 - 假设你正在你的应用程序中存储有关大学课程的信息。你可以使用这样的模型
import recurrence.fields
class Course(models.Model):
title = models.CharField(max_length=200)
start = models.TimeField()
end = models.TimeField()
recurrences = recurrence.fields.RecurrenceField()
你会注意到我正在存储自己的开始和结束时间。周期字段只处理 周期性 而不是具体的时间信息。我有一个下午 2 点开始的活动。其周期性将是“每个星期五”。
文档
有关安装和配置的更多信息,请参阅以下文档:
问题
如果你在使用应用程序时遇到问题或有疑问,请在以下位置提交错误报告:
https://github.com/django-recurrence/django-recurrence/issues
贡献
欢迎所有贡献!
最好将建议的更改和 PR 分成小而明确的补丁,以便它们可以更快地合并到上游并更快地发布。
组织贡献的一种方式是分别对例如进行 PR
错误修复,
新功能,
代码和设计改进,
文档改进,或者
工具和 CI 改进。
合并贡献需要通过 CI 配置的检查。这包括在当前官方支持的 Python 和 Django 版本上成功运行测试和代码检查器。
测试自动化是使用 GitHub Actions 自动运行的,但您可以在推送提交之前使用 tox 命令在本地运行它。
更改
1.11.1 (2021-01-25)
修复 reStructuredTest 语法以符合 PyPI 标准。
1.11.0 (2021-01-21)
添加 Django 4.0 和 Python 3.10 支持。弃用已结束的生命周期的 Django 和 Python 版本。[aleksihakli]
修复了 weekday 反序列化类型错误。[apirobot]
修复了默认的 recurrence.language_code 没有设置的问题,通过在前端使用 en-us 作为默认的区域设置。[jleclanche]
1.10.3
添加了匈牙利本地化 #161。
1.10.2
添加了希伯来语本地化 #159。
1.10.1
更新 jQuery 路径以与 Django 管理员提供的路径匹配 #148。
1.10.0
修复并正式支持 Django 2.1 和 2.2 #143, #142;
移除对 Python 2.7 和 3.5 的支持,移除对 Django 2.0 的支持 #145。
1.9.0
修复了在管理员内联中使用周期小部件的问题 #137。
1.8.2
对 Django 2.0 的微小修复 #134;
微小的打包修复 #135。
1.8.1
错误发布,请勿使用。
1.8.0
此版本包含两个不向后兼容的更改 - 请参阅以下说明以获取详细信息。
django-recurrence 现在在大多数情况下返回时区感知的 datetime 对象 #130。如果 USE_TZ 为 True(默认情况下与库存 Django 安装一起关闭),则现在将从 django-recurrence 返回时区感知的 datetime 对象。如果你将 USE_TZ 设置为 True,并且你不希望这种行为,可以将 RECURRENCE_USE_TZ 设置为 False,但请通过 GitHub issues 告知我们(你希望退出),这样我们就可以了解你的用例。
RecurrenceField 实例在没有 required=False 的情况下现在至少需要一个规则或日期。此更改旨在使 django-recurrence 的行为与自定义字段的行为一致。如果您不想至少要求一个规则或日期,只需在您的字段上设置 require=False 即可 #133。
避免内联样式的改进 #85;
处理 Django 2 中的 javascript_catalog 的更改 #131。
1.7.0
放弃对 Django 版本 1.7、1.8、1.9 和 1.10 的官方支持;
修复将 None 保存到 RecurrenceField 导致 TypeError 的问题 #89,#122;
放弃对 Python 3.3 和 Python 3.4 的官方支持;
对 Python 3.7 的临时支持(仅适用于 Django 2.0 及更高版本);
确保在 Django 小部件上使用 render 时始终传递 renderer 参数,以确保对 Django 2.1 的支持 #125;
Django 2.0 兼容性修复:与 Django REST framework 一起使用 django-recurrence #126。
1.6.0
针对 Python 3 的修复 #105;
支持 Django 2.0 #109,#110;
将一些 DeserializationError 实例切换回 ValidationError #111;
调整日期选择器小部件中设置日期的方式,以避免与短月份相关的问题 #113。
1.5.0
添加斯洛伐克语翻译 #98;
添加对在月底前固定时间发生的事件的支持 - 例如,月底前的第二个星期二 #88;
添加少量样式更改,使 django-recurrence 与 Wagtail 兼容 #100;
允许通过在 RecurrenceField 上设置 include_dtstart=False 来更改默认情况下生成重复事件的行为。您可以通过在您的 RecurrenceField 上设置 include_dtstart=False 来选择加入此功能 #93;
确保在预期的地方引发 DeserializationError 以处理无效值 #103。
1.4.1
使 PO-Revision-Date 可由 babel 解析 #75;
更新安装说明以涵盖 Django 1.10 #74;
添加德语翻译 #77;
添加葡萄牙语翻译 #79;
确保在安装时包含迁移 #78;
修复 to_dateutil_rruleset 参数的顺序 #81。
1.4.0
改进我们的测试设置,以涵盖 Python 3.5;
针对 Django 1.10 的修复 #69。
1.3.1
添加巴斯克语翻译 #67。
1.3.0
放弃对 Django 1.4、Django 1.5、Django 1.6 和 Python 2.6 的官方支持(没有进行任何更改以故意破坏旧版本,但未来将不会测试旧版本);
添加对 Django 1.8 和 Django 1.9 的官方支持 #62;
修复了创建 Rule 时的问题,其中 weekday 参数是 Weekday 实例而不是整数 #57。
1.2.0
为事件添加了一个选项,使其发生在给定月份的星期几的第四天 #29;
修复了每年定期发生的事件的 to_text 方法中的偏差错误 #30;
修复了 JavaScript 小部件中的错误,该错误会导致在当前日历月份天数少于所选日期的情况下,固定日期的每月事件的日期描述渲染不正确 #31;
添加了法语翻译 #32 - 如果已覆盖小部件 JavaScript 以便没有 recurrence 对象的 language_code 成员,则可能不兼容 #33;
添加了西班牙语翻译 #49。
添加数据库迁移 - 运行 python manage.py migrate recurrence --fake 应该对当前版本足够 - 1.1.0 和 1.2.0 之间的数据库架构没有发生变化;
修复了 Django 1.4 的损坏测试。
1.1.0
添加了实验性的 Python 3 支持。
增加了广泛的测试覆盖率(从 0% 到 81%)。
添加了文档(包括此变更日志)。
移除了 RecurrenceModelField 和 RecurrenceModelDescriptor,这些字段似乎已经有一段时间没有按预期工作。
修复了 1.0.3 版本中引入的 bug,该 bug 阻止了 django-recurrence JavaScript 的工作 #27。
如果将 None 保存到 RecurrenceField(其中 null=False)时不要引发 ValueError,以与其他字段类型保持一致 #22。
确保空重复对象为假值 #25。
修复了 to_recurrence_object 中的复制粘贴错误,该错误阻止了排除规则的正确填充。
修复了 create_from_recurrence_object 中的拼写错误,该错误阻止了它与包含或排除规则一起工作。
其他一些非常小的错误修复。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。