Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]

steps:
- uses: actions/checkout@v1
Expand Down
7 changes: 7 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@
History
=======

2.6.0
-----

* Drop Python 3.9 support
* Add Python 3.14 support
* Add Django 6.0 support

2.5.0
-----

Expand Down
23 changes: 9 additions & 14 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ Targets & testing

The codebase is targeted and tested against:

* Django 3.2.x against Python 3.8, 3.9, 3.10
* Django 4.2.x against Python 3.8, 3.9, 3.10, 3.11, 3.12
* Django 5.2.x against Python 3.10, 3.11, 3.12, 3.13
* Django 4.2.x against Python 3.10, 3.11, 3.12
* Django 5.2.x against Python 3.10, 3.11, 3.12, 3.13, 3.14
* Django 6.0.x against Python 3.12, 3.13, 3.14

To run the tests against all target environments, install `tox
<https://testrun.org/tox/latest/>`_ and then execute the command::
Expand Down Expand Up @@ -146,6 +146,12 @@ By default you will need to install `django-extensions` or comparable libraries
if you plan on adding Django Organizations as an installed app to your Django
project. See below on configuring.

Upgrading
---------

Upgrading django-organizations is expected to be a low-impact operation. See the Upgrading
section in the Getting Started docs for additional considerations.

Configuring
-----------

Expand Down Expand Up @@ -268,14 +274,3 @@ License

Anyone is free to use or modify this software under the terms of the BSD
license.

Sponsors
========

`Muster <https://www.muster.com/home?utm_source=github&campaign=opensource>`_ is building precision advocacy software to impact policy through grassroots action.

.. image:: https://www.muster.com/hs-fs/hubfs/muster_logo-2.png?width=600&name=muster_logo-2.png
:target: https://www.muster.com/home?utm_source=github&campaign=opensource
:width: 400
:alt: Alternative text

1 change: 1 addition & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ def pytest_configure():
DATABASES={
"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "test.sqlite3"}
},
DEFAULT_AUTO_FIELD="django.db.models.AutoField",
INSTALLED_APPS=[
"django.contrib.auth",
"django.contrib.contenttypes",
Expand Down
15 changes: 15 additions & 0 deletions docs/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,21 @@ consistent**, including keyword arguments. Otherwise you will end up generating
extraneous and possibly conflicting migrations in your own app. The SlugField
must accept the `populate_from` keyword argument.

Upgrading
=========

Updating Django from a pre-6.0 version to 6.0 or above may result in creating
new migrations for custom organization models if you do not already have
`DEFAULT_AUTO_FIELD` set in your project. This is because in Django 6.0 the
default field changed from `AutoField` (with an `IntegerField` under the hood)
to a `BigAutoField` (with a `BigIntegerField` under the hood).

This applies to your project and your project migrations, however, so
you are free to treat this however you want, e.g. if you want to keep `IntegerFields`
as the field type, configure your project settings as much or separate the `database
and state operations <https://docs.djangoproject.com/en/6.0/ref/migration-operations/#django.db.migrations.operations.SeparateDatabaseAndState>`_
in the migration (maybe not ideal but safe with regard to your database).

Users and multi-account membership
==================================

Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ authors = [
]
description = "Group accounts for Django"
readme = "README.rst"
requires-python = ">=3.9"
requires-python = ">=3.10"
license = {text = "BSD License"}
classifiers = [
"Development Status :: 5 - Production/Stable",
Expand All @@ -15,15 +15,15 @@ classifiers = [
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
]
dependencies = [
"Django>=3.2",
"Django>=4.2",
"django-extensions>=2.0.8",
]
dynamic = ["version"]
Expand Down
7 changes: 4 additions & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,11 @@ classifiers =
License :: OSI Approved :: BSD License
Operating System :: OS Independent
Programming Language :: Python
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12
Programming Language :: Python :: 3.13
Programming Language :: Python :: 3.14
Programming Language :: Python :: Implementation :: CPython
Development Status :: 5 - Production/Stable

Expand All @@ -30,7 +31,7 @@ packages = find:
package_dir=
=src
install_requires =
Django>=3.2.0
Django>=4.2.0
django-extensions>=2.0.8
python_requires = >=3.8

Expand Down
2 changes: 1 addition & 1 deletion src/organizations/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

__author__ = "Ben Lopatin"
__email__ = "ben@benlopatin.com"
__version__ = "2.5.0"
__version__ = "2.6.0"
18 changes: 9 additions & 9 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
[tox]
envlist =
flake8,
py{39,310}-django{32},
py{39}-django{42},
py{310}-django{32}
py{310,311,312}-django{42}
py{310,311,312,313}-django{52}
py{310,311,312,313,314}-django{52}
py{312,313,314}-django{60}

[gh-actions]
python =
3.9: py39
3.10: py310
3.11: py311
3.12: py312
3.13: py313
3.14: py314

[build-system]
build-backend = "hatchling.build"
Expand All @@ -24,22 +24,22 @@ setenv =
PYTHONPATH = {toxinidir}:{toxinidir}/organizations
commands = pytest {posargs} --cov=organizations
basepython =
py39: python3.9
py310: python3.10
py311: python3.11
py312: python3.12
py313: python3.13
py314: python3.14
deps =
hatch>=1.7.0
django32: Django>=3.2,<4
django42: Django>=4.2,<5
django52: Django>=5.2,<6
django42: Django>=4.2.8,<5 # Django 4.2.8 is required for Python 3.12 support
django52: Django>=5.2.8,<6 # Django 5.2.8 is required for Python 3.14 support
django60: Django>=6.0,<6.1
extras = tests

[testenv:flake8]
basepython=python3
deps=
flake8==3.12.7
flake8==7.3.0
commands=
flake8 src/organizations tests

Expand Down