{"id":13415857,"url":"https://github.com/jazzband/django-recurrence","last_synced_at":"2025-06-22T16:07:46.554Z","repository":{"id":2522551,"uuid":"3498641","full_name":"jazzband/django-recurrence","owner":"jazzband","description":"Utility for working with recurring dates in Django.","archived":false,"fork":false,"pushed_at":"2024-10-03T15:02:28.000Z","size":649,"stargazers_count":516,"open_issues_count":65,"forks_count":191,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-06-22T00:12:44.231Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://django-recurrence.readthedocs.org/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jazzband.png","metadata":{"funding":{"custom":["https://jazzband.co/donate"]},"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-02-20T22:41:02.000Z","updated_at":"2025-06-20T15:44:02.000Z","dependencies_parsed_at":"2025-03-14T23:31:13.267Z","dependency_job_id":null,"html_url":"https://github.com/jazzband/django-recurrence","commit_stats":{"total_commits":350,"total_committers":57,"mean_commits":6.140350877192983,"dds":0.5257142857142857,"last_synced_commit":"d4d00d2ba9d2b510e947cb94f954b5e73b740f76"},"previous_names":["django-recurrence/django-recurrence"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jazzband/django-recurrence","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzband%2Fdjango-recurrence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzband%2Fdjango-recurrence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzband%2Fdjango-recurrence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzband%2Fdjango-recurrence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jazzband","download_url":"https://codeload.github.com/jazzband/django-recurrence/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzband%2Fdjango-recurrence/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261320438,"owners_count":23140940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T21:00:52.571Z","updated_at":"2025-06-22T16:07:41.542Z","avatar_url":"https://github.com/jazzband.png","language":"Python","funding_links":["https://jazzband.co/donate"],"categories":["Third-Party Packages","Python"],"sub_categories":["Models"],"readme":"\ndjango-recurrence\n=================\n\n.. image:: https://jazzband.co/static/img/badge.svg\n   :target: https://jazzband.co/\n   :alt: Jazzband\n\n.. image:: https://img.shields.io/github/stars/jazzband/django-recurrence.svg?label=Stars\u0026style=socialcA\n   :target: https://github.com/jazzband/django-recurrence\n   :alt: GitHub\n\n.. image:: https://img.shields.io/pypi/v/django-recurrence.svg\n   :target: https://pypi.org/project/django-recurrence/\n   :alt: PyPI release\n\n.. image:: https://img.shields.io/pypi/pyversions/django-recurrence.svg\n   :target: https://pypi.org/project/django-recurrence/\n   :alt: Supported Python versions\n\n.. image:: https://img.shields.io/pypi/djversions/django-recurrence.svg\n   :target: https://pypi.org/project/django-recurrence/\n   :alt: Supported Django versions\n\n.. image:: https://img.shields.io/readthedocs/django-recurrence.svg\n   :target: https://django-recurrence.readthedocs.io/\n   :alt: Documentation\n\n.. image:: https://github.com/jazzband/django-recurrence/workflows/Test/badge.svg\n   :target: https://github.com/jazzband/django-recurrence/actions\n   :alt: GitHub actions\n\n.. image:: https://codecov.io/gh/jazzband/django-recurrence/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/jazzband/django-recurrence\n   :alt: Coverage\n\n\ndjango-recurrence is a utility for working with recurring dates in Django.\n\n\nFunctionality\n-------------\n\n* Recurrence/Rule objects using a subset of rfc2445\n  (wraps ``dateutil.rrule``) for specifying recurring date/times,\n* ``RecurrenceField`` for storing recurring datetimes in the database, and\n* JavaScript widget.\n\n``RecurrenceField`` provides a Django model field which serializes\nrecurrence information for storage in the database.\n\nFor example - say you were storing information about a university course\nin your app. You could use a model like this:\n\n.. code:: python\n\n   import recurrence.fields\n\n   class Course(models.Model):\n       title = models.CharField(max_length=200)\n       start = models.TimeField()\n       end = models.TimeField()\n       recurrences = recurrence.fields.RecurrenceField()\n\nYou’ll notice that I’m storing my own start and end time.\nThe recurrence field only deals with *recurrences*\nnot with specific time information.\nI have an event that starts at 2pm.\nIts recurrences would be “every Friday”.\n\n\nDocumentation\n-------------\n\nFor more information on installation and configuration see the documentation at:\n\nhttps://django-recurrence.readthedocs.io/\n\n\nIssues\n------\n\nIf you have questions or have trouble using the app please file a bug report at:\n\nhttps://github.com/jazzband/django-recurrence/issues\n\n\nContributions\n-------------\n\nAll contributions are welcome!\n\nIt is best to separate proposed changes and PRs into small, distinct patches\nby type so that they can be merged faster into upstream and released quicker.\n\nOne way to organize contributions would be to separate PRs for e.g.\n\n* bugfixes,\n* new features,\n* code and design improvements,\n* documentation improvements, or\n* tooling and CI improvements.\n\nMerging contributions requires passing the checks configured\nwith the CI. This includes running tests and linters successfully\non the currently officially supported Python and Django versions.\n\nThe test automation is run automatically with GitHub Actions, but you can\nrun it locally with the ``tox`` command before pushing commits.\n\nThis is a `Jazzband \u003chttps://jazzband.co\u003e`_ project. By contributing you agree to abide by the `Contributor Code of Conduct \u003chttps://jazzband.co/about/conduct\u003e`_ and follow the `guidelines \u003chttps://jazzband.co/about/guidelines\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazzband%2Fdjango-recurrence","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjazzband%2Fdjango-recurrence","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazzband%2Fdjango-recurrence/lists"}