Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Mar 2019 12:27:52 +0000 (UTC)
From:      Michael Gmelin <grembo@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r497249 - in head: . deskutils/py-paperless deskutils/py-paperless/files
Message-ID:  <201903301227.x2UCRq0A049046@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grembo
Date: Sat Mar 30 12:27:52 2019
New Revision: 497249
URL: https://svnweb.freebsd.org/changeset/ports/497249

Log:
  Add deskutils/py-paperless, a Django application that allows to index and
  archive scanned paper documents.
  
  PR:		236680

Added:
  head/deskutils/py-paperless/
  head/deskutils/py-paperless/Makefile   (contents, props changed)
  head/deskutils/py-paperless/distinfo   (contents, props changed)
  head/deskutils/py-paperless/files/
  head/deskutils/py-paperless/files/README.in   (contents, props changed)
  head/deskutils/py-paperless/files/nginx.conf.in   (contents, props changed)
  head/deskutils/py-paperless/files/paperless-consumer.in   (contents, props changed)
  head/deskutils/py-paperless/files/paperless.7.in   (contents, props changed)
  head/deskutils/py-paperless/files/patch-paperless.conf.example   (contents, props changed)
  head/deskutils/py-paperless/files/pkg-message.in   (contents, props changed)
  head/deskutils/py-paperless/files/sshd_config.in   (contents, props changed)
  head/deskutils/py-paperless/files/uwsgi.ini.in   (contents, props changed)
  head/deskutils/py-paperless/pkg-descr   (contents, props changed)
  head/deskutils/py-paperless/pkg-plist   (contents, props changed)
Modified:
  head/GIDs
  head/UIDs

Modified: head/GIDs
==============================================================================
--- head/GIDs	Sat Mar 30 11:56:27 2019	(r497248)
+++ head/GIDs	Sat Mar 30 12:27:52 2019	(r497249)
@@ -177,7 +177,7 @@ _ntp:*:233:
 kafka:*:234:
 openhab:*:235:
 rspamd:*:236:
-# free: 237
+paperless:*:237:
 # free: 238
 # free: 239
 aprsd:*:240:

Modified: head/UIDs
==============================================================================
--- head/UIDs	Sat Mar 30 11:56:27 2019	(r497248)
+++ head/UIDs	Sat Mar 30 12:27:52 2019	(r497249)
@@ -182,7 +182,7 @@ _ntp:*:233:233::0:0:NTP Daemon:/var/empty:/usr/sbin/no
 kafka:*:234:234::0:0:Apache Kafka user:/nonexistent:/usr/sbin/nologin
 openhab:*:235:235::0:0:openHAB user:/var/db/openhab2/home:/usr/sbin/nologin
 rspamd:*:236:236::0:0:rspamd pseudo-user:/nonexistent:/usr/sbin/nologin
-# free: 237
+paperless:*:237:237::0:0:paperless user:/var/db/paperless:/bin/sh
 # free: 238
 # free: 239
 aprsd:*:240:240::0:0:aprsd:/nonexistent:/bin/sh

Added: head/deskutils/py-paperless/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/Makefile	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,126 @@
+# $FreeBSD$
+
+PORTNAME=	paperless
+PORTVERSION=	2.7.0
+CATEGORIES=	deskutils python
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	grembo@FreeBSD.org
+COMMENT=	Index and archive scanned paper documents
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}dateparser>=0.7.1:devel/py-dateparser@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-django-cors-headers>=2.4.0:www/py-dj21-django-cors-headers@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-django-crispy-forms>=1.7.2:www/py-dj21-django-crispy-forms@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-django-extensions>=2.1.6:www/py-dj21-django-extensions@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-django-filter>=2.0.0:www/py-dj21-django-filter@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-djangoql>=0.12.4:www/py-dj21-djangoql@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}dj21-djangorestframework>=3.9.0:www/py-dj21-djangorestframework@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}fuzzywuzzy>=0.15.1:devel/py-fuzzywuzzy@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}langdetect>=1.0.7: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}
+RUN_DEPENDS:=	${BUILD_DEPENDS}
+RUN_DEPENDS+=	gpg2:security/gnupg \
+		optipng:graphics/optipng \
+		tesseract:graphics/tesseract \
+		unpaper:graphics/unpaper
+
+USES=		python:3.5+ shebangfix
+USE_GITHUB=	yes
+GH_ACCOUNT=	the-paperless-project
+GH_PROJECT=	paperless
+USE_RC_SUBR=	paperless-consumer
+
+SHEBANG_FILES=	${WRKSRC}/src/manage.py
+
+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=	IMAGICK6_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>=0:textproc/py-sphinx@${PY_FLAVOR}
+DOCS_USES=		gmake
+
+IMAGICK6_X11_RUN_DEPENDS=	convert:graphics/ImageMagick6
+IMAGICK6_NOX11_RUN_DEPENDS=	convert:graphics/ImageMagick6-nox11
+IMAGICK7_X11_RUN_DEPENDS=	convert:graphics/ImageMagick7
+IMAGICK7_NOX11_RUN_DEPENDS=	convert:graphics/ImageMagick7-nox11
+
+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}
+
+do-install:
+	@${MKDIR} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless
+	@cd ${WRKSRC}/resources && \
+		${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}
+	@cd ${WRKSRC}/src && \
+		${COPYTREE_SHARE} . ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless
+	@${RLN} ${STAGEDIR}${PYTHON_SITELIBDIR}/paperless/manage.py \
+		${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}${MANPREFIX}/man/man7
+
+# Klammern aussenrum?
+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>

Added: head/deskutils/py-paperless/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/distinfo	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,3 @@
+TIMESTAMP = 1553390083
+SHA256 (the-paperless-project-paperless-2.7.0_GH0.tar.gz) = 478823e12ea874dc0acd7f6ce038d221849cfcb797f0d6de57624bacdaa02839
+SIZE (the-paperless-project-paperless-2.7.0_GH0.tar.gz) = 4038688

Added: head/deskutils/py-paperless/files/README.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/README.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1 @@
+Please see `man paperless' for details on how to use the paperless examples.

Added: head/deskutils/py-paperless/files/nginx.conf.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/nginx.conf.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,18 @@
+    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;
+        }
+    }

Added: head/deskutils/py-paperless/files/paperless-consumer.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/paperless-consumer.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# 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"

Added: head/deskutils/py-paperless/files/paperless.7.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/paperless.7.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,259 @@
+.\"
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 30, 2019
+.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
+.Pp
+.Dl "sysrc paperless_consumer_enable=YES"
+.Pp
+and subsequently started
+.Pp
+.Dl "service paperless-consumer start"
+.Pp
+(which also creates/updates the paperless SQLite database).
+.Pp
+Therefore, restarting the consumer after updates
+.Pp
+.Dl "service paperless-consumer restart"
+.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
+.Pp
+.Dl "su -l paperless -c '%%PREFIX%%/bin/paperless createsuperuser'"
+.Pp
+It is recommended to host the web component using a real
+web server, e.g., nginx + uwsgi.
+.Pp
+Install and configure uwsgi:
+.Pp
+.Dl "pkg install uwsgi-py36"
+.Dl "mkdir -p %%PREFIX%%/etc/uwsgi"
+.Dl "cp %%EXAMPLESDIR%%/uwsgi.ini \\"
+.Dl "    %%PREFIX%%/etc/uwsgi/paperless.ini"
+.Dl "sysrc uwsgi_enable=YES"
+.Dl "sysrc uwsgi_profiles+=paperless"
+.Dl "sysrc uwsgi_paperless_socket_owner=paperless:www"
+.Dl "sysrc uwsgi_paperless_uid=paperless"
+.Dl "sysrc uwsgi_paperless_gid=paperless"
+.Dl "sysrc uwsgi_paperless_configfile=%%PREFIX%%/etc/uwsgi/paperless.ini"
+.Pp
+Start the uwsgi process:
+.Pp
+.Dl "service uwsgi start paperless"
+.Pp
+Install nginx:
+.Pp
+.Dl "pkg install nginx"
+.Pp
+Create a basic server configuration (
+.Pa %%PREFIX%%/etc/nginx/nginx.conf
+), example snippet:
+.Pp
+.Dl "server {"
+.Dl "    listen 80;"
+.Dl "    server_name localhost;"
+.Dl ""
+.Dl "    location /static/ {"
+.Dl "        alias %%WWWDIR%%/static/;"
+.Dl "    }"
+.Dl ""
+.Dl "    location / {"
+.Dl "        uwsgi_pass unix:/tmp/uwsgi-paperless.sock;"
+.Dl "        include uwsgi_params;"
+.Dl "    }"
+.Dl ""
+.Dl "    error_page   500 502 503 504  /50x.html;"
+.Dl "    location = /50x.html {"
+.Dl "        root   %%PREFIX%%/www/nginx-dist;"
+.Dl "    }"
+.Dl "}"
+.Pp
+Enable and start nginx:
+.Pp
+.Dl "sysrc nginx_enable=YES"
+.Dl "service nginx start"
+.Pp
+.Em \In the real world, 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 :
+.Pp
+.Dl "# Only include if sshd is dedicated to paperless"
+.Dl "# otherwise you'll lock yourself out"
+.Dl "AllowUsers paperless"
+.Pp
+The following block limits the paperless user to using the
+.Xr sftp 1
+protocol and locks it into the consume directory:
+.Pp
+.Dl "# paperless can only do sftp and is dropped into correct directory"
+.Dl "Match User paperless"
+.Dl "	ChrootDirectory %h/consume"
+.Dl "	ForceCommand internal-sftp -u 0077 -d /input"
+.Dl "	AllowTcpForwarding no"
+.Dl "	X11Forwarding no"
+.Dl "	PasswordAuthentication no"
+.Pp
+The public keys of authorized users/devices need to be added to
+.Pa /var/db/paperless/.ssh/authorized_keys :
+.Pp
+.Dl "mkdir -p /var/db/paperless/.ssh"
+.Dl "cat path/to/pubkey >>/var/db/paperless/.ssh/authorized_keys"
+.Pp
+Make sure
+.Xr sshd 8
+is enabled and restart (or reload) it:
+.Pp
+.Dl "sysrc sshd_enable=YES"
+.Dl "service sshd restart"
+.Pp
+The user will be dropped into the correct directory, so uploading
+a file is as simple as:
+.Pp
+.Dl "echo put file.pdf | sftp -b - paperless@host"
+.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 .

Added: head/deskutils/py-paperless/files/patch-paperless.conf.example
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/patch-paperless.conf.example	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,29 @@
+--- 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

Added: head/deskutils/py-paperless/files/pkg-message.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/pkg-message.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,3 @@
+=========================================================================
+  Please see `man paperless' for details on how to configure paperless.
+=========================================================================

Added: head/deskutils/py-paperless/files/sshd_config.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/sshd_config.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,14 @@
+### 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

Added: head/deskutils/py-paperless/files/uwsgi.ini.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/files/uwsgi.ini.in	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,9 @@
+[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

Added: head/deskutils/py-paperless/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/pkg-descr	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,8 @@
+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.
+
+WWW: https://github.com/the-paperless-project/paperless
+WWW: https://paperless.readthedocs.io

Added: head/deskutils/py-paperless/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/deskutils/py-paperless/pkg-plist	Sat Mar 30 12:27:52 2019	(r497249)
@@ -0,0 +1,741 @@
+bin/paperless
+@sample(paperless,paperless,0600) etc/paperless.conf.sample
+%%PYTHON_SITELIBDIR%%/paperless/__pycache__/manage.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/__pycache__/manage.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/actions.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/actions.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/admin.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/admin.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/checks.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/checks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/consumer.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/consumer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/filters.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/filters.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/forms.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/forms.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/loggers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/loggers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/mail.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/mail.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/managers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/managers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/mixins.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/mixins.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/serialisers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/serialisers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/settings.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/settings.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/actions.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/admin.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/apps.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/checks.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/consumer.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/filters.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/forms.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/loggers.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/mail.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/change_storage_type.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/change_storage_type.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_consumer.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_consumer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_correspondents.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_correspondents.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_exporter.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_exporter.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_importer.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_importer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_logs.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_logs.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_retagger.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/document_retagger.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/loaddata_stdin.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/__pycache__/loaddata_stdin.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/change_storage_type.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_consumer.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_correspondents.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_exporter.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_importer.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_logs.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/document_retagger.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/management/commands/loaddata_stdin.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/managers.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0001_initial.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0002_auto_20151226_1316.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0003_sender.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0004_auto_20160114_1844.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0005_auto_20160123_0313.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0006_auto_20160123_0430.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0007_auto_20160126_2114.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0008_document_file_type.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0009_auto_20160214_0040.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0010_log.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0011_auto_20160303_1929.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0012_auto_20160305_0040.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0013_auto_20160325_2111.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0014_document_checksum.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0015_add_insensitive_to_match.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0016_auto_20170325_1558.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0017_auto_20170512_0507.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0018_auto_20170715_1712.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0019_add_consumer_user.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0020_document_added.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0021_document_storage_type.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/0022_auto_20181007_1420.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0001_initial.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0001_initial.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0002_auto_20151226_1316.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0002_auto_20151226_1316.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0003_sender.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0003_sender.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0004_auto_20160114_1844.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0004_auto_20160114_1844.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0005_auto_20160123_0313.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0005_auto_20160123_0313.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0006_auto_20160123_0430.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0006_auto_20160123_0430.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0007_auto_20160126_2114.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0007_auto_20160126_2114.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0008_document_file_type.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0008_document_file_type.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0009_auto_20160214_0040.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0009_auto_20160214_0040.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0010_log.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0010_log.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0011_auto_20160303_1929.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0011_auto_20160303_1929.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0012_auto_20160305_0040.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0012_auto_20160305_0040.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0013_auto_20160325_2111.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0013_auto_20160325_2111.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0014_document_checksum.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0014_document_checksum.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0015_add_insensitive_to_match.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0015_add_insensitive_to_match.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0016_auto_20170325_1558.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0016_auto_20170325_1558.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0017_auto_20170512_0507.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0017_auto_20170512_0507.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0018_auto_20170715_1712.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0018_auto_20170715_1712.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0019_add_consumer_user.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0019_add_consumer_user.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0020_document_added.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0020_document_added.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0021_document_storage_type.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0021_document_storage_type.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0022_auto_20181007_1420.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/0022_auto_20181007_1420.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/migrations/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/mixins.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/models.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/parsers.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/serialisers.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/settings.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/__pycache__/handlers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/__pycache__/handlers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/signals/handlers.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/gif.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/image.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/jpg.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/pdf.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/png.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/documents/img/tiff.png
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/js/colours.js
+%%PYTHON_SITELIBDIR%%/paperless/documents/static/paperless.css
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/base_site.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/documents/document/change_form.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/documents/document/change_list.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/documents/document/change_list_results.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/documents/document/select_object.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/admin/index.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templates/documents/index.html
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/customisation.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/customisation.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/hacks.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/__pycache__/hacks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/customisation.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/templatetags/hacks.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/factories.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/factories.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_checks.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_checks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_consumer.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_consumer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_document_model.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_document_model.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_importer.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_importer.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_logger.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_logger.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_mail.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_mail.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_matchables.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_matchables.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_models.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/__pycache__/test_models.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/factories.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/samples/inline_mail.txt
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/samples/mail.txt
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_checks.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_consumer.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_document_model.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_importer.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_logger.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_mail.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_matchables.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/tests/test_models.py
+%%PYTHON_SITELIBDIR%%/paperless/documents/views.py
+@mode 0755
+%%PYTHON_SITELIBDIR%%/paperless/manage.py
+@mode
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/checks.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/checks.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/db.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/db.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/middleware.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/middleware.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/mixins.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/mixins.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/settings.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/settings.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/urls.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/urls.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/version.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/version.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/wsgi.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless/__pycache__/wsgi.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless/checks.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/db.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/middleware.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/mixins.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/models.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/settings.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/static/paperless/img/favicon.ico
+%%PYTHON_SITELIBDIR%%/paperless/paperless/static/paperless/img/logo-dark.png
+%%PYTHON_SITELIBDIR%%/paperless/paperless/static/paperless/img/logo-light.png
+%%PYTHON_SITELIBDIR%%/paperless/paperless/urls.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/version.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/views.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless/wsgi.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/languages.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/languages.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/signals.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/__pycache__/signals.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/apps.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/languages.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/parsers.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/signals.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_date.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_date.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_ocr.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_ocr.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_signals.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/__pycache__/test_signals.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/samples/no-text.png
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/test_date.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/test_ocr.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_tesseract/tests/test_signals.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/parsers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/signals.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/__pycache__/signals.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/apps.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/parsers.py
+%%PYTHON_SITELIBDIR%%/paperless/paperless_text/signals.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/admin.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/admin.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/apps.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/filters.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/filters.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/models.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/serialisers.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/serialisers.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/tests.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/tests.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/__pycache__/views.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/admin.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/apps.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/filters.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/0001_initial.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/0002_auto_20181007_1420.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__init__.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/0001_initial.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/0001_initial.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/0002_auto_20181007_1420.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/0002_auto_20181007_1420.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.%%PYTHON_PYOEXTENSION%%
+%%PYTHON_SITELIBDIR%%/paperless/reminders/migrations/__pycache__/__init__.cpython-%%PYTHON_SUFFIX%%.pyc
+%%PYTHON_SITELIBDIR%%/paperless/reminders/models.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/serialisers.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/tests.py
+%%PYTHON_SITELIBDIR%%/paperless/reminders/views.py
+%%PYTHON_SITELIBDIR%%/paperless/setup.cfg
+%%PYTHON_SITELIBDIR%%/paperless/tox.ini
+man/man7/paperless.7.gz
+%%PORTDOCS%%%%DOCSDIR%%/.buildinfo
+%%PORTDOCS%%%%DOCSDIR%%/_sources/api.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/changelog.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/consumption.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/contributing.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/customising.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/extending.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/guesswork.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/index.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/migrating.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/requirements.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/scanners.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/setup.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/troubleshooting.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_sources/utilities.rst.txt
+%%PORTDOCS%%%%DOCSDIR%%/_static/ajax-loader.gif
+%%PORTDOCS%%%%DOCSDIR%%/_static/basic.css
+%%PORTDOCS%%%%DOCSDIR%%/_static/comment-bright.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/comment-close.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/comment.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/css/badge_only.css
+%%PORTDOCS%%%%DOCSDIR%%/_static/css/theme.css
+%%PORTDOCS%%%%DOCSDIR%%/_static/custom.css
+%%PORTDOCS%%%%DOCSDIR%%/_static/doctools.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/down-pressed.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/down.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/file.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bold.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bold.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bold.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bold.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bolditalic.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bolditalic.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bolditalic.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-bolditalic.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-italic.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-italic.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-italic.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-italic.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-regular.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-regular.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-regular.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/Lato/lato-regular.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/fontawesome-webfont.eot
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/fontawesome-webfont.svg
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/fontawesome-webfont.ttf
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/fontawesome-webfont.woff
+%%PORTDOCS%%%%DOCSDIR%%/_static/fonts/fontawesome-webfont.woff2
+%%PORTDOCS%%%%DOCSDIR%%/_static/jquery-3.1.0.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/jquery.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/js/modernizr.min.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/js/theme.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/minus.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/plus.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/pygments.css
+%%PORTDOCS%%%%DOCSDIR%%/_static/screenshot.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/searchtools.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/underscore-1.3.1.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/underscore.js
+%%PORTDOCS%%%%DOCSDIR%%/_static/up-pressed.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/up.png
+%%PORTDOCS%%%%DOCSDIR%%/_static/websupport.js
+%%PORTDOCS%%%%DOCSDIR%%/api.html
+%%PORTDOCS%%%%DOCSDIR%%/changelog.html
+%%PORTDOCS%%%%DOCSDIR%%/consumption.html
+%%PORTDOCS%%%%DOCSDIR%%/contributing.html
+%%PORTDOCS%%%%DOCSDIR%%/customising.html
+%%PORTDOCS%%%%DOCSDIR%%/extending.html
+%%PORTDOCS%%%%DOCSDIR%%/genindex.html
+%%PORTDOCS%%%%DOCSDIR%%/guesswork.html
+%%PORTDOCS%%%%DOCSDIR%%/index.html
+%%PORTDOCS%%%%DOCSDIR%%/migrating.html

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201903301227.x2UCRq0A049046>