git: 178f4991ec22 - main - net-mgmt/netbox: Create Django 4.2 consumers

From: Kai Knoblich <kai_at_FreeBSD.org>
Date: Sun, 10 Sep 2023 13:16:25 UTC
The branch main has been updated by kai:

URL: https://cgit.FreeBSD.org/ports/commit/?id=178f4991ec22c5c9164d973f091ef067ca28bcb6

commit 178f4991ec22c5c9164d973f091ef067ca28bcb6
Author:     Kai Knoblich <kai@FreeBSD.org>
AuthorDate: 2023-09-10 12:45:55 +0000
Commit:     Kai Knoblich <kai@FreeBSD.org>
CommitDate: 2023-09-10 13:15:32 +0000

    net-mgmt/netbox: Create Django 4.2 consumers
    
    * Django 3.2 is currently the "default" version in the ports tree due
      its long term support until April 2024.  Thus ports that are assigned
      to that version will exist until then.
    
    The following ports are required to make the upgrade of
    net-mgmt/netbox to the 3.6 release possible because it requires
    Django 4.2.
    
    All of the ports listed below were created on the basis of their
    respective original ports:
    
    - devel/py-dj42-django-rq
    - devel/py-dj42-graphene-django
    - www/py-dj42-django-auth-ldap
    - www/py-dj42-django-cors-headers
    - www/py-dj42-django-debug-toolbar
    - www/py-dj42-django-filter
    - www/py-dj42-django-graphiql-debug-toolbar
    - www/py-dj42-django-js-asset
    - www/py-dj42-django-mptt
    - www/py-dj42-django-prometheus
    - www/py-dj42-django-redis
    - www/py-dj42-django-rich
    - www/py-dj42-django-tables2
    - www/py-dj42-django-taggit
    - www/py-dj42-django-timezone-field
    - www/py-dj42-djangorestframework
    - www/py-dj42-drf-spectacular
    - www/py-dj42-drf-spectacular-sidecar
    
    Differential Revision:  https://reviews.freebsd.org/D41664
---
 devel/Makefile                                     |  2 ++
 devel/py-dj42-django-rq/Makefile                   | 35 +++++++++++++++++++
 devel/py-dj42-django-rq/distinfo                   |  3 ++
 devel/py-dj42-django-rq/files/patch-setup.py       | 11 ++++++
 devel/py-dj42-django-rq/pkg-descr                  |  3 ++
 devel/py-dj42-graphene-django/Makefile             | 36 ++++++++++++++++++++
 devel/py-dj42-graphene-django/distinfo             |  3 ++
 devel/py-dj42-graphene-django/files/patch-setup.py | 10 ++++++
 devel/py-dj42-graphene-django/pkg-descr            |  1 +
 www/Makefile                                       | 16 +++++++++
 www/py-dj42-django-auth-ldap/Makefile              | 39 ++++++++++++++++++++++
 www/py-dj42-django-auth-ldap/distinfo              |  3 ++
 .../files/patch-docs_conf.py                       | 20 +++++++++++
 www/py-dj42-django-auth-ldap/pkg-descr             |  4 +++
 www/py-dj42-django-cors-headers/Makefile           | 25 ++++++++++++++
 www/py-dj42-django-cors-headers/distinfo           |  3 ++
 www/py-dj42-django-cors-headers/pkg-descr          |  2 ++
 www/py-dj42-django-debug-toolbar/Makefile          | 26 +++++++++++++++
 www/py-dj42-django-debug-toolbar/distinfo          |  3 ++
 www/py-dj42-django-debug-toolbar/pkg-descr         |  3 ++
 www/py-dj42-django-filter/Makefile                 | 23 +++++++++++++
 www/py-dj42-django-filter/distinfo                 |  3 ++
 www/py-dj42-django-filter/pkg-descr                |  2 ++
 www/py-dj42-django-graphiql-debug-toolbar/Makefile | 25 ++++++++++++++
 www/py-dj42-django-graphiql-debug-toolbar/distinfo |  3 ++
 .../pkg-descr                                      |  2 ++
 www/py-dj42-django-js-asset/Makefile               | 25 ++++++++++++++
 www/py-dj42-django-js-asset/distinfo               |  3 ++
 www/py-dj42-django-js-asset/pkg-descr              |  2 ++
 www/py-dj42-django-mptt/Makefile                   | 24 +++++++++++++
 www/py-dj42-django-mptt/distinfo                   |  3 ++
 www/py-dj42-django-mptt/pkg-descr                  |  2 ++
 www/py-dj42-django-prometheus/Makefile             | 37 ++++++++++++++++++++
 www/py-dj42-django-prometheus/distinfo             |  3 ++
 www/py-dj42-django-prometheus/pkg-descr            | 14 ++++++++
 www/py-dj42-django-redis/Makefile                  | 30 +++++++++++++++++
 www/py-dj42-django-redis/distinfo                  |  3 ++
 www/py-dj42-django-redis/pkg-descr                 | 15 +++++++++
 www/py-dj42-django-rich/Makefile                   | 27 +++++++++++++++
 www/py-dj42-django-rich/distinfo                   |  3 ++
 www/py-dj42-django-rich/pkg-descr                  | 11 ++++++
 www/py-dj42-django-tables2/Makefile                | 28 ++++++++++++++++
 www/py-dj42-django-tables2/distinfo                |  3 ++
 www/py-dj42-django-tables2/pkg-descr               |  3 ++
 www/py-dj42-django-taggit/Makefile                 | 27 +++++++++++++++
 www/py-dj42-django-taggit/distinfo                 |  3 ++
 www/py-dj42-django-taggit/pkg-descr                |  1 +
 www/py-dj42-django-timezone-field/Makefile         | 31 +++++++++++++++++
 www/py-dj42-django-timezone-field/distinfo         |  3 ++
 .../patch-timezone__field_backends_zoneinfo.py     | 16 +++++++++
 www/py-dj42-django-timezone-field/pkg-descr        |  1 +
 www/py-dj42-djangorestframework/Makefile           | 23 +++++++++++++
 www/py-dj42-djangorestframework/distinfo           |  3 ++
 www/py-dj42-djangorestframework/pkg-descr          |  2 ++
 www/py-dj42-drf-spectacular-sidecar/Makefile       | 23 +++++++++++++
 www/py-dj42-drf-spectacular-sidecar/distinfo       |  3 ++
 www/py-dj42-drf-spectacular-sidecar/pkg-descr      |  5 +++
 www/py-dj42-drf-spectacular/Makefile               | 34 +++++++++++++++++++
 www/py-dj42-drf-spectacular/distinfo               |  3 ++
 www/py-dj42-drf-spectacular/pkg-descr              | 24 +++++++++++++
 60 files changed, 744 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 7612c512b49d..acad1df27bc0 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4595,6 +4595,8 @@
     SUBDIR += py-distributed
     SUBDIR += py-dj41-django-rq
     SUBDIR += py-dj41-graphene-django
+    SUBDIR += py-dj42-django-rq
+    SUBDIR += py-dj42-graphene-django
     SUBDIR += py-django-rq
     SUBDIR += py-dockerpty
     SUBDIR += py-docopt
diff --git a/devel/py-dj42-django-rq/Makefile b/devel/py-dj42-django-rq/Makefile
new file mode 100644
index 000000000000..a46b50bb3eef
--- /dev/null
+++ b/devel/py-dj42-django-rq/Makefile
@@ -0,0 +1,35 @@
+PORTNAME=	django-rq
+PORTVERSION=	2.8.1
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Provides Django integration for RQ (Redis Queue)
+WWW=		https://github.com/rq/django-rq
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=2.0:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}redis>=3:databases/py-redis@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}rq>=1.11:devel/py-rq@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}coverage>=0:devel/py-coverage@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}docutils>=0,1:textproc/py-docutils@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}yaml>=0:devel/py-yaml@${PY_FLAVOR} \
+		redis-server:databases/redis
+
+USES=		python
+USE_PYTHON=	autoplist concurrent distutils
+
+NO_ARCH=	yes
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+# https://github.com/rq/django-rq/blob/master/Makefile
+do-test:
+	cd ${WRKSRC} && coverage-${PYTHON_VER} run ${LOCALBASE}/bin/django-admin.py test django_rq --settings=django_rq.tests.settings --pythonpath=.
+	cd ${WRKSRC} && ${PYTHON_CMD} setup.py check --metadata --restructuredtext --strict
+
+.include <bsd.port.mk>
diff --git a/devel/py-dj42-django-rq/distinfo b/devel/py-dj42-django-rq/distinfo
new file mode 100644
index 000000000000..8554ddc8048a
--- /dev/null
+++ b/devel/py-dj42-django-rq/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1685162124
+SHA256 (django-rq-2.8.1.tar.gz) = ff053aa4d1b1e1acc47c99b4a21b514de8745894c00d1e6f4abc8b37d35d66d6
+SIZE (django-rq-2.8.1.tar.gz) = 46955
diff --git a/devel/py-dj42-django-rq/files/patch-setup.py b/devel/py-dj42-django-rq/files/patch-setup.py
new file mode 100644
index 000000000000..93cf04bcee1c
--- /dev/null
+++ b/devel/py-dj42-django-rq/files/patch-setup.py
@@ -0,0 +1,11 @@
+--- setup.py.orig	2023-05-14 01:27:18 UTC
++++ setup.py
+@@ -14,7 +14,7 @@ setup(
+     zip_safe=False,
+     include_package_data=True,
+     package_data={'': ['README.rst']},
+-    install_requires=['django>=2.0', 'rq>=1.14', 'redis>=3'],
++    install_requires=['django>=2.0', 'rq>=1.11', 'redis>=3'],
+     extras_require={
+         'Sentry': ['raven>=6.1.0'],
+         'testing': ['mock>=2.0.0'],
diff --git a/devel/py-dj42-django-rq/pkg-descr b/devel/py-dj42-django-rq/pkg-descr
new file mode 100644
index 000000000000..85e24c643a23
--- /dev/null
+++ b/devel/py-dj42-django-rq/pkg-descr
@@ -0,0 +1,3 @@
+Django integration with RQ, a Redis based Python queuing library. Django-RQ is a
+simple app that allows you to configure your queues in django's settings.py and
+easily use them in your project.
diff --git a/devel/py-dj42-graphene-django/Makefile b/devel/py-dj42-graphene-django/Makefile
new file mode 100644
index 000000000000..7c8895753a12
--- /dev/null
+++ b/devel/py-dj42-graphene-django/Makefile
@@ -0,0 +1,36 @@
+PORTNAME=	graphene-django
+PORTVERSION=	3.0.0
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Graphene Django integration
+WWW=		https://github.com/graphql-python/graphene-django
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}graphene>=3.0<4:devel/py-graphene@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}graphql-core>=3.1.0<4:devel/py-graphql-core@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}graphql-relay>=3.1.1<4:devel/py-graphql-relay@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}promise>=2.1:devel/py-promise@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}text-unidecode>=0:converters/py-text-unidecode@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=	yes
+
+PORTSCOUT=	ignore:1
+
+OPTIONS_DEFINE=	REST_FRAMEWORK
+OPTIONS_DEFAULT=REST_FRAMEWORK
+REST_FRAMEWORK_DESC=	REST framework support
+
+REST_FRAMEWORK_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dj42-djangorestframework>=3.6.3:www/py-dj42-djangorestframework@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/devel/py-dj42-graphene-django/distinfo b/devel/py-dj42-graphene-django/distinfo
new file mode 100644
index 000000000000..0b2ced22678e
--- /dev/null
+++ b/devel/py-dj42-graphene-django/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1686153295
+SHA256 (graphene-django-3.0.0.tar.gz) = 018a8dc4736d99b5bb4a15d7fd0b46c98010e9201cb52a290f6d1f16ae6fefda
+SIZE (graphene-django-3.0.0.tar.gz) = 77525
diff --git a/devel/py-dj42-graphene-django/files/patch-setup.py b/devel/py-dj42-graphene-django/files/patch-setup.py
new file mode 100644
index 000000000000..167679f63d97
--- /dev/null
+++ b/devel/py-dj42-graphene-django/files/patch-setup.py
@@ -0,0 +1,10 @@
+--- setup.py.orig	2020-12-31 06:55:53 UTC
++++ setup.py
+@@ -68,7 +68,6 @@ setup(
+         "promise>=2.1",
+         "text-unidecode",
+     ],
+-    setup_requires=["pytest-runner"],
+     tests_require=tests_require,
+     rest_framework_require=rest_framework_require,
+     extras_require={
diff --git a/devel/py-dj42-graphene-django/pkg-descr b/devel/py-dj42-graphene-django/pkg-descr
new file mode 100644
index 000000000000..1fac522e0ea4
--- /dev/null
+++ b/devel/py-dj42-graphene-django/pkg-descr
@@ -0,0 +1 @@
+A Django integration for Graphene.
diff --git a/www/Makefile b/www/Makefile
index ce3546b17f83..958cc65da538 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1494,6 +1494,22 @@
     SUBDIR += py-dj41-drf-spectacular
     SUBDIR += py-dj41-drf-spectacular-sidecar
     SUBDIR += py-dj41-drf-yasg
+    SUBDIR += py-dj42-django-auth-ldap
+    SUBDIR += py-dj42-django-cors-headers
+    SUBDIR += py-dj42-django-debug-toolbar
+    SUBDIR += py-dj42-django-filter
+    SUBDIR += py-dj42-django-graphiql-debug-toolbar
+    SUBDIR += py-dj42-django-js-asset
+    SUBDIR += py-dj42-django-mptt
+    SUBDIR += py-dj42-django-prometheus
+    SUBDIR += py-dj42-django-redis
+    SUBDIR += py-dj42-django-rich
+    SUBDIR += py-dj42-django-tables2
+    SUBDIR += py-dj42-django-taggit
+    SUBDIR += py-dj42-django-timezone-field
+    SUBDIR += py-dj42-djangorestframework
+    SUBDIR += py-dj42-drf-spectacular
+    SUBDIR += py-dj42-drf-spectacular-sidecar
     SUBDIR += py-django-admin-rangefilter
     SUBDIR += py-django-advanced-filters
     SUBDIR += py-django-allauth
diff --git a/www/py-dj42-django-auth-ldap/Makefile b/www/py-dj42-django-auth-ldap/Makefile
new file mode 100644
index 000000000000..fd413923f1f3
--- /dev/null
+++ b/www/py-dj42-django-auth-ldap/Makefile
@@ -0,0 +1,39 @@
+PORTNAME=	django-auth-ldap
+PORTVERSION=	4.4.0
+CATEGORIES=	www security python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	LDAP integration for django.contrib.auth
+WWW=		https://github.com/django-auth-ldap/django-auth-ldap
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}setuptools_scm>=3.4:devel/py-setuptools_scm@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}ldap>=3.1:net/py-ldap@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent pep517
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=	yes
+PORTDOCS=	*
+OPTIONS_DEFINE=	DOCS
+DOCS_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sphinx>=0,1:textproc/py-sphinx@${PY_FLAVOR}
+
+post-build-DOCS-on:
+	${LOCALBASE}/bin/sphinx-build-${PYTHON_VER} -d ${WRKDIR} -b html ${WRKSRC}/docs ${WRKSRC}/build/sphinx/html
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	(cd ${WRKSRC}/build/sphinx/html && \
+		${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} \
+			"! -name .buildinfo -and ! -name objects.inv")
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-auth-ldap/distinfo b/www/py-dj42-django-auth-ldap/distinfo
new file mode 100644
index 000000000000..1e1086f71eeb
--- /dev/null
+++ b/www/py-dj42-django-auth-ldap/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1690103450
+SHA256 (django-auth-ldap-4.4.0.tar.gz) = 797931ac5d55c4ca14c179d5892420cc2a98aa81e44323d595f5419c1b45c306
+SIZE (django-auth-ldap-4.4.0.tar.gz) = 53117
diff --git a/www/py-dj42-django-auth-ldap/files/patch-docs_conf.py b/www/py-dj42-django-auth-ldap/files/patch-docs_conf.py
new file mode 100644
index 000000000000..d41916245ebc
--- /dev/null
+++ b/www/py-dj42-django-auth-ldap/files/patch-docs_conf.py
@@ -0,0 +1,20 @@
+Avoid the download of various intersphinx inventories during build.  Only two
+intersphinx mappings are used and the documentation can be built/used without
+them.
+
+--- docs/conf.py.orig	2022-06-12 10:26:47 UTC
++++ docs/conf.py
+@@ -188,13 +188,3 @@ texinfo_documents = [
+ # -- Extension configuration -------------------------------------------------
+ 
+ # -- Options for intersphinx extension ---------------------------------------
+-
+-intersphinx_mapping = {
+-    "python": ("https://docs.python.org/3/", None),
+-    "django": (
+-        "https://docs.djangoproject.com/en/stable/",
+-        "https://docs.djangoproject.com/en/stable/_objects/",
+-    ),
+-    "pythonldap": ("https://www.python-ldap.org/en/latest/", None),
+-    "tox": ("https://tox.wiki/en/latest/", None),
+-}
diff --git a/www/py-dj42-django-auth-ldap/pkg-descr b/www/py-dj42-django-auth-ldap/pkg-descr
new file mode 100644
index 000000000000..390903dba8ac
--- /dev/null
+++ b/www/py-dj42-django-auth-ldap/pkg-descr
@@ -0,0 +1,4 @@
+This is a Django authentication backend that authenticates against an LDAP
+service. Configuration can be as simple as a single distinguished name template,
+but there are many rich configuration options for working with users, groups,
+and permissions.
diff --git a/www/py-dj42-django-cors-headers/Makefile b/www/py-dj42-django-cors-headers/Makefile
new file mode 100644
index 000000000000..768b0d27b86f
--- /dev/null
+++ b/www/py-dj42-django-cors-headers/Makefile
@@ -0,0 +1,25 @@
+PORTNAME=	django-cors-headers
+PORTVERSION=	4.2.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+DISTNAME=	django_cors_headers-${PORTVERSION}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Handles server headers required for Cross-Origin Resource Sharing
+WWW=		https://github.com/adamchainz/django-cors-headers
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist pep517
+
+NO_ARCH=		yes
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-cors-headers/distinfo b/www/py-dj42-django-cors-headers/distinfo
new file mode 100644
index 000000000000..33d27f31c824
--- /dev/null
+++ b/www/py-dj42-django-cors-headers/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1689168127
+SHA256 (django_cors_headers-4.2.0.tar.gz) = f9749c6410fe738278bc2b6ef17f05195bc7b251693c035752d8257026af024f
+SIZE (django_cors_headers-4.2.0.tar.gz) = 21183
diff --git a/www/py-dj42-django-cors-headers/pkg-descr b/www/py-dj42-django-cors-headers/pkg-descr
new file mode 100644
index 000000000000..9ba1bc6bd1a8
--- /dev/null
+++ b/www/py-dj42-django-cors-headers/pkg-descr
@@ -0,0 +1,2 @@
+A Django App that adds CORS (Cross-Origin Resource Sharing) headers to
+responses.
diff --git a/www/py-dj42-django-debug-toolbar/Makefile b/www/py-dj42-django-debug-toolbar/Makefile
new file mode 100644
index 000000000000..44df864dda14
--- /dev/null
+++ b/www/py-dj42-django-debug-toolbar/Makefile
@@ -0,0 +1,26 @@
+PORTNAME=	django-debug-toolbar
+PORTVERSION=	4.2.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+DISTNAME=	django_debug_toolbar-${PORTVERSION}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Configurable set of panels to display debug information
+WWW=		https://github.com/jazzband/django-debug-toolbar
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2.4:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}sqlparse>=0.2.0:databases/py-sqlparse@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent pep517
+
+NO_ARCH=	yes
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*django-debug-toolbar
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-debug-toolbar/distinfo b/www/py-dj42-django-debug-toolbar/distinfo
new file mode 100644
index 000000000000..52b9218a4219
--- /dev/null
+++ b/www/py-dj42-django-debug-toolbar/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1692211819
+SHA256 (django_debug_toolbar-4.2.0.tar.gz) = bc7fdaafafcdedefcc67a4a5ad9dac96efd6e41db15bc74d402a54a2ba4854dc
+SIZE (django_debug_toolbar-4.2.0.tar.gz) = 259709
diff --git a/www/py-dj42-django-debug-toolbar/pkg-descr b/www/py-dj42-django-debug-toolbar/pkg-descr
new file mode 100644
index 000000000000..e62114e4b61f
--- /dev/null
+++ b/www/py-dj42-django-debug-toolbar/pkg-descr
@@ -0,0 +1,3 @@
+The Django Debug Toolbar is a configurable set of panels that display various
+debug information about the current request/response and when clicked, display
+more details about the panel's content.
diff --git a/www/py-dj42-django-filter/Makefile b/www/py-dj42-django-filter/Makefile
new file mode 100644
index 000000000000..4ba3cba8c3bb
--- /dev/null
+++ b/www/py-dj42-django-filter/Makefile
@@ -0,0 +1,23 @@
+PORTNAME=	django-filter
+DISTVERSION=	23.2
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Dynamic filtering for querysets with Django
+WWW=		https://github.com/carltongibson/django-filter
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	distutils autoplist
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-filter/distinfo b/www/py-dj42-django-filter/distinfo
new file mode 100644
index 000000000000..991679780fec
--- /dev/null
+++ b/www/py-dj42-django-filter/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1683382975
+SHA256 (django-filter-23.2.tar.gz) = 2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00
+SIZE (django-filter-23.2.tar.gz) = 139433
diff --git a/www/py-dj42-django-filter/pkg-descr b/www/py-dj42-django-filter/pkg-descr
new file mode 100644
index 000000000000..089f799caa3e
--- /dev/null
+++ b/www/py-dj42-django-filter/pkg-descr
@@ -0,0 +1,2 @@
+Django-filter is a reusable Django application allowing users to declaratively
+add dynamic QuerySet filtering from URL parameters.
diff --git a/www/py-dj42-django-graphiql-debug-toolbar/Makefile b/www/py-dj42-django-graphiql-debug-toolbar/Makefile
new file mode 100644
index 000000000000..ff6ecfadde8b
--- /dev/null
+++ b/www/py-dj42-django-graphiql-debug-toolbar/Makefile
@@ -0,0 +1,25 @@
+PORTNAME=	django-graphiql-debug-toolbar
+DISTVERSION=	0.2.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Django Debug Toolbar for GraphiQL IDE
+WWW=		https://github.com/flavors/django-graphiql-debug-toolbar
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=2.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj42-graphene-django>=2.0.0:devel/py-dj42-graphene-django@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj42-django-debug-toolbar>=3.1:www/py-dj42-django-debug-toolbar@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=	yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-graphiql-debug-toolbar/distinfo b/www/py-dj42-django-graphiql-debug-toolbar/distinfo
new file mode 100644
index 000000000000..559e6602138b
--- /dev/null
+++ b/www/py-dj42-django-graphiql-debug-toolbar/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1630337959
+SHA256 (django-graphiql-debug-toolbar-0.2.0.tar.gz) = aec7a9e096594123d9fc359a583da794a0020b5391d941dda584ce1e667e0afd
+SIZE (django-graphiql-debug-toolbar-0.2.0.tar.gz) = 5000
diff --git a/www/py-dj42-django-graphiql-debug-toolbar/pkg-descr b/www/py-dj42-django-graphiql-debug-toolbar/pkg-descr
new file mode 100644
index 000000000000..cb6e9ccf41b5
--- /dev/null
+++ b/www/py-dj42-django-graphiql-debug-toolbar/pkg-descr
@@ -0,0 +1,2 @@
+This package is an extension for Django Debug Toolbar which enables support
+for debugging GraphiQL queries in Django Projects.
diff --git a/www/py-dj42-django-js-asset/Makefile b/www/py-dj42-django-js-asset/Makefile
new file mode 100644
index 000000000000..6afcb4100538
--- /dev/null
+++ b/www/py-dj42-django-js-asset/Makefile
@@ -0,0 +1,25 @@
+PORTNAME=	django-js-asset
+DISTVERSION=	2.1.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+DISTNAME=	django_js_asset-${DISTVERSION}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Insert script tags with additional attributes for django.forms.Media
+WWW=		https://github.com/matthiask/django-js-asset
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hatchling>0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist pep517
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-js-asset/distinfo b/www/py-dj42-django-js-asset/distinfo
new file mode 100644
index 000000000000..a7a6dcfc999e
--- /dev/null
+++ b/www/py-dj42-django-js-asset/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1689168356
+SHA256 (django_js_asset-2.1.0.tar.gz) = be6f69ae5c4865617aa7726c48eddb64089a1e7d4ea7d22a35a3beb8282020f6
+SIZE (django_js_asset-2.1.0.tar.gz) = 7734
diff --git a/www/py-dj42-django-js-asset/pkg-descr b/www/py-dj42-django-js-asset/pkg-descr
new file mode 100644
index 000000000000..99b04e1534c9
--- /dev/null
+++ b/www/py-dj42-django-js-asset/pkg-descr
@@ -0,0 +1,2 @@
+Insert script tags with additional attributes (such as "id" and "data" for
+CSP-compatible data injection) for the django.forms.Media package.
diff --git a/www/py-dj42-django-mptt/Makefile b/www/py-dj42-django-mptt/Makefile
new file mode 100644
index 000000000000..53f091c87ada
--- /dev/null
+++ b/www/py-dj42-django-mptt/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	django-mptt
+PORTVERSION=	0.14.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Utilities for implementing Modified Preorder Tree Traversal in Django
+WWW=		https://github.com/django-mptt/django-mptt
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=2.2:www/py-django42@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}dj42-django-js-asset>0:www/py-dj42-django-js-asset@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-mptt/distinfo b/www/py-dj42-django-mptt/distinfo
new file mode 100644
index 000000000000..0b87dc868083
--- /dev/null
+++ b/www/py-dj42-django-mptt/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1665308477
+SHA256 (django-mptt-0.14.0.tar.gz) = 2c92a2b1614c53086278795ccf50580cf1f9b8564f3ff03055dd62bab5987711
+SIZE (django-mptt-0.14.0.tar.gz) = 103453
diff --git a/www/py-dj42-django-mptt/pkg-descr b/www/py-dj42-django-mptt/pkg-descr
new file mode 100644
index 000000000000..bad56cabf151
--- /dev/null
+++ b/www/py-dj42-django-mptt/pkg-descr
@@ -0,0 +1,2 @@
+Utilities for implementing Modified Preorder Tree Traversal with your Django
+Models and working with trees of Model instances.
diff --git a/www/py-dj42-django-prometheus/Makefile b/www/py-dj42-django-prometheus/Makefile
new file mode 100644
index 000000000000..343179dddea1
--- /dev/null
+++ b/www/py-dj42-django-prometheus/Makefile
@@ -0,0 +1,37 @@
+PORTNAME=	django-prometheus
+PORTVERSION=	2.3.1
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Export Django monitoring metrics for Prometheus.io
+WWW=		https://github.com/korfuri/django-prometheus
+
+LICENSE=	APACHE20
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pytest-runner>0:devel/py-pytest-runner@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}prometheus-client>=0.7:net-mgmt/py-prometheus-client@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils pytest
+
+TEST_ENV=	PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+OPTIONS_GROUP=		DATABASE CACHE
+OPTIONS_GROUP_CACHE=	MEMCACHED REDIS
+OPTIONS_GROUP_DATABASE=	MYSQL PGSQL
+
+MEMCACHED_DESC=		Memcached distributed memory caching support
+
+MEMCACHED_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}python-memcached>=0:databases/py-python-memcached@${PY_FLAVOR}
+MYSQL_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}mysqlclient>=0:databases/py-mysqlclient@${PY_FLAVOR}
+PGSQL_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}psycopg2>=0:databases/py-psycopg2@${PY_FLAVOR}
+REDIS_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dj42-django-redis>=4.8:www/py-dj42-django-redis@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-prometheus/distinfo b/www/py-dj42-django-prometheus/distinfo
new file mode 100644
index 000000000000..4f11977cb57e
--- /dev/null
+++ b/www/py-dj42-django-prometheus/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1683262385
+SHA256 (django-prometheus-2.3.1.tar.gz) = f9c8b6c780c9419ea01043c63a437d79db2c33353451347894408184ad9c3e1e
+SIZE (django-prometheus-2.3.1.tar.gz) = 24718
diff --git a/www/py-dj42-django-prometheus/pkg-descr b/www/py-dj42-django-prometheus/pkg-descr
new file mode 100644
index 000000000000..0962e7b87336
--- /dev/null
+++ b/www/py-dj42-django-prometheus/pkg-descr
@@ -0,0 +1,14 @@
+This library exports Django monitoring metrics for Prometheus.io.
+
+It provides support to monitor the following databases types:
+
+* SQLite (via Django)
+* PostgreSQL
+* MySQL
+
+In addition, caches can also be monitored:
+
+* memcached
+* Redis
+
+It's even possible to export metrics of Django models and migrations.
diff --git a/www/py-dj42-django-redis/Makefile b/www/py-dj42-django-redis/Makefile
new file mode 100644
index 000000000000..4e35ecd3d297
--- /dev/null
+++ b/www/py-dj42-django-redis/Makefile
@@ -0,0 +1,30 @@
+PORTNAME=	django-redis
+PORTVERSION=	5.3.0
+CATEGORIES=	www databases python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Full featured Redis cache/session backend for Django
+WWW=		https://github.com/jazzband/django-redis
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}redis>=3:databases/py-redis@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}hiredis>=0:databases/py-hiredis@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}mock>=0:devel/py-mock@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}msgpack>=0:devel/py-msgpack@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist concurrent distutils
+
+NO_ARCH=	yes
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+do-test:
+	@cd ${WRKSRC}/tests && ${PYTHON_CMD} runtests.py
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-redis/distinfo b/www/py-dj42-django-redis/distinfo
new file mode 100644
index 000000000000..96e7c75028c0
--- /dev/null
+++ b/www/py-dj42-django-redis/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1688166346
+SHA256 (django-redis-5.3.0.tar.gz) = 8bc5793ec06b28ea802aad85ec437e7646511d4e571e07ccad19cfed8b9ddd44
+SIZE (django-redis-5.3.0.tar.gz) = 44800
diff --git a/www/py-dj42-django-redis/pkg-descr b/www/py-dj42-django-redis/pkg-descr
new file mode 100644
index 000000000000..ab566f948f78
--- /dev/null
+++ b/www/py-dj42-django-redis/pkg-descr
@@ -0,0 +1,15 @@
+Django-redis is a BSD Licensed, full featured Redis cache/session
+backend for Django.
+
+Why use django-redis?
+
+ * Modular client system (pluggable clients).
+ * Master-Slave support in the default client.
+ * Used in production in several projects as cache and session storage.
+ * Supports infinite timeouts.
+ * Python 3 support in same code base.
+ * Facilities for raw access to Redis client/connection pool.
+ * Highly configurable (can emulate memcached exception behavior, for
+   example).
+ * Unix sockets supported by default.
+ * Pluggable parsers.
diff --git a/www/py-dj42-django-rich/Makefile b/www/py-dj42-django-rich/Makefile
new file mode 100644
index 000000000000..1d1e231b8e3d
--- /dev/null
+++ b/www/py-dj42-django-rich/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	django-rich
+PORTVERSION=	1.7.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+DISTNAME=	django_rich-${PORTVERSION}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Extensions for using Rich with Django
+WWW=		https://github.com/adamchainz/django-rich
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}rich>=10.0.0:textproc/py-rich@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist pep517
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-rich/distinfo b/www/py-dj42-django-rich/distinfo
new file mode 100644
index 000000000000..337d6f0eac76
--- /dev/null
+++ b/www/py-dj42-django-rich/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1689051775
+SHA256 (django_rich-1.7.0.tar.gz) = a21d92db4cf9b8e84b69df48f04337df90620758b92f0a07e8e60066c2fd6bdc
+SIZE (django_rich-1.7.0.tar.gz) = 58968
diff --git a/www/py-dj42-django-rich/pkg-descr b/www/py-dj42-django-rich/pkg-descr
new file mode 100644
index 000000000000..694881e2c958
--- /dev/null
+++ b/www/py-dj42-django-rich/pkg-descr
@@ -0,0 +1,11 @@
+This package provides Extensions for using Rich with the Django framework.
+
+These extensions consist of the following subclasses:
+
+* django_rich.management.RichCommand:
+  Subclass of Django's BaseCommand class that sets its self.console to a
+  Rich Console.
+
+* django_rich.test.RichRunner:
+  Subclass of Django's DiscoverRunner with colourized outputs and nice
+  traceback rendering.
diff --git a/www/py-dj42-django-tables2/Makefile b/www/py-dj42-django-tables2/Makefile
new file mode 100644
index 000000000000..09e972f87477
--- /dev/null
+++ b/www/py-dj42-django-tables2/Makefile
@@ -0,0 +1,28 @@
+PORTNAME=	django-tables2
+DISTVERSION=	2.6.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Table/data-grid framework for Django
+WWW=		https://github.com/jieter/django-tables2
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	distutils autoplist
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+OPTIONS_DEFINE=		TABLIB
+
+TABLIB_DESC=		Enable support for exporting table datasets
+TABLIB_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}tablib>=0:textproc/py-tablib@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-tables2/distinfo b/www/py-dj42-django-tables2/distinfo
new file mode 100644
index 000000000000..7fc6c8a3d485
--- /dev/null
+++ b/www/py-dj42-django-tables2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1688911162
+SHA256 (django-tables2-2.6.0.tar.gz) = 479eed04007cc04bcf764a6fb7a5e3955d94b878ba7f3a4bd4edbd2f7769e08d
+SIZE (django-tables2-2.6.0.tar.gz) = 79370
diff --git a/www/py-dj42-django-tables2/pkg-descr b/www/py-dj42-django-tables2/pkg-descr
new file mode 100644
index 000000000000..5b09aff2a2f2
--- /dev/null
+++ b/www/py-dj42-django-tables2/pkg-descr
@@ -0,0 +1,3 @@
+django-tables2 simplifies the task of turning sets of data into HTML tables.
+It has native support for pagination and sorting, does for HTML tables what
+django.forms does for HTML forms.
diff --git a/www/py-dj42-django-taggit/Makefile b/www/py-dj42-django-taggit/Makefile
new file mode 100644
index 000000000000..42dc8a123178
--- /dev/null
+++ b/www/py-dj42-django-taggit/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	django-taggit
+PORTVERSION=	4.0.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Reusable Django application for simple tagging
+WWW=		https://github.com/jazzband/django-taggit
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django42>=3.2:www/py-django42@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dj42-djangorestframework>0:www/py-dj42-djangorestframework@${PY_FLAVOR}
+
+USES=		python
+USE_PYTHON=	autoplist distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+do-test:
+	@cd ${WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m django test --settings=tests.settings -v3
+
+.include <bsd.port.mk>
diff --git a/www/py-dj42-django-taggit/distinfo b/www/py-dj42-django-taggit/distinfo
new file mode 100644
index 000000000000..585cf4f9bc78
--- /dev/null
+++ b/www/py-dj42-django-taggit/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1683452279
+SHA256 (django-taggit-4.0.0.tar.gz) = 4d52de9d37245a9b9f98c0ec71fdccf1d2283e38e8866d40a7ae6a3b6787a161
+SIZE (django-taggit-4.0.0.tar.gz) = 58638
diff --git a/www/py-dj42-django-taggit/pkg-descr b/www/py-dj42-django-taggit/pkg-descr
new file mode 100644
index 000000000000..be15b201b3ee
--- /dev/null
+++ b/www/py-dj42-django-taggit/pkg-descr
@@ -0,0 +1 @@
+django-taggit a simpler approach to tagging with Django.
diff --git a/www/py-dj42-django-timezone-field/Makefile b/www/py-dj42-django-timezone-field/Makefile
new file mode 100644
index 000000000000..e79613acc837
--- /dev/null
+++ b/www/py-dj42-django-timezone-field/Makefile
@@ -0,0 +1,31 @@
+PORTNAME=	django-timezone-field
+DISTVERSION=	6.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj42-
+DISTNAME=	django_timezone_field-${DISTVERSION}
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Provides database and form fields for pytz timezone objects for Django
*** 234 LINES SKIPPED ***