git: f7fdc07f4604 - main - net-mgmt/netbox: Create Django 4.1 consumers

From: Kai Knoblich <kai_at_FreeBSD.org>
Date: Wed, 22 Feb 2023 07:15:08 UTC
The branch main has been updated by kai:

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

commit f7fdc07f4604aa4949dee546aa9b7e0322ac1350
Author:     Kai Knoblich <kai@FreeBSD.org>
AuthorDate: 2023-02-22 06:58:32 +0000
Commit:     Kai Knoblich <kai@FreeBSD.org>
CommitDate: 2023-02-22 06:58:32 +0000

    net-mgmt/netbox: Create Django 4.1 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.4 release possible because it requires
      Django 4.1.
    
      All of the ports listed below were created on the basis of their
      respective original ports:
    
      - devel/py-dj41-django-rq
      - devel/py-dj41-graphene-django
      - www/py-dj41-django-auth-ldap
      - www/py-dj41-django-cors-headers
      - www/py-dj41-django-debug-toolbar
      - www/py-dj41-django-filter
      - www/py-dj41-django-graphiql-debug-toolbar
      - www/py-dj41-django-js-asset
      - www/py-dj41-django-mptt
      - www/py-dj41-django-prometheus
      - www/py-dj41-django-redis
      - www/py-dj41-django-tables2
      - www/py-dj41-django-taggit
      - www/py-dj41-django-timezone-field
      - www/py-dj41-djangorestframework
      - www/py-dj41-drf-yasg
    
    Reviewed by:    sunpoet (via e-mail)
    Approved by:    sunpoet (via e-mail)
    Differential Revision:  https://reviews.freebsd.org/D38649
---
 devel/Makefile                                     |  2 ++
 devel/py-dj41-django-rq/Makefile                   | 35 +++++++++++++++++++
 devel/py-dj41-django-rq/distinfo                   |  3 ++
 devel/py-dj41-django-rq/pkg-descr                  |  3 ++
 devel/py-dj41-graphene-django/Makefile             | 34 +++++++++++++++++++
 devel/py-dj41-graphene-django/distinfo             |  3 ++
 devel/py-dj41-graphene-django/files/patch-setup.py | 10 ++++++
 devel/py-dj41-graphene-django/pkg-descr            |  1 +
 www/Makefile                                       | 15 +++++++++
 www/py-dj41-django-auth-ldap/Makefile              | 39 ++++++++++++++++++++++
 www/py-dj41-django-auth-ldap/distinfo              |  3 ++
 .../files/patch-docs_conf.py                       | 20 +++++++++++
 www/py-dj41-django-auth-ldap/pkg-descr             |  4 +++
 www/py-dj41-django-cors-headers/Makefile           | 22 ++++++++++++
 www/py-dj41-django-cors-headers/distinfo           |  3 ++
 www/py-dj41-django-cors-headers/pkg-descr          |  2 ++
 www/py-dj41-django-debug-toolbar/Makefile          | 24 +++++++++++++
 www/py-dj41-django-debug-toolbar/distinfo          |  3 ++
 www/py-dj41-django-debug-toolbar/pkg-descr         |  3 ++
 www/py-dj41-django-filter/Makefile                 | 23 +++++++++++++
 www/py-dj41-django-filter/distinfo                 |  3 ++
 www/py-dj41-django-filter/pkg-descr                |  2 ++
 www/py-dj41-django-graphiql-debug-toolbar/Makefile | 25 ++++++++++++++
 www/py-dj41-django-graphiql-debug-toolbar/distinfo |  3 ++
 .../pkg-descr                                      |  2 ++
 www/py-dj41-django-js-asset/Makefile               | 24 +++++++++++++
 www/py-dj41-django-js-asset/distinfo               |  3 ++
 www/py-dj41-django-js-asset/pkg-descr              |  2 ++
 www/py-dj41-django-mptt/Makefile                   | 24 +++++++++++++
 www/py-dj41-django-mptt/distinfo                   |  3 ++
 www/py-dj41-django-mptt/pkg-descr                  |  2 ++
 www/py-dj41-django-prometheus/Makefile             | 35 +++++++++++++++++++
 www/py-dj41-django-prometheus/distinfo             |  3 ++
 www/py-dj41-django-prometheus/pkg-descr            | 14 ++++++++
 www/py-dj41-django-redis/Makefile                  | 30 +++++++++++++++++
 www/py-dj41-django-redis/distinfo                  |  3 ++
 www/py-dj41-django-redis/pkg-descr                 | 15 +++++++++
 www/py-dj41-django-rich/Makefile                   | 24 +++++++++++++
 www/py-dj41-django-rich/distinfo                   |  3 ++
 www/py-dj41-django-rich/pkg-descr                  | 11 ++++++
 www/py-dj41-django-tables2/Makefile                | 28 ++++++++++++++++
 www/py-dj41-django-tables2/distinfo                |  3 ++
 www/py-dj41-django-tables2/pkg-descr               |  3 ++
 www/py-dj41-django-taggit/Makefile                 | 27 +++++++++++++++
 www/py-dj41-django-taggit/distinfo                 |  3 ++
 www/py-dj41-django-taggit/pkg-descr                |  1 +
 www/py-dj41-django-timezone-field/Makefile         | 31 +++++++++++++++++
 www/py-dj41-django-timezone-field/distinfo         |  3 ++
 .../files/patch-timezone__field_fields.py          | 27 +++++++++++++++
 www/py-dj41-django-timezone-field/pkg-descr        |  1 +
 www/py-dj41-djangorestframework/Makefile           | 23 +++++++++++++
 www/py-dj41-djangorestframework/distinfo           |  3 ++
 www/py-dj41-djangorestframework/pkg-descr          |  2 ++
 www/py-dj41-drf-yasg/Makefile                      | 38 +++++++++++++++++++++
 www/py-dj41-drf-yasg/distinfo                      |  3 ++
 www/py-dj41-drf-yasg/pkg-descr                     | 18 ++++++++++
 56 files changed, 697 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 7191b0eecdfe..0d2a998c2fb7 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4517,6 +4517,8 @@
     SUBDIR += py-distributed
     SUBDIR += py-dj40-django-rq
     SUBDIR += py-dj40-graphene-django
+    SUBDIR += py-dj41-django-rq
+    SUBDIR += py-dj41-graphene-django
     SUBDIR += py-django-rq
     SUBDIR += py-dockerpty
     SUBDIR += py-docopt
diff --git a/devel/py-dj41-django-rq/Makefile b/devel/py-dj41-django-rq/Makefile
new file mode 100644
index 000000000000..9825db0d75dc
--- /dev/null
+++ b/devel/py-dj41-django-rq/Makefile
@@ -0,0 +1,35 @@
+PORTNAME=	django-rq
+PORTVERSION=	2.7.0
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	sunpoet@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}django41>=2.0:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}redis>=3:databases/py-redis@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}rq>=1.2: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:3.8+
+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-dj41-django-rq/distinfo b/devel/py-dj41-django-rq/distinfo
new file mode 100644
index 000000000000..1159ca979e52
--- /dev/null
+++ b/devel/py-dj41-django-rq/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1676994530
+SHA256 (django-rq-2.7.0.tar.gz) = 50440be33c23427f3b34d206ff72025740b721b54b42976e7b18a0474174802b
+SIZE (django-rq-2.7.0.tar.gz) = 45691
diff --git a/devel/py-dj41-django-rq/pkg-descr b/devel/py-dj41-django-rq/pkg-descr
new file mode 100644
index 000000000000..85e24c643a23
--- /dev/null
+++ b/devel/py-dj41-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-dj41-graphene-django/Makefile b/devel/py-dj41-graphene-django/Makefile
new file mode 100644
index 000000000000..2a1b5f1b5f41
--- /dev/null
+++ b/devel/py-dj41-graphene-django/Makefile
@@ -0,0 +1,34 @@
+PORTNAME=	graphene-django
+PORTVERSION=	3.0.0
+CATEGORIES=	devel python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	sunpoet@FreeBSD.org
+COMMENT=	Graphene Django integration
+WWW=		https://github.com/graphql-python/graphene-django
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=3.2:www/py-django41@${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:3.8+
+USE_PYTHON=	autoplist concurrent distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=	REST_FRAMEWORK
+OPTIONS_DEFAULT=REST_FRAMEWORK
+REST_FRAMEWORK_DESC=	REST framework support
+
+REST_FRAMEWORK_RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dj41-djangorestframework>=3.6.3:www/py-dj41-djangorestframework@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/devel/py-dj41-graphene-django/distinfo b/devel/py-dj41-graphene-django/distinfo
new file mode 100644
index 000000000000..b81478141d6b
--- /dev/null
+++ b/devel/py-dj41-graphene-django/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1668803621
+SHA256 (graphene-django-3.0.0.tar.gz) = 018a8dc4736d99b5bb4a15d7fd0b46c98010e9201cb52a290f6d1f16ae6fefda
+SIZE (graphene-django-3.0.0.tar.gz) = 77525
diff --git a/devel/py-dj41-graphene-django/files/patch-setup.py b/devel/py-dj41-graphene-django/files/patch-setup.py
new file mode 100644
index 000000000000..167679f63d97
--- /dev/null
+++ b/devel/py-dj41-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-dj41-graphene-django/pkg-descr b/devel/py-dj41-graphene-django/pkg-descr
new file mode 100644
index 000000000000..1fac522e0ea4
--- /dev/null
+++ b/devel/py-dj41-graphene-django/pkg-descr
@@ -0,0 +1 @@
+A Django integration for Graphene.
diff --git a/www/Makefile b/www/Makefile
index 56fe0b2e08f3..fae79d73ed06 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1477,6 +1477,21 @@
     SUBDIR += py-dj40-django-timezone-field
     SUBDIR += py-dj40-djangorestframework
     SUBDIR += py-dj40-drf-yasg
+    SUBDIR += py-dj41-django-auth-ldap
+    SUBDIR += py-dj41-django-cors-headers
+    SUBDIR += py-dj41-django-debug-toolbar
+    SUBDIR += py-dj41-django-filter
+    SUBDIR += py-dj41-django-graphiql-debug-toolbar
+    SUBDIR += py-dj41-django-js-asset
+    SUBDIR += py-dj41-django-mptt
+    SUBDIR += py-dj41-django-prometheus
+    SUBDIR += py-dj41-django-redis
+    SUBDIR += py-dj41-django-rich
+    SUBDIR += py-dj41-django-tables2
+    SUBDIR += py-dj41-django-taggit
+    SUBDIR += py-dj41-django-timezone-field
+    SUBDIR += py-dj41-djangorestframework
+    SUBDIR += py-dj41-drf-yasg
     SUBDIR += py-django-admin-rangefilter
     SUBDIR += py-django-advanced-filters
     SUBDIR += py-django-allauth
diff --git a/www/py-dj41-django-auth-ldap/Makefile b/www/py-dj41-django-auth-ldap/Makefile
new file mode 100644
index 000000000000..1ad0a6f01944
--- /dev/null
+++ b/www/py-dj41-django-auth-ldap/Makefile
@@ -0,0 +1,39 @@
+PORTNAME=	django-auth-ldap
+PORTVERSION=	4.1.0
+PORTREVISION=	1
+CATEGORIES=	www security python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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=	${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}django41>=2.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}ldap>=3.1:net/py-ldap@${PY_FLAVOR}
+
+USES=		python:3.8+
+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-dj41-django-auth-ldap/distinfo b/www/py-dj41-django-auth-ldap/distinfo
new file mode 100644
index 000000000000..43490a063c0e
--- /dev/null
+++ b/www/py-dj41-django-auth-ldap/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1654945388
+SHA256 (django-auth-ldap-4.1.0.tar.gz) = 77f749d3b17807ce8eb56a9c9c8e5746ff316567f81d5ba613495d9c7495a949
+SIZE (django-auth-ldap-4.1.0.tar.gz) = 53254
diff --git a/www/py-dj41-django-auth-ldap/files/patch-docs_conf.py b/www/py-dj41-django-auth-ldap/files/patch-docs_conf.py
new file mode 100644
index 000000000000..d41916245ebc
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-auth-ldap/pkg-descr b/www/py-dj41-django-auth-ldap/pkg-descr
new file mode 100644
index 000000000000..390903dba8ac
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-cors-headers/Makefile b/www/py-dj41-django-cors-headers/Makefile
new file mode 100644
index 000000000000..61b933eaa026
--- /dev/null
+++ b/www/py-dj41-django-cors-headers/Makefile
@@ -0,0 +1,22 @@
+PORTNAME=	django-cors-headers
+PORTVERSION=	3.13.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=3.2:www/py-django41@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	autoplist distutils
+
+NO_ARCH=		yes
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-cors-headers/distinfo b/www/py-dj41-django-cors-headers/distinfo
new file mode 100644
index 000000000000..17abcee346a5
--- /dev/null
+++ b/www/py-dj41-django-cors-headers/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1655534977
+SHA256 (django-cors-headers-3.13.0.tar.gz) = f9dc6b4e3f611c3199700b3e5f3398c28757dcd559c2f82932687f3d0443cfdf
+SIZE (django-cors-headers-3.13.0.tar.gz) = 20995
diff --git a/www/py-dj41-django-cors-headers/pkg-descr b/www/py-dj41-django-cors-headers/pkg-descr
new file mode 100644
index 000000000000..9ba1bc6bd1a8
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-debug-toolbar/Makefile b/www/py-dj41-django-debug-toolbar/Makefile
new file mode 100644
index 000000000000..5aa0ee3bbe0c
--- /dev/null
+++ b/www/py-dj41-django-debug-toolbar/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	django-debug-toolbar
+PORTVERSION=	3.7.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	sunpoet@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
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=3.2.4:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}sqlparse>=0.2.0:databases/py-sqlparse@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	autoplist concurrent distutils
+
+NO_ARCH=	yes
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-debug-toolbar/distinfo b/www/py-dj41-django-debug-toolbar/distinfo
new file mode 100644
index 000000000000..59ddaa963cf2
--- /dev/null
+++ b/www/py-dj41-django-debug-toolbar/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1664768004
+SHA256 (django-debug-toolbar-3.7.0.tar.gz) = 1e3acad24e3d351ba45c6fa2072e4164820307332a776b16c9f06d1f89503465
+SIZE (django-debug-toolbar-3.7.0.tar.gz) = 133244
diff --git a/www/py-dj41-django-debug-toolbar/pkg-descr b/www/py-dj41-django-debug-toolbar/pkg-descr
new file mode 100644
index 000000000000..e62114e4b61f
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-filter/Makefile b/www/py-dj41-django-filter/Makefile
new file mode 100644
index 000000000000..46a9cf287bcb
--- /dev/null
+++ b/www/py-dj41-django-filter/Makefile
@@ -0,0 +1,23 @@
+PORTNAME=	django-filter
+DISTVERSION=	22.1
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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}django41>=3.2:www/py-django41@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	distutils autoplist
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-filter/distinfo b/www/py-dj41-django-filter/distinfo
new file mode 100644
index 000000000000..6df62a95fa42
--- /dev/null
+++ b/www/py-dj41-django-filter/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1655739412
+SHA256 (django-filter-22.1.tar.gz) = ed473b76e84f7e83b2511bb2050c3efb36d135207d0128dfe3ae4b36e3594ba5
+SIZE (django-filter-22.1.tar.gz) = 134811
diff --git a/www/py-dj41-django-filter/pkg-descr b/www/py-dj41-django-filter/pkg-descr
new file mode 100644
index 000000000000..089f799caa3e
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-graphiql-debug-toolbar/Makefile b/www/py-dj41-django-graphiql-debug-toolbar/Makefile
new file mode 100644
index 000000000000..3243684460b0
--- /dev/null
+++ b/www/py-dj41-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}dj41-
+
+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}django41>=2.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj41-graphene-django>=2.0.0:devel/py-dj41-graphene-django@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj41-django-debug-toolbar>=3.1:www/py-dj41-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-dj41-django-graphiql-debug-toolbar/distinfo b/www/py-dj41-django-graphiql-debug-toolbar/distinfo
new file mode 100644
index 000000000000..559e6602138b
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-graphiql-debug-toolbar/pkg-descr b/www/py-dj41-django-graphiql-debug-toolbar/pkg-descr
new file mode 100644
index 000000000000..cb6e9ccf41b5
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-js-asset/Makefile b/www/py-dj41-django-js-asset/Makefile
new file mode 100644
index 000000000000..6ff3b93e0cf4
--- /dev/null
+++ b/www/py-dj41-django-js-asset/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	django-js-asset
+DISTVERSION=	2.0.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+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
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=2.2:www/py-django41@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	distutils autoplist
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-js-asset/distinfo b/www/py-dj41-django-js-asset/distinfo
new file mode 100644
index 000000000000..52f8d62e2044
--- /dev/null
+++ b/www/py-dj41-django-js-asset/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1647897596
+SHA256 (django_js_asset-2.0.0.tar.gz) = adc1ee1efa853fad42054b540c02205344bb406c9bddf87c9e5377a41b7db90f
+SIZE (django_js_asset-2.0.0.tar.gz) = 4592
diff --git a/www/py-dj41-django-js-asset/pkg-descr b/www/py-dj41-django-js-asset/pkg-descr
new file mode 100644
index 000000000000..99b04e1534c9
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-mptt/Makefile b/www/py-dj41-django-mptt/Makefile
new file mode 100644
index 000000000000..ca44d414fc66
--- /dev/null
+++ b/www/py-dj41-django-mptt/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	django-mptt
+PORTVERSION=	0.14.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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}django41>=2.2:www/py-django41@${PY_FLAVOR}\
+		${PYTHON_PKGNAMEPREFIX}dj41-django-js-asset>0:www/py-dj41-django-js-asset@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	autoplist distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-mptt/distinfo b/www/py-dj41-django-mptt/distinfo
new file mode 100644
index 000000000000..0b87dc868083
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-mptt/pkg-descr b/www/py-dj41-django-mptt/pkg-descr
new file mode 100644
index 000000000000..bad56cabf151
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-prometheus/Makefile b/www/py-dj41-django-prometheus/Makefile
new file mode 100644
index 000000000000..635cb4219692
--- /dev/null
+++ b/www/py-dj41-django-prometheus/Makefile
@@ -0,0 +1,35 @@
+PORTNAME=	django-prometheus
+PORTVERSION=	2.2.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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}django41>=2.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}prometheus-client>=0.7:net-mgmt/py-prometheus-client@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	autoplist distutils
+
+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}dj41-django-redis>=4.8:www/py-dj41-django-redis@${PY_FLAVOR}
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-prometheus/distinfo b/www/py-dj41-django-prometheus/distinfo
new file mode 100644
index 000000000000..65dd0e40195c
--- /dev/null
+++ b/www/py-dj41-django-prometheus/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1641495767
+SHA256 (django-prometheus-2.2.0.tar.gz) = 240378a1307c408bd5fc85614a3a57f1ce633d4a222c9e291e2bbf325173b801
+SIZE (django-prometheus-2.2.0.tar.gz) = 24995
diff --git a/www/py-dj41-django-prometheus/pkg-descr b/www/py-dj41-django-prometheus/pkg-descr
new file mode 100644
index 000000000000..0962e7b87336
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-redis/Makefile b/www/py-dj41-django-redis/Makefile
new file mode 100644
index 000000000000..a424ab14e71b
--- /dev/null
+++ b/www/py-dj41-django-redis/Makefile
@@ -0,0 +1,30 @@
+PORTNAME=	django-redis
+PORTVERSION=	5.2.0
+CATEGORIES=	www databases python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	sunpoet@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}django41>=2.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}redis>=3<4: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:3.8+
+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-dj41-django-redis/distinfo b/www/py-dj41-django-redis/distinfo
new file mode 100644
index 000000000000..e8022e0e5f97
--- /dev/null
+++ b/www/py-dj41-django-redis/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1641046018
+SHA256 (django-redis-5.2.0.tar.gz) = 8a99e5582c79f894168f5865c52bd921213253b7fd64d16733ae4591564465de
+SIZE (django-redis-5.2.0.tar.gz) = 44132
diff --git a/www/py-dj41-django-redis/pkg-descr b/www/py-dj41-django-redis/pkg-descr
new file mode 100644
index 000000000000..ab566f948f78
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-rich/Makefile b/www/py-dj41-django-rich/Makefile
new file mode 100644
index 000000000000..acc192c15085
--- /dev/null
+++ b/www/py-dj41-django-rich/Makefile
@@ -0,0 +1,24 @@
+PORTNAME=	django-rich
+PORTVERSION=	1.4.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Extensions for using Rich with Django
+WWW=		https://github.com/adamchainz/django-rich
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=3.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}rich>=10.0.0:textproc/py-rich@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	autoplist distutils
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.mk>
diff --git a/www/py-dj41-django-rich/distinfo b/www/py-dj41-django-rich/distinfo
new file mode 100644
index 000000000000..1f88129e0fba
--- /dev/null
+++ b/www/py-dj41-django-rich/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1657859577
+SHA256 (django-rich-1.4.0.tar.gz) = 10a5d9e9b62228b683d51584e4c2a5aa9f838176364a90c8cd79688aadca9f4c
+SIZE (django-rich-1.4.0.tar.gz) = 58751
diff --git a/www/py-dj41-django-rich/pkg-descr b/www/py-dj41-django-rich/pkg-descr
new file mode 100644
index 000000000000..19b9613667df
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-tables2/Makefile b/www/py-dj41-django-tables2/Makefile
new file mode 100644
index 000000000000..e4221d6bab51
--- /dev/null
+++ b/www/py-dj41-django-tables2/Makefile
@@ -0,0 +1,28 @@
+PORTNAME=	django-tables2
+DISTVERSION=	2.5.2
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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}django41>=3.2:www/py-django41@${PY_FLAVOR}
+
+USES=		python:3.8+
+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-dj41-django-tables2/distinfo b/www/py-dj41-django-tables2/distinfo
new file mode 100644
index 000000000000..ed681b019429
--- /dev/null
+++ b/www/py-dj41-django-tables2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1676994506
+SHA256 (django-tables2-2.5.2.tar.gz) = 6e22dd27fcddb1aa2f1c3cb089fcfa4df9094dae1ec16314c7c774289a3bf1fc
+SIZE (django-tables2-2.5.2.tar.gz) = 79119
diff --git a/www/py-dj41-django-tables2/pkg-descr b/www/py-dj41-django-tables2/pkg-descr
new file mode 100644
index 000000000000..5b09aff2a2f2
--- /dev/null
+++ b/www/py-dj41-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-dj41-django-taggit/Makefile b/www/py-dj41-django-taggit/Makefile
new file mode 100644
index 000000000000..c659b2dc3c08
--- /dev/null
+++ b/www/py-dj41-django-taggit/Makefile
@@ -0,0 +1,27 @@
+PORTNAME=	django-taggit
+PORTVERSION=	3.1.0
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+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}django41>=3.2:www/py-django41@${PY_FLAVOR}
+TEST_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dj41-djangorestframework>0:www/py-dj41-djangorestframework@${PY_FLAVOR}
+
+USES=		python:3.8+
+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-dj41-django-taggit/distinfo b/www/py-dj41-django-taggit/distinfo
new file mode 100644
index 000000000000..ca44e53363c4
--- /dev/null
+++ b/www/py-dj41-django-taggit/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1669844361
+SHA256 (django-taggit-3.1.0.tar.gz) = c8f2e4eae387939089b3d75d1d8649e008880970c068ce9d0e82f87fd5e29508
+SIZE (django-taggit-3.1.0.tar.gz) = 58238
diff --git a/www/py-dj41-django-taggit/pkg-descr b/www/py-dj41-django-taggit/pkg-descr
new file mode 100644
index 000000000000..be15b201b3ee
--- /dev/null
+++ b/www/py-dj41-django-taggit/pkg-descr
@@ -0,0 +1 @@
+django-taggit a simpler approach to tagging with Django.
diff --git a/www/py-dj41-django-timezone-field/Makefile b/www/py-dj41-django-timezone-field/Makefile
new file mode 100644
index 000000000000..1a6a41869dfa
--- /dev/null
+++ b/www/py-dj41-django-timezone-field/Makefile
@@ -0,0 +1,31 @@
+PORTNAME=	django-timezone-field
+DISTVERSION=	5.0
+PORTREVISION=	1
+CATEGORIES=	www python
+MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}dj41-
+
+MAINTAINER=	kai@FreeBSD.org
+COMMENT=	Provides database and form fields for pytz timezone objects for Django
+WWW=		https://github.com/mfogel/django-timezone-field
+
+LICENSE=	BSD2CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE.txt
+
+RUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django41>=2.2:www/py-django41@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}pytz>0:devel/py-pytz@${PY_FLAVOR}
+
+USES=		python:3.8+
+USE_PYTHON=	distutils autoplist
+
+CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*${PORTNAME}
+
+NO_ARCH=		yes
+
+.include <bsd.port.pre.mk>
+
+.if ${PYTHON_REL} < 30900
+RUN_DEPENDS+=	${PYTHON_PKGNAMEPREFIX}backports.zoneinfo>=0.2.1<0.3.0:devel/py-backports.zoneinfo@${PY_FLAVOR}
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/www/py-dj41-django-timezone-field/distinfo b/www/py-dj41-django-timezone-field/distinfo
new file mode 100644
index 000000000000..8933b4e95c22
--- /dev/null
+++ b/www/py-dj41-django-timezone-field/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1645108464
+SHA256 (django-timezone-field-5.0.tar.gz) = 15746ed367a5a32eda76cfa2886eeec1de8cda79f519b7c5e12f87ed7cdbd663
+SIZE (django-timezone-field-5.0.tar.gz) = 11838
diff --git a/www/py-dj41-django-timezone-field/files/patch-timezone__field_fields.py b/www/py-dj41-django-timezone-field/files/patch-timezone__field_fields.py
new file mode 100644
index 000000000000..72b10b78da49
--- /dev/null
+++ b/www/py-dj41-django-timezone-field/files/patch-timezone__field_fields.py
*** 158 LINES SKIPPED ***