diff --git a/pkgs/development/python-modules/django-cryptography/default.nix b/pkgs/development/python-modules/django-cryptography/default.nix index 7f4d2804c4dd..1d2c375e2749 100644 --- a/pkgs/development/python-modules/django-cryptography/default.nix +++ b/pkgs/development/python-modules/django-cryptography/default.nix @@ -5,45 +5,52 @@ django-appconf, fetchFromGitHub, lib, - python, - pythonOlder, + pytestCheckHook, + pytest-django, setuptools, }: -buildPythonPackage rec { +buildPythonPackage { pname = "django-cryptography"; - version = "1.1"; - disabled = pythonOlder "3.7"; - format = "pyproject"; + version = "1.1-unstable-2024-02-16"; + pyproject = true; src = fetchFromGitHub { owner = "georgemarshall"; repo = "django-cryptography"; - tag = version; - hash = "sha256-C3E2iT9JdLvF+1g+xhZ8dPDjjh25JUxLAtTMnalIxPk="; + rev = "a5cde9beed707a14a2ef2f1f7f1fee172feb8b5e"; + hash = "sha256-Xj/fw8EapsYvVbZPRQ81yeE9QpIQ1TIuk+ASOCGh/Uc="; }; - nativeBuildInputs = [ setuptools ]; + postPatch = '' + substituteInPlace setup.cfg \ + --replace-fail "packages = django_cryptography" "packages = find:" + ''; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ cryptography django django-appconf ]; - patches = [ - # See: https://github.com/georgemarshall/django-cryptography/pull/88 - ./fix-setup-cfg.patch - ]; - pythonImportsCheck = [ "django_cryptography" ]; - checkPhase = '' - runHook preCheck - ${python.interpreter} ./runtests.py - runHook postCheck + nativeCheckInputs = [ + pytest-django + pytestCheckHook + ]; + + preCheck = '' + export DJANGO_SETTINGS_MODULE=tests.settings ''; + disabledTests = [ + # self.assertEqual(len(errors), 1) - AssertionError: 0 != 1 + "test_field_checks" + ]; + meta = with lib; { homepage = "https://github.com/georgemarshall/django-cryptography"; description = "Set of primitives for performing cryptography in Django"; diff --git a/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch b/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch deleted file mode 100644 index 0cb7b9dba2aa..000000000000 --- a/pkgs/development/python-modules/django-cryptography/fix-setup-cfg.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/setup.cfg b/setup.cfg -index 865b4c3..577d917 100644 ---- a/setup.cfg -+++ b/setup.cfg -@@ -35,7 +35,10 @@ project_urls = - Documentation = https://django-cryptography.readthedocs.io - - [options] --packages = django_cryptography -+packages = -+ django_cryptography -+ django_cryptography.core -+ django_cryptography.utils - python_requires = >=3.6 - include_package_data = True - install_requires = diff --git a/pkgs/development/python-modules/django-jinja2/default.nix b/pkgs/development/python-modules/django-jinja/default.nix similarity index 54% rename from pkgs/development/python-modules/django-jinja2/default.nix rename to pkgs/development/python-modules/django-jinja/default.nix index 0bbaf6e0699d..20f88ca5ac2c 100644 --- a/pkgs/development/python-modules/django-jinja2/default.nix +++ b/pkgs/development/python-modules/django-jinja/default.nix @@ -1,20 +1,24 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, + + # build-system + setuptools, + + # dependencies django, jinja2, - python, + + # tests + pytest-django, + pytestCheckHook, }: buildPythonPackage rec { pname = "django-jinja"; version = "2.11.0"; - - disabled = pythonOlder "3.8"; - - format = "setuptools"; + pyproject = true; src = fetchFromGitHub { owner = "niwinz"; @@ -23,17 +27,34 @@ buildPythonPackage rec { hash = "sha256-0gkv9xinHux8TRiNBLl/JgcimXU3CzysxzGR2jn7OZ4="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ django jinja2 ]; - checkPhase = '' - runHook preCheck + nativeCheckInputs = [ + pytestCheckHook + pytest-django + ]; - ${python.interpreter} testing/runtests.py + preCheck = '' + pushd testing + export DJANGO_SETTINGS_MODULE=settings + ''; - runHook postCheck + pytestFlagsArray = [ + "testapp/tests.py" + ]; + + disabledTests = lib.optionals (lib.versionAtLeast django.version "5.2") [ + # https://github.com/niwinz/django-jinja/issues/317 + "test_autoscape_with_form_errors" + ]; + + postCheck = '' + popd ''; meta = { diff --git a/pkgs/development/python-modules/django-rest-registration/default.nix b/pkgs/development/python-modules/django-rest-registration/default.nix index 695da5c5470c..bd3f7ff6e52c 100644 --- a/pkgs/development/python-modules/django-rest-registration/default.nix +++ b/pkgs/development/python-modules/django-rest-registration/default.nix @@ -5,9 +5,10 @@ djangorestframework, fetchFromGitHub, pytest-django, + pytest-xdist, pytestCheckHook, pythonOlder, - jwt, + pyjwt, setuptools, }: @@ -35,16 +36,15 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook pytest-django - jwt + pytest-xdist + pyjwt ]; pythonImportsCheck = [ "rest_registration" ]; disabledTests = [ - # This test fails on Python 3.10 + # Failed: DID NOT RAISE "test_convert_html_to_text_fails" - # This test is broken and was removed after 0.7.3. Remove this line once version > 0.7.3 - "test_coreapi_autoschema_success" ]; meta = { diff --git a/pkgs/development/python-modules/django-scheduler/default.nix b/pkgs/development/python-modules/django-scheduler/default.nix index 3ffe10f0d65c..2c1d48a428a0 100644 --- a/pkgs/development/python-modules/django-scheduler/default.nix +++ b/pkgs/development/python-modules/django-scheduler/default.nix @@ -30,9 +30,9 @@ buildPythonPackage rec { dependencies = [ django + icalendar python-dateutil pytz - icalendar ]; nativeCheckInputs = [ @@ -44,6 +44,24 @@ buildPythonPackage rec { export DJANGO_SETTINGS_MODULE=tests.settings ''; + patches = [ + # Remove in Django 5.1 + # https://github.com/llazzaro/django-scheduler/pull/567 + ./index_together.patch + ]; + + postPatch = '' + # Remove in Django 5.1 + substituteInPlace tests/settings.py \ + --replace-fail "SHA1PasswordHasher" "PBKDF2PasswordHasher" + ''; + + disabledTests = lib.optionals (lib.versionAtLeast django.version "5.1") [ + # test_delete_event_authenticated_user - AssertionError: 302 != 200 + "test_delete_event_authenticated_user" + "test_event_creation_authenticated_user" + ]; + pythonImportsCheck = [ "schedule" ]; meta = with lib; { diff --git a/pkgs/development/python-modules/django-scheduler/index_together.patch b/pkgs/development/python-modules/django-scheduler/index_together.patch new file mode 100644 index 000000000000..5777410eca67 --- /dev/null +++ b/pkgs/development/python-modules/django-scheduler/index_together.patch @@ -0,0 +1,65 @@ +From d691550163941db6dbcec2f347fee4d3941615a0 Mon Sep 17 00:00:00 2001 +From: Robin +Date: Wed, 1 Jan 2025 10:31:44 -0500 +Subject: [PATCH 1/2] Update calendars.py + +Django 5.1 ... index_together deprecated. +--- + schedule/models/calendars.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/schedule/models/calendars.py b/schedule/models/calendars.py +index 81f8a7de..d37097a7 100644 +--- a/schedule/models/calendars.py ++++ b/schedule/models/calendars.py +@@ -231,7 +231,7 @@ class CalendarRelation(models.Model): + class Meta: + verbose_name = _("calendar relation") + verbose_name_plural = _("calendar relations") +- index_together = [("content_type", "object_id")] ++ indexes = [models.Index(fields=["content_type", "object_id"])] + + def __str__(self): + return "{} - {}".format(self.calendar, self.content_object) + +From 768d2d3842ce6af8115741ef5758a72ab4659491 Mon Sep 17 00:00:00 2001 +From: Robin +Date: Wed, 1 Jan 2025 10:32:56 -0500 +Subject: [PATCH 2/2] Update events.py + +Django 5.1 .... index_together deprecated +--- + schedule/models/events.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/schedule/models/events.py b/schedule/models/events.py +index bf6fa5f1..bc9671c5 100644 +--- a/schedule/models/events.py ++++ b/schedule/models/events.py +@@ -92,7 +92,7 @@ class Event(models.Model): + class Meta: + verbose_name = _("event") + verbose_name_plural = _("events") +- index_together = (("start", "end"),) ++ indexes = [models.Index(fields=["start", "end"])] + + def __str__(self): + return gettext("%(title)s: %(start)s - %(end)s") % { +@@ -571,7 +571,7 @@ class EventRelation(models.Model): + class Meta: + verbose_name = _("event relation") + verbose_name_plural = _("event relations") +- index_together = [("content_type", "object_id")] ++ indexes = [models.Index(fields=["content_type", "object_id"])] + + def __str__(self): + return "{}({})-{}".format( +@@ -594,7 +594,7 @@ class Occurrence(models.Model): + class Meta: + verbose_name = _("occurrence") + verbose_name_plural = _("occurrences") +- index_together = (("start", "end"),) ++ indexes = [models.Index(fields=["start", "end"])] + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) diff --git a/pkgs/development/python-modules/mezzanine/default.nix b/pkgs/development/python-modules/mezzanine/default.nix index e96d65184f84..800b5ba4e421 100644 --- a/pkgs/development/python-modules/mezzanine/default.nix +++ b/pkgs/development/python-modules/mezzanine/default.nix @@ -68,6 +68,8 @@ buildPythonPackage rec { ]; meta = with lib; { + # not updated to django 5.x + broken = lib.versionAtLeast django.version "5"; description = "Content management platform built using the Django framework"; mainProgram = "mezzanine-project"; longDescription = '' diff --git a/pkgs/development/python-modules/pylint-django/default.nix b/pkgs/development/python-modules/pylint-django/default.nix index 01aa04f0817a..f18ca729a808 100644 --- a/pkgs/development/python-modules/pylint-django/default.nix +++ b/pkgs/development/python-modules/pylint-django/default.nix @@ -9,21 +9,18 @@ poetry-core, pylint-plugin-utils, pytestCheckHook, - pythonOlder, }: buildPythonPackage rec { pname = "pylint-django"; - version = "2.6.1"; + version = "2.6.1-unstable-2025-11-09"; pyproject = true; - disabled = pythonOlder "3.9"; - src = fetchFromGitHub { owner = "PyCQA"; repo = "pylint-django"; - tag = "v${version}"; - hash = "sha256-9b0Sbo6E036UmUmP/CVPrS9cxxKtkMMZtqJsI53g4sU="; + rev = "e40d785abbf26af0738c14247fb4ac0aa7265b24"; + hash = "sha256-INQSQjubcwQwspaxevXQOF92L2K9WRLMLYsP18Ffhos="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/pyscaffoldext-django/default.nix b/pkgs/development/python-modules/pyscaffoldext-django/default.nix index e0e9ca4cf69f..b86594b4e8f1 100644 --- a/pkgs/development/python-modules/pyscaffoldext-django/default.nix +++ b/pkgs/development/python-modules/pyscaffoldext-django/default.nix @@ -2,18 +2,14 @@ lib, buildPythonPackage, fetchPypi, + + # build-system setuptools, setuptools-scm, - wheel, + + # dependencies django, pyscaffold, - configupdater, - pre-commit, - pytest, - pytest-cov, - pytest-xdist, - tox, - virtualenv, }: buildPythonPackage rec { @@ -26,29 +22,19 @@ buildPythonPackage rec { hash = "sha256-5yzF3VK/9VlCSrRsRJWX4arr9n34G2R6O5A51jTpLhg="; }; - nativeBuildInputs = [ + build-system = [ setuptools setuptools-scm - wheel ]; - propagatedBuildInputs = [ + dependencies = [ django pyscaffold ]; - optional-dependencies = { - testing = [ - configupdater - pre-commit - pytest - pytest-cov - pytest-xdist - setuptools-scm - tox - virtualenv - ]; - }; + pythonRelaxDeps = [ "django" ]; + + doCheck = false; # tests require git checkout pythonImportsCheck = [ "pyscaffoldext.django" ]; diff --git a/pkgs/servers/mail/mailman/python.nix b/pkgs/servers/mail/mailman/python.nix index f99f5a9bc825..c8fd7159f717 100644 --- a/pkgs/servers/mail/mailman/python.nix +++ b/pkgs/servers/mail/mailman/python.nix @@ -26,6 +26,7 @@ lib.fix ( [1] 72a14ea563a3f5bf85db659349a533fe75a8b0ce [2] f931bc81d63f5cfda55ac73d754c87b3fd63b291 */ + # https://gitlab.com/mailman/hyperkitty/-/merge_requests/681 django = super.django_4; django-allauth = super.django-allauth.overrideAttrs ( diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 396a8a1c0f79..e5d023c680ce 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4093,7 +4093,7 @@ self: super: with self; { django-ipware = callPackage ../development/python-modules/django-ipware { }; - django-jinja = callPackage ../development/python-modules/django-jinja2 { }; + django-jinja = callPackage ../development/python-modules/django-jinja { }; django-jquery-js = callPackage ../development/python-modules/django-jquery-js { };