Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Mar 2026 16:08:34 +0000
From:      Rene Ladan <rene@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 8232b9d80fbc - main - deskutils/py-paperless: Remove expired port
Message-ID:  <69cbf182.393ce.1a2b4a2c@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by rene:

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

commit 8232b9d80fbc5d3f719232906c3c5eac9bdffa41
Author:     Rene Ladan <rene@FreeBSD.org>
AuthorDate: 2026-03-31 16:08:23 +0000
Commit:     Rene Ladan <rene@FreeBSD.org>
CommitDate: 2026-03-31 16:08:23 +0000

    deskutils/py-paperless: Remove expired port
    
    2026-03-31 deskutils/py-paperless: Upstream repository archived since 2021 and no compatibility for Django 5+. Please migrate to deskutils/py-paperless-ngx
---
 MOVED                                              |   1 +
 deskutils/Makefile                                 |   1 -
 deskutils/py-paperless/Makefile                    | 141 ------
 deskutils/py-paperless/distinfo                    |   7 -
 deskutils/py-paperless/files/README.in             |   1 -
 deskutils/py-paperless/files/nginx.conf.in         |  18 -
 deskutils/py-paperless/files/paperless-consumer.in |  59 ---
 deskutils/py-paperless/files/paperless.7.in        | 271 ----------
 .../py-paperless/files/patch-docs-guesswork.rst    |  37 --
 deskutils/py-paperless/files/patch-docs_conf.py    |  13 -
 .../files/patch-paperless.conf.example             |  62 ---
 .../files/patch-src-documents-models.py            |  18 -
 .../files/patch-src-paperless-settings.py          |  44 --
 .../files/patch-src_documents_admin.py             |  20 -
 .../patch-src_documents_signals_____init____.py    |  11 -
 ...n_documents_document_change__list__results.html |  11 -
 .../py-paperless/files/patch-src_paperless_urls.py |  50 --
 deskutils/py-paperless/files/pkg-message.in        |   7 -
 deskutils/py-paperless/files/sshd_config.in        |  14 -
 deskutils/py-paperless/files/uwsgi.ini.in          |   9 -
 deskutils/py-paperless/pkg-descr                   |   7 -
 deskutils/py-paperless/pkg-plist                   | 544 ---------------------
 22 files changed, 1 insertion(+), 1345 deletions(-)

diff --git a/MOVED b/MOVED
index 73b5d12af49d..9d99cd16273a 100644
--- a/MOVED
+++ b/MOVED
@@ -5175,3 +5175,4 @@ graphics/luminance-qt5||2026-03-29|Broken for more than a year
 sysutils/tmate-ssh-server||2026-03-31|Has expired: Upstream unmaintained
 editors/wordgrinder||2026-03-31|Has expired: broken since 2023, maintainer AWOL
 www/py-django-cron||2026-03-31|Has expired: Upstream inactive since 3+ years, not compatible with Django 5.2 or newer
+deskutils/py-paperless|deskutils/py-paperless-ngx|2026-03-31|Has expired: Upstream repository archived since 2021 and no compatibility for Django 5+. Please migrate to deskutils/py-paperless-ngx
diff --git a/deskutils/Makefile b/deskutils/Makefile
index 6c02df5ebe4e..1b318c6fe631 100644
--- a/deskutils/Makefile
+++ b/deskutils/Makefile
@@ -236,7 +236,6 @@
     SUBDIR += py-i3-gnome-pomodoro
     SUBDIR += py-khal
     SUBDIR += py-khard
-    SUBDIR += py-paperless
     SUBDIR += py-paperless-ngx
     SUBDIR += py-py3status
     SUBDIR += py-pystash
diff --git a/deskutils/py-paperless/Makefile b/deskutils/py-paperless/Makefile
deleted file mode 100644
index 12196d9acd56..000000000000
--- a/deskutils/py-paperless/Makefile
+++ /dev/null
@@ -1,141 +0,0 @@
-PORTNAME=	paperless
-PORTVERSION=	2.7.0
-PORTREVISION=	21
-CATEGORIES=	deskutils python
-PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
-
-PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
-PATCHFILES+=	b122931185fb.patch:-p1 # https://github.com/the-paperless-project/paperless/pull/712
-PATCHFILES+=	b131c97d1d85.patch:-p1 # https://github.com/the-paperless-project/paperless/pull/716
-
-MAINTAINER=	grembo@FreeBSD.org
-COMMENT=	Index and archive scanned paper documents
-WWW=		https://paperless.readthedocs.io
-
-LICENSE=	GPLv3
-LICENSE_FILE=	${WRKSRC}/LICENSE
-
-DEPRECATED=	Upstream repository archived since 2021 and no compatibility for Django 5+. Please migrate to deskutils/py-paperless-ngx
-EXPIRATION_DATE=2026-03-31
-
-BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dateparser>=1.1.0:devel/py-dateparser@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}django-cors-headers>=2.4.0:www/py-django-cors-headers@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}django-crispy-forms>=1.7.2:www/py-django-crispy-forms@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}django-extensions>=2.1.6:www/py-django-extensions@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}django-filter>=2.0.0:www/py-django-filter@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}djangoql>=0.17.0:www/py-djangoql@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}djangorestframework>=3.9.0:www/py-djangorestframework@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}fuzzywuzzy>=0.15.1:devel/py-fuzzywuzzy@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}langdetect>=1.0.9:textproc/py-langdetect@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pdftotext>=2.1.1:textproc/py-pdftotext@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}pyocr>=0.5.3:graphics/py-pyocr@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}python-dotenv>=0.10.1:www/py-python-dotenv@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}python-gnupg>=0.4.3:security/py-python-gnupg@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}python-magic>=0.4.10:devel/py-python-magic@${PY_FLAVOR} \
-		${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR}
-RUN_DEPENDS:=	${BUILD_DEPENDS}
-RUN_DEPENDS+=	gpg2:security/gnupg \
-		optipng:graphics/optipng \
-		tesseract:graphics/tesseract \
-		unpaper:graphics/unpaper
-
-USES=		python shebangfix
-USE_GITHUB=	yes
-GH_ACCOUNT=	the-paperless-project
-USE_RC_SUBR=	paperless-consumer
-
-SHEBANG_FILES=	${WRKSRC}/src/manage.py
-
-CONFLICTS_INSTALL=	${PYTHON_PKGNAMEPREFIX}*paperless-ngx
-
-SUB_FILES=	README nginx.conf paperless.7 pkg-message sshd_config uwsgi.ini
-SUB_LIST=	PKGBASE=${PKGBASE} PYTHON_CMD=${PYTHON_CMD} \
-		PYTHONPREFIX_SITELIBDIR=${PYTHONPREFIX_SITELIBDIR} \
-		ECHO=${ECHO} EGREP=${EGREP} TOUCH=${TOUCH} \
-		CHOWN=${CHOWN} RM=${RM:Q}
-
-NO_ARCH=	yes
-
-USERS=		paperless
-GROUPS=		paperless
-
-OPTIONS_DEFINE=		DOCS EXAMPLES
-OPTIONS_SINGLE=		IMAGICK
-OPTIONS_SINGLE_IMAGICK=	IMAGICK6_NOX11 IMAGICK6_X11 IMAGICK7_NOX11 IMAGICK7_X11
-OPTIONS_DEFAULT=	IMAGICK7_X11
-
-IMAGICK_DESC=		${IMAGEMAGICK_DESC}
-IMAGICK6_NOX11_DESC=	ImageMagick6 without X11 support
-IMAGICK6_X11_DESC=	ImageMagick6 with X11 support
-IMAGICK7_NOX11_DESC=	ImageMagick7 without X11 support
-IMAGICK7_X11_DESC=	ImageMagick7 with X11 support
-
-DOCS_BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}sphinx>=1.8.3,1:textproc/py-sphinx@${PY_FLAVOR}
-DOCS_USES=		gmake
-
-IMAGICK6_X11_USES=		magick:6,run
-IMAGICK6_NOX11_USES=		magick:6,run,nox11
-IMAGICK7_X11_USES=		magick:7,run
-IMAGICK7_NOX11_USES=		magick:7,run,nox11
-
-PORTDOCS=	*
-
-PAPERLESS_STATICDIR=	${WRKSRC}/static
-
-do-build:
-	@${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \
-		-d ${PYTHONPREFIX_SITELIBDIR} \
-		-f ${WRKSRC}/src
-	@${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \
-		-d ${PYTHONPREFIX_SITELIBDIR} \
-		-f ${WRKSRC}/src
-	@${RM} -r ${PAPERLESS_STATICDIR}
-	@${SETENV} \
-		PAPERLESS_STATICDIR=${PAPERLESS_STATICDIR} \
-		${PYTHON_CMD} ${WRKSRC}/src/manage.py collectstatic
-
-do-build-DOCS-on:
-	cd ${WRKSRC}/docs && ${SETENV} ${MAKE_ENV} \
-		${MAKE_CMD} ${MAKE_ARGS} html SPHINXBUILD=sphinx-build-${PYTHON_VER}
-
-post-build-DOCS-on:
-	@${RM} ${WRKSRC}/docs/_build/html/.buildinfo
-
-do-install:
-	@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless
-	@cd ${WRKSRC}/resources && \
-		${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}
-	@cd ${WRKSRC}/src && \
-		${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless
-	@${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name '*.orig' -delete
-	@${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless/manage.py \
-		${STAGEDIR}${PREFIX}/bin/paperless
-	@${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/paperless
-	@${MKDIR} ${STAGEDIR}${WWWDIR}
-	@cd ${WRKSRC} && \
-		${COPYTREE_SHARE} static ${STAGEDIR}${WWWDIR}
-	@${SED} -e 's|%%WWWDIR%%|${WWWDIR}|g;' \
-		${WRKSRC}/paperless.conf.example \
-		> ${STAGEDIR}${PREFIX}/etc/paperless.conf.sample
-	@${MKDIR} ${STAGEDIR}/var/db/paperless/consume/input \
-		${STAGEDIR}/var/db/paperless/media \
-		${STAGEDIR}/var/db/paperless/sqlite
-	${INSTALL_MAN} ${WRKDIR}/paperless.7 ${STAGEDIR}${PREFIX}/share/man/man7
-
-post-install-DOCS-on:
-	@${MKDIR} ${STAGEDIR}${DOCSDIR}/presentation
-	@cd ${WRKSRC}/docs/_build/html && \
-		${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}
-	@cd ${WRKSRC}/presentation && \
-		${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}/presentation
-
-post-install-EXAMPLES-on:
-	@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
-	${INSTALL_DATA} \
-		${WRKDIR}/README \
-		${WRKDIR}/nginx.conf \
-		${WRKDIR}/sshd_config \
-		${WRKDIR}/uwsgi.ini \
-		${STAGEDIR}${EXAMPLESDIR}
-
-.include <bsd.port.mk>
diff --git a/deskutils/py-paperless/distinfo b/deskutils/py-paperless/distinfo
deleted file mode 100644
index 58b40dfeb81e..000000000000
--- a/deskutils/py-paperless/distinfo
+++ /dev/null
@@ -1,7 +0,0 @@
-TIMESTAMP = 1610652602
-SHA256 (the-paperless-project-paperless-2.7.0_GH0.tar.gz) = 478823e12ea874dc0acd7f6ce038d221849cfcb797f0d6de57624bacdaa02839
-SIZE (the-paperless-project-paperless-2.7.0_GH0.tar.gz) = 4038688
-SHA256 (b122931185fb.patch) = 32076da28ca955c8b4db522478936aa76ef55033b8cb9ed6937ed37a393a1327
-SIZE (b122931185fb.patch) = 1449
-SHA256 (b131c97d1d85.patch) = 42816d1c16f7f40c746c654be0ff6e80c75dcb17ea2220df0b43334696b4548d
-SIZE (b131c97d1d85.patch) = 1049
diff --git a/deskutils/py-paperless/files/README.in b/deskutils/py-paperless/files/README.in
deleted file mode 100644
index bb4fc88e205d..000000000000
--- a/deskutils/py-paperless/files/README.in
+++ /dev/null
@@ -1 +0,0 @@
-Please see `man paperless' for details on how to use the paperless examples.
diff --git a/deskutils/py-paperless/files/nginx.conf.in b/deskutils/py-paperless/files/nginx.conf.in
deleted file mode 100644
index 519f7fde0ca0..000000000000
--- a/deskutils/py-paperless/files/nginx.conf.in
+++ /dev/null
@@ -1,18 +0,0 @@
-    server {
-        listen 80;
-        server_name localhost;
-
-        location /static/ {
-            alias %%WWWDIR%%/static/;
-        }
-
-        location / {
-            uwsgi_pass unix:/tmp/uwsgi-paperless.sock;
-            include uwsgi_params;
-        }
-
-        error_page   500 502 503 504  /50x.html;
-        location = /50x.html {
-            root   %%PREFIX%%/www/nginx-dist;
-        }
-    }
diff --git a/deskutils/py-paperless/files/paperless-consumer.in b/deskutils/py-paperless/files/paperless-consumer.in
deleted file mode 100644
index 0d99f2fea25c..000000000000
--- a/deskutils/py-paperless/files/paperless-consumer.in
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-# PROVIDE: paperless-consumer
-# REQUIRE: LOGIN
-# KEYWORD: shutdown
-#
-# Add the following line(s) to /etc/rc.conf to enable the paperless
-# document consumer:
-# paperless_consumer_enable (bool):XSet to "NO" by default.
-#					Set it to "YES" to enable
-#					paperless_consumer
-# paperless_consumer_log_facility(str): Set to "daemon" by default.
-#					Consumer logging syslog facility.
-# paperless_consumer_log_priority(str): Set to "notice" by default.
-#					Consumer logging syslog priority.
-# paperless_consumer_log_tag(str):	Set to "paperless-consumer" by default.
-#					Consumer logging syslog tag.
-# paperless_consumer_restart_delay(int):Set to "60" by default.
-#					Consumer automatic restart delay in
-#					seconds.
-
-. /etc/rc.subr
-
-name="paperless_consumer"
-rcvar="${name}_enable"
-
-# Set defaults
-paperless_consumer_enable=${paperless_consumer_enable:-"NO"}
-paperless_consumer_daemon_user=${paperless_consumer_user:-"paperless"}
-paperless_consumer_log_facility=${paperless_consumer_log_facility:-"daemon"}
-paperless_consumer_log_priority=${paperless_consumer_log_priority:-"notice"}
-paperless_consumer_log_tag=${paperless_consumer_log_tag:-"paperless-consumer"}
-paperless_consumer_restart_delay=${paperless_consumer_restart_delay:-"5"}
-
-paperless_consumer_env="LANG=en_US.UTF-8 PATH=$PATH:%%PREFIX%%/bin"
-
-start_precmd="${name}_prestart"
-
-pidfile="/var/run/paperless_consumer.pid"
-command="/usr/sbin/daemon"
-command_args="-cS -u ${paperless_consumer_daemon_user} \
-	-P ${pidfile} \
-	-t paperless-consumer \
-	-l ${paperless_consumer_log_facility} \
-	-s ${paperless_consumer_log_priority} \
-	-T ${paperless_consumer_log_tag} \
-	-R ${paperless_consumer_restart_delay} \
-	%%PREFIX%%/bin/paperless document_consumer"
-
-paperless_consumer_prestart()
-{
-	%%ECHO%% "Applying potential migrations to ${name}."
-	env ${paperless_consumer_env} su \
-		-m ${paperless_consumer_daemon_user} \
-		-c 'sh -c "%%PREFIX%%/bin/paperless migrate --no-color -v 0"'
-}
-
-load_rc_config ${name}
-run_rc_command "$1"
diff --git a/deskutils/py-paperless/files/paperless.7.in b/deskutils/py-paperless/files/paperless.7.in
deleted file mode 100644
index 416c264cdb6e..000000000000
--- a/deskutils/py-paperless/files/paperless.7.in
+++ /dev/null
@@ -1,271 +0,0 @@
-.\"
-.\" Copyright (c) 2019 Michael Gmelin
-.\"
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.Dd September 17, 2020
-.Dt PAPERLESS 7
-.Os
-.Sh NAME
-.Nm paperless
-.Nd Index and archive scanned paper documents - installation
-.Sh SYNOPSIS
-.Nm pkg install %%PKGBASE%%
-.Sh DESCRIPTION
-.Em Paperless
-is a simple Django application running in two parts: The consumer,
-which does the indexing and a web interface, which allows searching
-and downloading already-indexed documents.
-.Pp
-This man page documents how the
-.Fx FreeBSD
-port is installed and configured.
-It assumes that the paperless package was already installed, e.g., from the
-.Fx FreeBSD
-package repo as described in
-.Sx SYNOPSIS .
-.Pp
-For more information about using paperless, see
-.Dq the official paperless documentation
-.Pa ( file:/%%DOCSDIR%%/index.html
-or
-.Pa https://paperless.readthedocs.io ) .
-.Pp
-The package creates a symlink from
-.Pa %%PYTHONPREFIX_SITELIBDIR%%/paperless/manage.py
-to
-.Pa %%PREFIX%%/bin/paperless
-for convenience reasons, so whenever the official
-documentation mentions
-.Em manage.py
-it can be substituted with
-.Pa %%PREFIX%%/bin/paperless
-or simply
-.Pa paperless .
-.Pp
-.Em Paperless always needs to be run using the correct system user
-and an UTF-8 codepage.
-.Pp
-The package %%PKGBASE%% created a user
-.Em paperless
-with the following home directory layout, setting appropriate
-restrictive access permissions:
-.Bl -tag -width "/var"
-.It Pa /var/db/paperless
-home directory (only writeable by root)
-.Bl -tag -width "consume/" -compact
-.It Pa consume/
-Consume directory writable by root, used as chroot directory
-for sftp access (see below).
-.Bl -tag -width "123" -compact
-.It Pa input/
-Input files are dropped in there to be processed by the
-paperless document consumer - either directly or via
-a mechanism like sftp.
-.El
-.It Pa media/
-Directory used by paperless to store original files and
-thumbnails.
-.It Pa sqlite/
-Contains paperless' SQLite database.
-.El
-.El
-.Sh CONSUMER SETUP
-In case documents should be PGP encrypted,
-.Va PAPERLESS_PASSPHRASE
-needs to be configured in
-.Pa %%PREFIX%%/etc/paperless.conf
-first.
-.Pp
-Also,
-.Va PAPERLESS_OCR_THREADS
-can be tuned in the same configuration file to limit
-the impact on system performance.
-.Pp
-To use paperless, the consumer is enabled
-.Bd -literal -offset indent
-sysrc paperless_consumer_enable=YES
-.Ed
-.Pp
-and subsequently started
-.Bd -literal -offset indent
-service paperless-consumer start
-.Ed
-.Pp
-(which also creates/updates the paperless SQLite database).
-.Pp
-Therefore, restarting the consumer after updates
-.Bd -literal -offset indent
-service paperless-consumer restart
-.Ed
-.Pp
-updates the database before starting the new program version.
-.Sh WEB UI SETUP
-Before using the web ui, make sure to create a super user and assign
-a password
-.Bd -literal -offset indent
-su -l paperless -c '%%PREFIX%%/bin/paperless createsuperuser'
-.Ed
-.Pp
-It is recommended to host the web component using a real
-web server, e.g., nginx + uwsgi.
-.Pp
-Install and configure uwsgi:
-.Bd -literal -offset indent
-pkg install uwsgi
-mkdir -p %%PREFIX%%/etc/uwsgi
-cp %%EXAMPLESDIR%%/uwsgi.ini \\
-    %%PREFIX%%/etc/uwsgi/paperless.ini
-sysrc uwsgi_enable=YES
-sysrc uwsgi_profiles+=paperless
-sysrc uwsgi_paperless_socket_owner=paperless:www
-sysrc uwsgi_paperless_uid=paperless
-sysrc uwsgi_paperless_gid=paperless
-sysrc uwsgi_paperless_configfile=%%PREFIX%%/etc/uwsgi/paperless.ini
-.Ed
-.Pp
-Start the uwsgi process:
-.Bd -literal -offset indent
-service uwsgi start paperless
-.Ed
-.Pp
-Install nginx:
-.Bd -literal -offset indent
-pkg install nginx
-.Ed
-.Pp
-Create a basic server configuration (
-.Pa %%PREFIX%%/etc/nginx/nginx.conf
-), example snippet:
-.Bd -literal -offset indent
-server {
-    listen 80;
-    server_name localhost;
-
-    location /static/ {
-        alias %%WWWDIR%%/static/;
-    }
-
-    location / {
-        uwsgi_pass unix:/tmp/uwsgi-paperless.sock;
-        include uwsgi_params;
-    }
-
-    error_page   500 502 503 504  /50x.html;
-    location = /50x.html {
-        root   %%PREFIX%%/www/nginx-dist;
-    }
-}
-.Ed
-.Pp
-Enable and start nginx:
-.Bd -literal -offset indent
-sysrc nginx_enable=YES
-service nginx start
-.Ed
-.Pp
-.Em \&In a real world setup, nginx should be configured to use TLS
-.Em and (potentially) client certificates .
-.Sh SFTP SETUP
-Setting up
-.Em sftp
-enabled direct upload of files to be processed by the paperless
-consumer.
-Some scanners allow configuring sftp with key based authentication,
-which is convenient as it scans directly to the paperless processing
-pipeline.
-.Pp
-In case paperless is using a dedicated instance of
-.Xr sshd 8 ,
-access can be limited to the paperless user by adding
-these lines to
-.Pa /etc/ssh/sshd_config :
-.Bd -literal -offset indent
-# Only include if sshd is dedicated to paperless
-# otherwise you'll lock yourself out
-AllowUsers paperless
-.Ed
-.Pp
-The following block limits the paperless user to using the
-.Xr sftp 1
-protocol and locks it into the consume directory:
-.Bd -literal -offset indent
-# paperless can only do sftp and is dropped into correct directory
-Match User paperless
-	ChrootDirectory %h/consume
-	ForceCommand internal-sftp -u 0077 -d /input
-	AllowTcpForwarding no
-	X11Forwarding no
-	PasswordAuthentication no
-.Ed
-.Pp
-The public keys of authorized users/devices need to be added to
-.Pa /var/db/paperless/.ssh/authorized_keys :
-.Bd -literal -offset indent
-mkdir -p /var/db/paperless/.ssh
-cat path/to/pubkey >>/var/db/paperless/.ssh/authorized_keys
-.Ed
-.Pp
-Make sure
-.Xr sshd 8
-is enabled and restart (or reload) it:
-.Bd -literal -offset indent
-sysrc sshd_enable=YES
-service sshd restart
-.Ed
-.Pp
-The user will be dropped into the correct directory, so uploading
-a file is as simple as:
-.Bd -literal -offset indent
-echo put file.pdf | sftp -b - paperless@host
-.Ed
-.Sh FILES
-.Bl -tag -width ".Pa %%PREFIX%%/etc/paperless.conf" -compact
-.It Pa %%PREFIX%%/etc/paperless.conf
-See self-documented
-.Pa %%PREFIX%%/etc/paperless.conf.sample
-for example.
-.It Pa %%DOCSDIR%%/index.html
-Official documentation for the version installed.
-.It Pa %%DOCSDIR%%/presentation/index.html
-Presentation of the motivation for and technology behind paperless.
-.It Pa %%EXAMPLESDIR%%
-Configuration examples, complementary to this man page.
-.El
-.Sh SEE ALSO
-.Xr sftp 1 ,
-.Xr sshd_config 5 ,
-.Xr ports 7 ,
-.Xr daemon 8 ,
-.Xr service 8 ,
-.Xr sysrc 8
-.Pp
-.Rs
-.%B "Official paperless documentation"
-.Re
-.Pp
-.Pa https://paperless.readthedocs.io
-.Sh AUTHORS
-.An -nosplit
-This manual page was written by
-.An Michael Gmelin Aq Mt grembo@FreeBSD.org .
diff --git a/deskutils/py-paperless/files/patch-docs-guesswork.rst b/deskutils/py-paperless/files/patch-docs-guesswork.rst
deleted file mode 100644
index 7b43aa3fcdc7..000000000000
--- a/deskutils/py-paperless/files/patch-docs-guesswork.rst
+++ /dev/null
@@ -1,37 +0,0 @@
---- docs/guesswork.rst.orig	2019-01-27 13:48:05 UTC
-+++ docs/guesswork.rst
-@@ -54,6 +54,34 @@ filename as described above.
- 
- .. _dateparser: https://github.com/scrapinghub/dateparser/blob/v0.7.0/docs/usage.rst#settings
- 
-+Transforming filenames for parsing
-+----------------------------------
-+Some devices can't produce filenames that can be parsed by the default
-+parser. By configuring the option ``PAPERLESS_FILENAME_PARSE_TRANSFORMS`` in
-+``paperless.conf`` one can add transformations that are applied to the filename
-+before it's parsed.
-+
-+The option contains a list of dictionaries of regular expressions (key:
-+``pattern``) and replacements (key: ``repl``) in JSON format, which are
-+applied in order by passing them to ``re.subn``. Transformation stops
-+after the first match, so at most one transformation is applied. The general
-+syntax is
-+
-+.. code:: python
-+
-+   [{"pattern":"pattern1", "repl":"repl1"}, {"pattern":"pattern2", "repl":"repl2"}, ..., {"pattern":"patternN", "repl":"replN"}]
-+
-+The example below is for a Brother ADS-2400N, a scanner that allows
-+different names to different hardware buttons (useful for handling
-+multiple entities in one instance), but insists on adding ``_<count>``
-+to the filename.
-+
-+.. code:: python
-+
-+   # Brother profile configuration, support "Name_Date_Count" (the default
-+   # setting) and "Name_Count" (use "Name" as tag and "Count" as title).
-+   PAPERLESS_FILENAME_PARSE_TRANSFORMS=[{"pattern":"^([a-z]+)_(\\d{8})_(\\d{6})_([0-9]+)\\.", "repl":"\\2\\3Z - \\4 - \\1."}, {"pattern":"^([a-z]+)_([0-9]+)\\.", "repl":" - \\2 - \\1."}]
-+
- .. _guesswork-content:
- 
- Reading the Document Contents
diff --git a/deskutils/py-paperless/files/patch-docs_conf.py b/deskutils/py-paperless/files/patch-docs_conf.py
deleted file mode 100644
index 4e490b5921a3..000000000000
--- a/deskutils/py-paperless/files/patch-docs_conf.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# add_stylesheet() deprecated on Sphinx 4.0
-# https://www.sphinx-doc.org/en/master/extdev/deprecated.html
---- docs/conf.py.orig	2019-01-27 13:48:05 UTC
-+++ docs/conf.py
-@@ -21,7 +21,7 @@ exec(open("../src/paperless/version.py").read())
- 
- # Believe it or not, this is the officially sanctioned way to add custom CSS.
- def setup(app):
--    app.add_stylesheet("custom.css")
-+    app.add_css_file("custom.css")
- 
- # If extensions (or modules to document with autodoc) are in another directory,
- # add these directories to sys.path here. If the directory is relative to the
diff --git a/deskutils/py-paperless/files/patch-paperless.conf.example b/deskutils/py-paperless/files/patch-paperless.conf.example
deleted file mode 100644
index 1d718aa54b22..000000000000
--- a/deskutils/py-paperless/files/patch-paperless.conf.example
+++ /dev/null
@@ -1,62 +0,0 @@
---- paperless.conf.example.orig	2019-01-27 13:48:05 UTC
-+++ paperless.conf.example
-@@ -11,22 +11,22 @@
- # This where your documents should go to be consumed.  Make sure that it exists
- # and that the user running the paperless service can read/write its contents
- # before you start Paperless.
--PAPERLESS_CONSUMPTION_DIR=""
-+PAPERLESS_CONSUMPTION_DIR="/var/db/paperless/consume/input"
- 
- 
- # You can specify where you want the SQLite database to be stored instead of
- # the default location of /data/ within the install directory.
--#PAPERLESS_DBDIR=/path/to/database/file
-+PAPERLESS_DBDIR=/var/db/paperless/sqlite
- 
- 
- # Override the default MEDIA_ROOT here.  This is where all files are stored.
- # The default location is /media/documents/ within the install folder.
--#PAPERLESS_MEDIADIR=/path/to/media
-+PAPERLESS_MEDIADIR=/var/db/paperless/media
- 
- 
- # Override the default STATIC_ROOT here.  This is where all static files
- # created using "collectstatic" manager command are stored.
--#PAPERLESS_STATICDIR=""
-+PAPERLESS_STATICDIR=%%WWWDIR%%/static
- 
- 
- # Override the MEDIA_URL here.  Unless you're hosting Paperless off a subdomain
-@@ -98,7 +98,7 @@ PAPERLESS_EMAIL_SECRET=""
- # servers to the list of allowed hosts that can do CORS calls. By default
- # Paperless allows calls from localhost:8080, but you'd like to change that,
- # you can set this value to a comma-separated list.
--#PAPERLESS_CORS_ALLOWED_HOSTS="localhost:8080,example.com,localhost:8000"
-+#PAPERLESS_CORS_ALLOWED_HOSTS="http://localhost:8080,http://example.com,http://localhost:8000"
- 
- # To host paperless under a subpath url like example.com/paperless you set
- # this value to /paperless. No trailing slash!
-@@ -135,6 +135,23 @@ PAPERLESS_EMAIL_SECRET=""
- # as normal.
- #PAPERLESS_FILENAME_DATE_ORDER="YMD"
- 
-+# Sometimes devices won't create filenames which can be parsed properly
-+# by the filename parser (see
-+# https://paperless.readthedocs.io/en/latest/guesswork.html).
-+#
-+# This setting allows to specify a list of transformations
-+# in regular expression syntax, which are passed in order to re.sub.
-+# Transformation stops after the first match, so at most one transformation
-+# is applied.
-+#
-+# Syntax is a JSON array of dictionaries containing "pattern" and "repl"
-+# as keys.
-+#
-+# The example below transforms filenames created by a Brother ADS-2400N
-+# document scanner in its standard configuration `Name_Date_Count', so that
-+# count is used as title, name as tag and date can be parsed by paperless.
-+#PAPERLESS_FILENAME_PARSE_TRANSFORMS=[{"pattern":"^([a-z]+)_(\\d{8})_(\\d{6})_([0-9]+)\\.", "repl":"\\2\\3Z - \\4 - \\1."}]
-+
- #
- # The following values use sensible defaults for modern systems, but if you're
- # running Paperless on a low-resource device (like a Raspberry Pi), modifying
diff --git a/deskutils/py-paperless/files/patch-src-documents-models.py b/deskutils/py-paperless/files/patch-src-documents-models.py
deleted file mode 100644
index c8ad8e8d453d..000000000000
--- a/deskutils/py-paperless/files/patch-src-documents-models.py
+++ /dev/null
@@ -1,18 +0,0 @@
---- src/documents/models.py.orig	2019-01-27 13:48:05 UTC
-+++ src/documents/models.py
-@@ -483,8 +483,14 @@ class FileInfo:
-           "<title>.<suffix>"
-         """
- 
-+        filename = os.path.basename(path)
-+        for (pattern, repl) in settings.FILENAME_PARSE_TRANSFORMS:
-+            (filename, count) = pattern.subn(repl, filename)
-+            if count:
-+                break
-+
-         for regex in cls.REGEXES.values():
--            m = regex.match(os.path.basename(path))
-+            m = regex.match(filename)
-             if m:
-                 properties = m.groupdict()
-                 cls._mangle_property(properties, "created")
diff --git a/deskutils/py-paperless/files/patch-src-paperless-settings.py b/deskutils/py-paperless/files/patch-src-paperless-settings.py
deleted file mode 100644
index 28c9ac99cba2..000000000000
--- a/deskutils/py-paperless/files/patch-src-paperless-settings.py
+++ /dev/null
@@ -1,44 +0,0 @@
---- src/paperless/settings.py.orig	2019-01-27 13:48:05 UTC
-+++ src/paperless/settings.py
-@@ -10,7 +10,9 @@ For the full list of settings and their 
- https://docs.djangoproject.com/en/1.10/ref/settings/
- """
- 
-+import json
- import os
-+import re
- 
- from dotenv import load_dotenv
- 
-@@ -102,7 +104,7 @@ MIDDLEWARE = [
- ]
- 
- # We allow CORS from localhost:8080
--CORS_ORIGIN_WHITELIST = tuple(os.getenv("PAPERLESS_CORS_ALLOWED_HOSTS", "localhost:8080").split(","))
-+CORS_ORIGIN_WHITELIST = tuple(os.getenv("PAPERLESS_CORS_ALLOWED_HOSTS", "http://localhost:8080").split(","))
- 
- # If auth is disabled, we just use our "bypass" authentication middleware
- if bool(os.getenv("PAPERLESS_DISABLE_LOGIN", "false").lower() in ("yes", "y", "1", "t", "true")):
-@@ -314,6 +316,15 @@ FY_END = os.getenv("PAPERLESS_FINANCIAL_
- DATE_ORDER = os.getenv("PAPERLESS_DATE_ORDER", "DMY")
- FILENAME_DATE_ORDER = os.getenv("PAPERLESS_FILENAME_DATE_ORDER")
- 
-+# Transformations applied before filename parsing
-+FILENAME_PARSE_TRANSFORMS = []
-+_filename_parse_transforms = os.getenv("PAPERLESS_FILENAME_PARSE_TRANSFORMS")
-+if _filename_parse_transforms:
-+    FILENAME_PARSE_TRANSFORMS = [(
-+            re.compile(t["pattern"]), t["repl"])
-+        for t in json.loads(_filename_parse_transforms)
-+    ]
-+
- # Specify for how many years a correspondent is considered recent. Recent
- # correspondents will be shown in a separate "Recent correspondents" filter as
- # well. Set to 0 to disable this filter.
-@@ -330,3 +330,6 @@ if _filename_parse_transforms:
- # well. Set to 0 to disable this filter.
- PAPERLESS_RECENT_CORRESPONDENT_YEARS = int(os.getenv(
-     "PAPERLESS_RECENT_CORRESPONDENT_YEARS", 0))
-+
-+# As hinted by django 3.2
-+DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
diff --git a/deskutils/py-paperless/files/patch-src_documents_admin.py b/deskutils/py-paperless/files/patch-src_documents_admin.py
deleted file mode 100644
index c197c210219f..000000000000
--- a/deskutils/py-paperless/files/patch-src_documents_admin.py
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/documents/admin.py.orig	2019-01-27 13:48:05 UTC
-+++ src/documents/admin.py
-@@ -9,7 +9,7 @@ from django.http import HttpResponseRedirect
- from django.templatetags.static import static
- from django.urls import reverse
- from django.utils.html import format_html, format_html_join
--from django.utils.http import urlquote
-+from urllib.parse import quote
- from django.utils.safestring import mark_safe
- from djangoql.admin import DjangoQLSearchMixin
- 
-@@ -252,7 +254,7 @@ class DocumentAdmin(DjangoQLSearchMixin, CommonAdmin):
-             "name": opts.verbose_name,
-             "obj": format_html(
-                 '<a href="{}">{}</a>',
--                urlquote(request.path),
-+                quote(request.path),
-                 obj
-             ),
-         }
diff --git a/deskutils/py-paperless/files/patch-src_documents_signals_____init____.py b/deskutils/py-paperless/files/patch-src_documents_signals_____init____.py
deleted file mode 100644
index 83e176d8e93f..000000000000
--- a/deskutils/py-paperless/files/patch-src_documents_signals_____init____.py
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/documents/signals/__init__.py.orig	2024-02-22 18:57:58 UTC
-+++ src/documents/signals/__init__.py
-@@ -1,5 +1,5 @@
- from django.dispatch import Signal
- 
--document_consumption_started = Signal(providing_args=["filename"])
--document_consumption_finished = Signal(providing_args=["document"])
--document_consumer_declaration = Signal(providing_args=[])
-+document_consumption_started = Signal()
-+document_consumption_finished = Signal()
-+document_consumer_declaration = Signal()
diff --git a/deskutils/py-paperless/files/patch-src_documents_templates_admin_documents_document_change__list__results.html b/deskutils/py-paperless/files/patch-src_documents_templates_admin_documents_document_change__list__results.html
deleted file mode 100644
index e5534c4054f2..000000000000
--- a/deskutils/py-paperless/files/patch-src_documents_templates_admin_documents_document_change__list__results.html
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/documents/templates/admin/documents/document/change_list_results.html.orig	2022-04-25 11:00:26 UTC
-+++ src/documents/templates/admin/documents/document/change_list_results.html
-@@ -81,7 +81,7 @@
-   }
- 
-   .grid {
--    margin-right: 260px;
-+    /*margin-right: 260px;*/
-   }
-   .grid:after {
-     content: "";
diff --git a/deskutils/py-paperless/files/patch-src_paperless_urls.py b/deskutils/py-paperless/files/patch-src_paperless_urls.py
deleted file mode 100644
index d1d2d6e63c25..000000000000
--- a/deskutils/py-paperless/files/patch-src_paperless_urls.py
+++ /dev/null
@@ -1,50 +0,0 @@
---- src/paperless/urls.py.orig	2024-02-22 19:09:18 UTC
-+++ src/paperless/urls.py
-@@ -1,5 +2,6 @@
- from django.conf import settings
--from django.conf.urls import include, static, url
-+from django.conf.urls import include, static
-+from django.urls import re_path
- from django.contrib import admin
- from django.urls import reverse_lazy
- from django.views.decorators.csrf import csrf_exempt
-@@ -27,32 +27,32 @@ router.register(r"tags", TagViewSet)
- urlpatterns = [
- 
-     # API
--    url(
-+    re_path(
-         r"^api/auth/",
-         include(
-             ('rest_framework.urls', 'rest_framework'),
-             namespace="rest_framework")
-     ),
--    url(r"^api/", include((router.urls, 'drf'), namespace="drf")),
-+    re_path(r"^api/", include((router.urls, 'drf'), namespace="drf")),
- 
-     # File downloads
--    url(
-+    re_path(
-         r"^fetch/(?P<kind>doc|thumb)/(?P<pk>\d+)$",
-         FetchView.as_view(),
-         name="fetch"
-     ),
- 
-     # File uploads
--    url(r"^push$", csrf_exempt(PushView.as_view()), name="push"),
-+    re_path(r"^push$", csrf_exempt(PushView.as_view()), name="push"),
- 
-     # Favicon
--    url(r"^favicon.ico$", FaviconView.as_view(), name="favicon"),
-+    re_path(r"^favicon.ico$", FaviconView.as_view(), name="favicon"),
- 
-     # The Django admin
--    url(r"admin/", admin.site.urls),
-+    re_path(r"admin/", admin.site.urls),
- 
-     # Redirect / to /admin
--    url(r"^$", RedirectView.as_view(
-+    re_path(r"^$", RedirectView.as_view(
-         permanent=True, url=reverse_lazy("admin:index"))),
- 
- ] + static.static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/deskutils/py-paperless/files/pkg-message.in b/deskutils/py-paperless/files/pkg-message.in
deleted file mode 100644
index 216c54db405c..000000000000
--- a/deskutils/py-paperless/files/pkg-message.in
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-{ type: install
-  message: <<EOM
-  Please see `man paperless' for details on how to configure paperless.
-EOM
-}
-]
diff --git a/deskutils/py-paperless/files/sshd_config.in b/deskutils/py-paperless/files/sshd_config.in
deleted file mode 100644
index aab9e1692f39..000000000000
--- a/deskutils/py-paperless/files/sshd_config.in
+++ /dev/null
@@ -1,14 +0,0 @@
-### Configuration for uploading documents via SFTP
-### e.g. using a scanner that supports such a feature
-
-# Only include if sshd is dedicated to paperless
-# otherwise you'll lock yourself out
-AllowUsers paperless
-
-# paperless can only do sftp and is dropped into correct directory
-Match User paperless
-	ChrootDirectory %h/consume
-	ForceCommand internal-sftp -u 0077 -d /input
-	AllowTcpForwarding no
-	X11Forwarding no
-	PasswordAuthentication no
diff --git a/deskutils/py-paperless/files/uwsgi.ini.in b/deskutils/py-paperless/files/uwsgi.ini.in
deleted file mode 100644
index c991c5b1bb68..000000000000
--- a/deskutils/py-paperless/files/uwsgi.ini.in
+++ /dev/null
@@ -1,9 +0,0 @@
-[uwsgi]
-chdir = %%PYTHONPREFIX_SITELIBDIR%%/paperless
-module = paperless.wsgi:application
-env = DJANGO_SETTINGS_MODULE=paperless.settings
-env = LANG=en_US.UTF-8
-env = PATH=$PATH:%%PREFIX%%/bin
-harakiri = 20
-max-requests = 500
-vacuum = true
diff --git a/deskutils/py-paperless/pkg-descr b/deskutils/py-paperless/pkg-descr
deleted file mode 100644
index c226b3ec1a96..000000000000
--- a/deskutils/py-paperless/pkg-descr
+++ /dev/null
@@ -1,7 +0,0 @@
-Index and archive all of your scanned paper documents.
-
-Paperless is a simple Django application running in two parts: The consumer,
-which does the indexing and a web interface, which let's you you search and
-download already-indexed documents.
-
-See also: https://github.com/the-paperless-project/paperless
diff --git a/deskutils/py-paperless/pkg-plist b/deskutils/py-paperless/pkg-plist
deleted file mode 100644
index 98a320157d6f..000000000000
--- a/deskutils/py-paperless/pkg-plist
+++ /dev/null
@@ -1,544 +0,0 @@
-bin/paperless
-@sample(paperless,paperless,0600) etc/paperless.conf.sample
-%%PYTHON_SITELIBDIR%%/paperless/__pycache__/manage%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/paperless/__pycache__/manage%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/paperless/documents/__init__.py
-%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/__init__%%PYTHON_TAG%%.opt-1.pyc
-%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/__init__%%PYTHON_TAG%%.pyc
-%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/actions%%PYTHON_TAG%%.opt-1.pyc
*** 536 LINES SKIPPED ***


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69cbf182.393ce.1a2b4a2c>