Security News
Introducing the Socket Python SDK
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
.. image:: https://img.shields.io/github/stars/django-recurrence/django-recurrence.svg?label=Stars&style=socialcA :target: https://github.com/jazzband/django-recurrence :alt: GitHub
.. image:: https://img.shields.io/pypi/v/django-recurrence.svg :target: https://pypi.org/project/django-recurrence/ :alt: PyPI release
.. image:: https://img.shields.io/pypi/pyversions/django-recurrence.svg :target: https://pypi.org/project/django-recurrence/ :alt: Supported Python versions
.. image:: https://img.shields.io/pypi/djversions/django-recurrence.svg :target: https://pypi.org/project/django-recurrence/ :alt: Supported Django versions
.. image:: https://img.shields.io/readthedocs/django-recurrence.svg :target: https://django-recurrence.readthedocs.io/ :alt: Documentation
.. image:: https://github.com/django-recurrence/django-recurrence/workflows/Test/badge.svg :target: https://github.com/django-recurrence/django-recurrence/actions :alt: GitHub actions
.. image:: https://codecov.io/gh/django-recurrence/django-recurrence/branch/master/graph/badge.svg :target: https://codecov.io/gh/django-recurrence/django-recurrence :alt: Coverage
django-recurrence is a utility for working with recurring dates in Django.
dateutil.rrule
) for specifying recurring date/times,RecurrenceField
for storing recurring datetimes in the database, andRecurrenceField
provides a Django model field which serializes
recurrence information for storage in the database.
For example - say you were storing information about a university course in your app. You could use a model like this:
.. code:: python
import recurrence.fields
class Course(models.Model): title = models.CharField(max_length=200) start = models.TimeField() end = models.TimeField() recurrences = recurrence.fields.RecurrenceField()
You’ll notice that I’m storing my own start and end time. The recurrence field only deals with recurrences not with specific time information. I have an event that starts at 2pm. Its recurrences would be “every Friday”.
For more information on installation and configuration see the documentation at:
https://django-recurrence.readthedocs.io/
If you have questions or have trouble using the app please file a bug report at:
https://github.com/django-recurrence/django-recurrence/issues
All contributions are welcome!
It is best to separate proposed changes and PRs into small, distinct patches by type so that they can be merged faster into upstream and released quicker.
One way to organize contributions would be to separate PRs for e.g.
Merging contributions requires passing the checks configured with the CI. This includes running tests and linters successfully on the currently officially supported Python and Django versions.
The test automation is run automatically with GitHub Actions, but you can
run it locally with the tox
command before pushing commits.
recurrence.language_code
not being set
by using en-us
for locale in frontend as the default.
[jleclanche]This release contains two backwards incompatible changes - please read the notes below for details.
datetime
objects
in most cases #130. If USE_TZ
is True
(it
defaults to off with a stock Django install) then you'll now get
timezone aware datetime
objects back from django-recurrence. If
you have USE_TZ
as True
, and you don't want this behaviour,
you can set RECURRENCE_USE_TZ
to False
, but please let us
know (via GitHub issues) that you wanted to opt out, so we can
understand what your use case is.RecurrenceField
instances without required=False
will now
require at least one rule or date. This change is intended to bring
django-recurrence into line with how custom fields should
behave. If you don't want to require at least one rule or date,
just set require=False
on your field #133.javascript_catalog
in Django 2 #131.None
into a RecurrenceField
causing a
TypeError
#89`, #122;render
on Django widgets always passes the
renderer
argument, to ensure support for Django 2.1 #125;DeserializationError
to
ValidationError
#111;dtstart
by default. You can opt in to this by setting
include_dtstart=False
on your RecurrenceField
#93;DeserializationError
where expected #103.to_dateutil_rruleset
#81.Rule
creation where the weekday parameter is
an instance of Weekday
rather than an integer #57.to_text
method for events
happening on a regular month each year #30;language_code
member of your recurrence object;python manage.py migrate recurrence --fake
should be sufficient for this version - nothing
has changed about the database schema between 1.1.0 and 1.2.0;RecurrenceModelField
and RecurrenceModelDescriptor
,
which don't appear to have worked as expected for some time.ValueError
if you save None
into a
RecurrenceField
with null=False
#22, for
consistency with other field types.to_recurrence_object
which prevented
exclusion rules from being populated correctly.create_from_recurrence_object
which prevented it
working with inclusion or exclusion rules.FAQs
Django utility wrapping dateutil.rrule
We found that django-recurrence demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.
Security News
A new Rust RFC proposes "Trusted Publishing" for Crates.io, introducing short-lived access tokens via OIDC to improve security and reduce risks associated with long-lived API tokens.