From owner-svn-ports-all@freebsd.org Sat Mar 30 12:27:56 2019 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 56E23154DB8E; Sat, 30 Mar 2019 12:27:56 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CCFE485C4A; Sat, 30 Mar 2019 12:27:55 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 98B87EC65; Sat, 30 Mar 2019 12:27:55 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2UCRtas049059; Sat, 30 Mar 2019 12:27:55 GMT (envelope-from grembo@FreeBSD.org) Received: (from grembo@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2UCRq0A049046; Sat, 30 Mar 2019 12:27:52 GMT (envelope-from grembo@FreeBSD.org) Message-Id: <201903301227.x2UCRq0A049046@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: grembo set sender to grembo@FreeBSD.org using -f From: Michael Gmelin Date: Sat, 30 Mar 2019 12:27:52 +0000 (UTC) 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 X-SVN-Group: ports-head X-SVN-Commit-Author: grembo X-SVN-Commit-Paths: in head: . deskutils/py-paperless deskutils/py-paperless/files X-SVN-Commit-Revision: 497249 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: CCFE485C4A X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.94)[-0.938,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Mar 2019 12:27:56 -0000 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 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 ***