diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ff8e5e29..cde90cb0 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,12 +13,12 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-20.04]
-        python-version: ['3.8']
-        toxenv: [
-            django32-celery53-drf313, django32-celery53-drflatest,
-            django42-celery53-drflatest,
-            quality, docs
-        ]
+        python-version:
+        - '3.8'
+        - '3.11'
+        - '3.12'
+        toxenv: [django42-celery53-drflatest, django42-celery53-drflatest,
+          quality, docs, django42]
 
     steps:
     - uses: actions/checkout@v4
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 88860b36..5120b571 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -14,6 +14,14 @@ Change Log
 Unreleased
 ~~~~~~~~~~
 
+[3.2.0] - 2024-03-12
+~~~~~~~~~~~~~~~~~~~~
+
+Added
++++++
+* Adding python 3.11 support.
+* Adding python 3.12 support.
+* Removed django32 support.
 
 [3.1.0] - 2023-07-21
 ~~~~~~~~~~~~~~~~~~~~
diff --git a/requirements/base.txt b/requirements/base.txt
index 3f3600ec..668e2b1b 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -8,8 +8,9 @@ amqp==5.2.0
     # via kombu
 asgiref==3.7.2
     # via django
-backports-zoneinfo[tzdata]==0.2.1
+backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
     # via
+    #   -c requirements/constraints.txt
     #   celery
     #   django
     #   kombu
@@ -31,7 +32,7 @@ click-plugins==1.1.1
     # via celery
 click-repl==0.3.0
     # via celery
-django==4.2.10
+django==4.2.11
     # via
     #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.in
@@ -50,7 +51,7 @@ inflection==0.5.1
     # via drf-yasg
 kombu==5.3.5
     # via celery
-packaging==23.2
+packaging==24.0
     # via drf-yasg
 prompt-toolkit==3.0.43
     # via click-repl
diff --git a/requirements/ci.txt b/requirements/ci.txt
index 88a39ff7..9f335db1 100644
--- a/requirements/ci.txt
+++ b/requirements/ci.txt
@@ -16,7 +16,7 @@ filelock==3.13.1
     # via
     #   tox
     #   virtualenv
-packaging==23.2
+packaging==24.0
     # via
     #   pyproject-api
     #   tox
@@ -32,7 +32,7 @@ tomli==2.0.1
     # via
     #   pyproject-api
     #   tox
-tox==4.13.0
+tox==4.14.1
     # via -r requirements/ci.in
 virtualenv==20.25.1
     # via tox
diff --git a/requirements/constraints.txt b/requirements/constraints.txt
index f61a3260..fcbfa391 100644
--- a/requirements/constraints.txt
+++ b/requirements/constraints.txt
@@ -13,3 +13,5 @@
 -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
 
 celery<6.0
+
+backports.zoneinfo;python_version<"3.9"
diff --git a/requirements/dev.txt b/requirements/dev.txt
index a607be3f..1d8cdeb1 100644
--- a/requirements/dev.txt
+++ b/requirements/dev.txt
@@ -17,8 +17,9 @@ astroid==3.1.0
     #   -r requirements/quality.txt
     #   pylint
     #   pylint-celery
-backports-zoneinfo[tzdata]==0.2.1
+backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
     # via
+    #   -c requirements/constraints.txt
     #   -r requirements/test.txt
     #   celery
     #   django
@@ -92,7 +93,7 @@ distlib==0.3.8
     # via
     #   -r requirements/ci.txt
     #   virtualenv
-django==4.2.10
+django==4.2.11
     # via
     #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/test.txt
@@ -123,8 +124,9 @@ filelock==3.13.1
     #   -r requirements/ci.txt
     #   tox
     #   virtualenv
-importlib-metadata==7.0.1
+importlib-metadata==6.11.0
     # via
+    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/pip-tools.txt
     #   build
 inflection==0.5.1
@@ -159,7 +161,7 @@ mccabe==0.7.0
     #   pylint
 mock==5.1.0
     # via -r requirements/test.txt
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/ci.txt
     #   -r requirements/pip-tools.txt
@@ -175,7 +177,7 @@ pbr==6.0.0
     # via
     #   -r requirements/quality.txt
     #   stevedore
-pip-tools==7.4.0
+pip-tools==7.4.1
     # via -r requirements/pip-tools.txt
 platformdirs==4.2.0
     # via
@@ -229,7 +231,7 @@ pyproject-hooks==1.0.0
     #   -r requirements/pip-tools.txt
     #   build
     #   pip-tools
-pytest==8.1.0
+pytest==8.1.1
     # via
     #   -r requirements/test.txt
     #   pytest-cov
@@ -302,7 +304,7 @@ tomlkit==0.12.4
     # via
     #   -r requirements/quality.txt
     #   pylint
-tox==4.13.0
+tox==4.14.1
     # via -r requirements/ci.txt
 typing-extensions==4.10.0
     # via
@@ -335,11 +337,11 @@ wcwidth==0.2.13
     # via
     #   -r requirements/test.txt
     #   prompt-toolkit
-wheel==0.42.0
+wheel==0.43.0
     # via
     #   -r requirements/pip-tools.txt
     #   pip-tools
-zipp==3.17.0
+zipp==3.18.0
     # via
     #   -r requirements/pip-tools.txt
     #   importlib-metadata
diff --git a/requirements/doc.txt b/requirements/doc.txt
index 06e00b90..01c4aa73 100644
--- a/requirements/doc.txt
+++ b/requirements/doc.txt
@@ -24,8 +24,9 @@ babel==2.14.0
     # via
     #   pydata-sphinx-theme
     #   sphinx
-backports-zoneinfo[tzdata]==0.2.1
+backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
     # via
+    #   -c requirements/constraints.txt
     #   -r requirements/base.txt
     #   celery
     #   django
@@ -75,7 +76,7 @@ cryptography==42.0.5
     # via secretstorage
 deepmerge==1.1.1
     # via sphinxcontrib-openapi
-django==4.2.10
+django==4.2.11
     # via
     #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   -r requirements/base.txt
@@ -107,12 +108,13 @@ idna==3.6
     # via requests
 imagesize==1.4.1
     # via sphinx
-importlib-metadata==7.0.1
+importlib-metadata==6.11.0
     # via
+    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
     #   keyring
     #   sphinx
     #   twine
-importlib-resources==6.1.2
+importlib-resources==6.3.0
     # via
     #   jsonschema
     #   jsonschema-specifications
@@ -157,7 +159,7 @@ nh3==0.2.15
     # via readme-renderer
 openapi-codec==1.3.2
     # via django-rest-swagger
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/base.txt
     #   drf-yasg
@@ -310,7 +312,7 @@ wcwidth==0.2.13
     # via
     #   -r requirements/base.txt
     #   prompt-toolkit
-zipp==3.17.0
+zipp==3.18.0
     # via
     #   importlib-metadata
     #   importlib-resources
diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt
index 8528adba..8c586a23 100644
--- a/requirements/pip-tools.txt
+++ b/requirements/pip-tools.txt
@@ -8,11 +8,13 @@ build==1.1.1
     # via pip-tools
 click==8.1.7
     # via pip-tools
-importlib-metadata==7.0.1
-    # via build
-packaging==23.2
+importlib-metadata==6.11.0
+    # via
+    #   -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt
+    #   build
+packaging==24.0
     # via build
-pip-tools==7.4.0
+pip-tools==7.4.1
     # via -r requirements/pip-tools.in
 pyproject-hooks==1.0.0
     # via
@@ -23,9 +25,9 @@ tomli==2.0.1
     #   build
     #   pip-tools
     #   pyproject-hooks
-wheel==0.42.0
+wheel==0.43.0
     # via pip-tools
-zipp==3.17.0
+zipp==3.18.0
     # via importlib-metadata
 
 # The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/pip.txt b/requirements/pip.txt
index 66656035..0094cc68 100644
--- a/requirements/pip.txt
+++ b/requirements/pip.txt
@@ -4,7 +4,7 @@
 #
 #    make upgrade
 #
-wheel==0.42.0
+wheel==0.43.0
     # via -r requirements/pip.in
 
 # The following packages are considered to be unsafe in a requirements file:
diff --git a/requirements/test.txt b/requirements/test.txt
index 35c2ff71..cf663f9d 100644
--- a/requirements/test.txt
+++ b/requirements/test.txt
@@ -12,8 +12,9 @@ asgiref==3.7.2
     # via
     #   -r requirements/base.txt
     #   django
-backports-zoneinfo[tzdata]==0.2.1
+backports-zoneinfo[tzdata]==0.2.1 ; python_version < "3.9"
     # via
+    #   -c requirements/constraints.txt
     #   -r requirements/base.txt
     #   celery
     #   django
@@ -74,7 +75,7 @@ kombu==5.3.5
     #   celery
 mock==5.1.0
     # via -r requirements/test.in
-packaging==23.2
+packaging==24.0
     # via
     #   -r requirements/base.txt
     #   -r requirements/test.in
@@ -86,7 +87,7 @@ prompt-toolkit==3.0.43
     # via
     #   -r requirements/base.txt
     #   click-repl
-pytest==8.1.0
+pytest==8.1.1
     # via
     #   pytest-cov
     #   pytest-django
diff --git a/setup.py b/setup.py
index fb3418a8..a44b0abe 100644
--- a/setup.py
+++ b/setup.py
@@ -119,12 +119,13 @@ def is_requirement(line):
     classifiers=[
         'Development Status :: 4 - Beta',
         'Framework :: Django',
-        'Framework :: Django :: 3.2',
         'Framework :: Django :: 4.2',
         'Intended Audience :: Developers',
         'License :: OSI Approved :: Apache Software License',
         'Natural Language :: English',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
     ],
 )
diff --git a/tox.ini b/tox.ini
index d70c7231..c514199a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,14 +1,11 @@
 [tox]
 envlist =
-    py38-django{32,42}-celery{53}-drf{313,latest}
+    py{38,311,312}-django{42}-celery{53}-drf{313,latest}
     quality
     docs
-
 [testenv]
 deps =
-    django32: Django>=3.2,<4.0
     django42: Django>=4.2,<4.3
-    drf313: djangorestframework>=3.13,<3.14
     drflatest: djangorestframework
     -r{toxinidir}/requirements/test.txt
 commands =
@@ -19,6 +16,8 @@ allowlist_externals =
     make
     rm
 deps =
+    setuptools
+    wheel
     -r{toxinidir}/requirements/doc.txt
 commands =
     doc8 --ignore-path docs/_build --ignore-path docs/rest_api.rst README.rst docs
diff --git a/user_tasks/__init__.py b/user_tasks/__init__.py
index 3bcf3a89..32102bd5 100644
--- a/user_tasks/__init__.py
+++ b/user_tasks/__init__.py
@@ -4,7 +4,7 @@
 
 from django.dispatch import Signal
 
-__version__ = '3.1.0'
+__version__ = '3.2.0'
 
 
 # This signal is emitted when a user task reaches any final state: