]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Enhancement: support custom logo / title on login page (#6775)
authorshamoon <4887959+shamoon@users.noreply.github.com>
Mon, 20 May 2024 16:40:19 +0000 (09:40 -0700)
committerGitHub <noreply@github.com>
Mon, 20 May 2024 16:40:19 +0000 (09:40 -0700)
src/documents/context_processors.py
src/documents/static/base.css [moved from src/documents/static/accounts.css with 88% similarity]
src/documents/templates/paperless-ngx/base.html
src/documents/templates/paperless-ngx/snippets/svg_leaf.html [new file with mode: 0644]
src/locale/en_US/LC_MESSAGES/django.po

index 9f8dacfb3f965749a40f1e9dc7f09260e9229ad5..91a7ce39103c8e593e6cdf094b537b2574f6d59a 100644 (file)
@@ -1,11 +1,28 @@
 from django.conf import settings as django_settings
 
+from paperless.config import GeneralConfig
+
 
 def settings(request):
+    general_config = GeneralConfig()
+
+    app_title = (
+        django_settings.APP_TITLE
+        if general_config.app_title is None or len(general_config.app_title) == 0
+        else general_config.app_title
+    )
+    app_logo = (
+        django_settings.APP_LOGO
+        if general_config.app_logo is None or len(general_config.app_logo) == 0
+        else general_config.app_logo
+    )
+
     return {
         "EMAIL_ENABLED": django_settings.EMAIL_HOST != "localhost"
         or django_settings.EMAIL_HOST_USER != "",
         "DISABLE_REGULAR_LOGIN": django_settings.DISABLE_REGULAR_LOGIN,
         "ACCOUNT_ALLOW_SIGNUPS": django_settings.ACCOUNT_ALLOW_SIGNUPS,
         "domain": getattr(django_settings, "PAPERLESS_URL", request.get_host()),
+        "APP_TITLE": app_title,
+        "APP_LOGO": app_logo,
     }
similarity index 88%
rename from src/documents/static/accounts.css
rename to src/documents/static/base.css
index 2a1d905f909fcbd18a2256d8335f1f20cf2a5bdf..90d8d7b77a4fe44d2d898a9f03860b65738bbf3a 100644 (file)
@@ -7,6 +7,19 @@ body {
   --pngx-primary-active: #0c2c10;
 }
 
+.logo {
+  height: auto;
+}
+
+.byline {
+  font-size: 0.6rem;
+  letter-spacing: 0.1rem;
+}
+
+.text-primary {
+  color: var(--pngx-primary) !important;
+}
+
 .form-control {
   --bs-body-bg: #fff;
 }
@@ -28,6 +41,7 @@ body {
 
 .form-accounts {
   max-width: 330px;
+  min-width: 300px;
 }
 
 .form-stacked-top input {
@@ -74,4 +88,8 @@ body {
   svg.logo .text {
     fill: #abb2bf !important;
   }
+
+  .byline {
+    color: #abb2bf;
+  }
 }
index 7a15320fd5b3d9825d706371d9ee1da60463f385..49fc0edf469ca351cf614220d5871615378e7f5f 100644 (file)
             {% endblock head_title %}
         </title>
         <link href="{% static 'bootstrap.min.css' %}" rel="stylesheet">
-        <link href="{% static 'accounts.css' %}" rel="stylesheet">
+        <link href="{% static 'base.css' %}" rel="stylesheet">
     </head>
 
     <body class="text-center">
         <div class="position-absolute top-50 start-50 translate-middle">
             <form class="form-accounts" method="post">
                 {% csrf_token %}
-                {% include "paperless-ngx/snippets/svg_logo.html" with extra_attrs="width='300' class='logo mb-4'" %}
+                {% if not APP_LOGO and not APP_TITLE %}
+                    {% include "paperless-ngx/snippets/svg_logo.html" with extra_attrs="width='300' class='logo mb-4'" %}
+                {% else %}
+                    {% if APP_LOGO %}
+                        <img src="{{APP_LOGO}}" width="300" class="logo mb-1" />
+                        <div class="d-flex flex-column align-items-end mb-4">
+                            <span class="byline text-uppercase font-monospace">by Paperless-ngx</span>
+                        </div>
+                    {% else %}
+                        <h1 class="font-weight-normal text-primary mb-1 d-flex justify-content-center align-items-start">
+                            {% include "paperless-ngx/snippets/svg_leaf.html" with extra_attrs="width='30' class='mt-2'" %}
+                            <div class="d-flex flex-column align-items-end mb-4">
+                                <span class="ms-2">{{ APP_TITLE }}</span>
+                                <span class="byline text-uppercase font-monospace">by Paperless-ngx</span>
+                            </div>
+                        </h1>
+                    {% endif %}
+                {% endif %}
                 {% for message in messages %}
                     <div class="alert alert-{{ message.level_tag }}" role="alert">
                     {{ message }}
diff --git a/src/documents/templates/paperless-ngx/snippets/svg_leaf.html b/src/documents/templates/paperless-ngx/snippets/svg_leaf.html
new file mode 100644 (file)
index 0000000..bb33bbd
--- /dev/null
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 198.43 238.91" {{ extra_attrs }} fill="currentColor">
+    <path
+        d="M194.7,0C164.22,70.94,17.64,79.74,64.55,194.06c.58,1.47-10.85,17-18.47,29.9-1.76-6.45-3.81-13.48-3.52-14.07,38.11-45.14-27.26-70.65-30.78-107.58C-4.64,131.62-10.5,182.92,39,212.53c.3,0,2.64,11.14,3.81,16.71a58.55,58.55,0,0,0-2.93,6.45c-1.17,2.93,7.62,2.64,7.62,3.22.88-.29,21.7-36.93,22.28-37.23C187.67,174.72,208.48,68.6,194.7,0ZM134.61,74.75C79.5,124,70.12,160.64,71.88,178.53,53.41,134.85,107.64,86.77,134.61,74.75ZM28.2,145.11c10.55,9.67,28.14,39.28,13.19,56.57C44.91,193.77,46.08,175.89,28.2,145.11Z"
+        transform="translate(0 0)" />
+</svg>
index 373d03af7c925cbefc65a63efd95a332546b29c5..c8ada3d3c06c788f85177dc86b8754189d2ca8d9 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: paperless-ngx\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-26 07:19-0700\n"
+"POT-Creation-Date: 2024-05-19 11:07-0700\n"
 "PO-Revision-Date: 2022-02-17 04:17\n"
 "Last-Translator: \n"
 "Language-Team: English\n"
@@ -21,31 +21,31 @@ msgstr ""
 msgid "Documents"
 msgstr ""
 
-#: documents/models.py:36 documents/models.py:779
+#: documents/models.py:36 documents/models.py:783
 msgid "owner"
 msgstr ""
 
-#: documents/models.py:53 documents/models.py:942
+#: documents/models.py:53 documents/models.py:946
 msgid "None"
 msgstr ""
 
-#: documents/models.py:54 documents/models.py:943
+#: documents/models.py:54 documents/models.py:947
 msgid "Any word"
 msgstr ""
 
-#: documents/models.py:55 documents/models.py:944
+#: documents/models.py:55 documents/models.py:948
 msgid "All words"
 msgstr ""
 
-#: documents/models.py:56 documents/models.py:945
+#: documents/models.py:56 documents/models.py:949
 msgid "Exact match"
 msgstr ""
 
-#: documents/models.py:57 documents/models.py:946
+#: documents/models.py:57 documents/models.py:950
 msgid "Regular expression"
 msgstr ""
 
-#: documents/models.py:58 documents/models.py:947
+#: documents/models.py:58 documents/models.py:951
 msgid "Fuzzy word"
 msgstr ""
 
@@ -53,20 +53,20 @@ msgstr ""
 msgid "Automatic"
 msgstr ""
 
-#: documents/models.py:62 documents/models.py:416 documents/models.py:1263
-#: paperless_mail/models.py:18 paperless_mail/models.py:93
+#: documents/models.py:62 documents/models.py:416 documents/models.py:1267
+#: paperless_mail/models.py:18 paperless_mail/models.py:96
 msgid "name"
 msgstr ""
 
-#: documents/models.py:64 documents/models.py:1003
+#: documents/models.py:64 documents/models.py:1007
 msgid "match"
 msgstr ""
 
-#: documents/models.py:67 documents/models.py:1006
+#: documents/models.py:67 documents/models.py:1010
 msgid "matching algorithm"
 msgstr ""
 
-#: documents/models.py:72 documents/models.py:1011
+#: documents/models.py:72 documents/models.py:1015
 msgid "is insensitive"
 msgstr ""
 
@@ -132,7 +132,7 @@ msgstr ""
 msgid "title"
 msgstr ""
 
-#: documents/models.py:171 documents/models.py:693
+#: documents/models.py:171 documents/models.py:697
 msgid "content"
 msgstr ""
 
@@ -162,8 +162,8 @@ msgstr ""
 msgid "The checksum of the archived document."
 msgstr ""
 
-#: documents/models.py:205 documents/models.py:385 documents/models.py:699
-#: documents/models.py:737 documents/models.py:807 documents/models.py:844
+#: documents/models.py:205 documents/models.py:385 documents/models.py:703
+#: documents/models.py:741 documents/models.py:811 documents/models.py:848
 msgid "created"
 msgstr ""
 
@@ -211,7 +211,7 @@ msgstr ""
 msgid "The position of this document in your physical document archive."
 msgstr ""
 
-#: documents/models.py:279 documents/models.py:710 documents/models.py:764
+#: documents/models.py:279 documents/models.py:714 documents/models.py:768
 msgid "document"
 msgstr ""
 
@@ -231,7 +231,7 @@ msgstr ""
 msgid "warning"
 msgstr ""
 
-#: documents/models.py:371 paperless_mail/models.py:305
+#: documents/models.py:371 paperless_mail/models.py:308
 msgid "error"
 msgstr ""
 
@@ -343,7 +343,7 @@ msgstr ""
 msgid "Document display fields"
 msgstr ""
 
-#: documents/models.py:456 documents/models.py:509
+#: documents/models.py:456 documents/models.py:513
 msgid "saved view"
 msgstr ""
 
@@ -503,426 +503,442 @@ msgstr ""
 msgid "is shared by me"
 msgstr ""
 
-#: documents/models.py:512
+#: documents/models.py:503
+msgid "has custom fields"
+msgstr ""
+
+#: documents/models.py:504
+msgid "has custom field in"
+msgstr ""
+
+#: documents/models.py:505
+msgid "does not have custom field in"
+msgstr ""
+
+#: documents/models.py:506
+msgid "does not have custom field"
+msgstr ""
+
+#: documents/models.py:516
 msgid "rule type"
 msgstr ""
 
-#: documents/models.py:514
+#: documents/models.py:518
 msgid "value"
 msgstr ""
 
-#: documents/models.py:517
+#: documents/models.py:521
 msgid "filter rule"
 msgstr ""
 
-#: documents/models.py:518
+#: documents/models.py:522
 msgid "filter rules"
 msgstr ""
 
-#: documents/models.py:629
+#: documents/models.py:633
 msgid "Task ID"
 msgstr ""
 
-#: documents/models.py:630
+#: documents/models.py:634
 msgid "Celery ID for the Task that was run"
 msgstr ""
 
-#: documents/models.py:635
+#: documents/models.py:639
 msgid "Acknowledged"
 msgstr ""
 
-#: documents/models.py:636
+#: documents/models.py:640
 msgid "If the task is acknowledged via the frontend or API"
 msgstr ""
 
-#: documents/models.py:642
+#: documents/models.py:646
 msgid "Task Filename"
 msgstr ""
 
-#: documents/models.py:643
+#: documents/models.py:647
 msgid "Name of the file which the Task was run for"
 msgstr ""
 
-#: documents/models.py:649
+#: documents/models.py:653
 msgid "Task Name"
 msgstr ""
 
-#: documents/models.py:650
+#: documents/models.py:654
 msgid "Name of the Task which was run"
 msgstr ""
 
-#: documents/models.py:657
+#: documents/models.py:661
 msgid "Task State"
 msgstr ""
 
-#: documents/models.py:658
+#: documents/models.py:662
 msgid "Current state of the task being run"
 msgstr ""
 
-#: documents/models.py:663
+#: documents/models.py:667
 msgid "Created DateTime"
 msgstr ""
 
-#: documents/models.py:664
+#: documents/models.py:668
 msgid "Datetime field when the task result was created in UTC"
 msgstr ""
 
-#: documents/models.py:669
+#: documents/models.py:673
 msgid "Started DateTime"
 msgstr ""
 
-#: documents/models.py:670
+#: documents/models.py:674
 msgid "Datetime field when the task was started in UTC"
 msgstr ""
 
-#: documents/models.py:675
+#: documents/models.py:679
 msgid "Completed DateTime"
 msgstr ""
 
-#: documents/models.py:676
+#: documents/models.py:680
 msgid "Datetime field when the task was completed in UTC"
 msgstr ""
 
-#: documents/models.py:681
+#: documents/models.py:685
 msgid "Result Data"
 msgstr ""
 
-#: documents/models.py:683
+#: documents/models.py:687
 msgid "The data returned by the task"
 msgstr ""
 
-#: documents/models.py:695
+#: documents/models.py:699
 msgid "Note for the document"
 msgstr ""
 
-#: documents/models.py:719
+#: documents/models.py:723
 msgid "user"
 msgstr ""
 
-#: documents/models.py:724
+#: documents/models.py:728
 msgid "note"
 msgstr ""
 
-#: documents/models.py:725
+#: documents/models.py:729
 msgid "notes"
 msgstr ""
 
-#: documents/models.py:733
+#: documents/models.py:737
 msgid "Archive"
 msgstr ""
 
-#: documents/models.py:734
+#: documents/models.py:738
 msgid "Original"
 msgstr ""
 
-#: documents/models.py:745
+#: documents/models.py:749
 msgid "expiration"
 msgstr ""
 
-#: documents/models.py:752
+#: documents/models.py:756
 msgid "slug"
 msgstr ""
 
-#: documents/models.py:784
+#: documents/models.py:788
 msgid "share link"
 msgstr ""
 
-#: documents/models.py:785
+#: documents/models.py:789
 msgid "share links"
 msgstr ""
 
-#: documents/models.py:797
+#: documents/models.py:801
 msgid "String"
 msgstr ""
 
-#: documents/models.py:798
+#: documents/models.py:802
 msgid "URL"
 msgstr ""
 
-#: documents/models.py:799
+#: documents/models.py:803
 msgid "Date"
 msgstr ""
 
-#: documents/models.py:800
+#: documents/models.py:804
 msgid "Boolean"
 msgstr ""
 
-#: documents/models.py:801
+#: documents/models.py:805
 msgid "Integer"
 msgstr ""
 
-#: documents/models.py:802
+#: documents/models.py:806
 msgid "Float"
 msgstr ""
 
-#: documents/models.py:803
+#: documents/models.py:807
 msgid "Monetary"
 msgstr ""
 
-#: documents/models.py:804
+#: documents/models.py:808
 msgid "Document Link"
 msgstr ""
 
-#: documents/models.py:816
+#: documents/models.py:820
 msgid "data type"
 msgstr ""
 
-#: documents/models.py:824
+#: documents/models.py:828
 msgid "custom field"
 msgstr ""
 
-#: documents/models.py:825
+#: documents/models.py:829
 msgid "custom fields"
 msgstr ""
 
-#: documents/models.py:887
+#: documents/models.py:891
 msgid "custom field instance"
 msgstr ""
 
-#: documents/models.py:888
+#: documents/models.py:892
 msgid "custom field instances"
 msgstr ""
 
-#: documents/models.py:950
+#: documents/models.py:954
 msgid "Consumption Started"
 msgstr ""
 
-#: documents/models.py:951
+#: documents/models.py:955
 msgid "Document Added"
 msgstr ""
 
-#: documents/models.py:952
+#: documents/models.py:956
 msgid "Document Updated"
 msgstr ""
 
-#: documents/models.py:955
+#: documents/models.py:959
 msgid "Consume Folder"
 msgstr ""
 
-#: documents/models.py:956
+#: documents/models.py:960
 msgid "Api Upload"
 msgstr ""
 
-#: documents/models.py:957
+#: documents/models.py:961
 msgid "Mail Fetch"
 msgstr ""
 
-#: documents/models.py:960
+#: documents/models.py:964
 msgid "Workflow Trigger Type"
 msgstr ""
 
-#: documents/models.py:972
+#: documents/models.py:976
 msgid "filter path"
 msgstr ""
 
-#: documents/models.py:977
+#: documents/models.py:981
 msgid ""
 "Only consume documents with a path that matches this if specified. Wildcards "
 "specified as * are allowed. Case insensitive."
 msgstr ""
 
-#: documents/models.py:984
+#: documents/models.py:988
 msgid "filter filename"
 msgstr ""
 
-#: documents/models.py:989 paperless_mail/models.py:148
+#: documents/models.py:993 paperless_mail/models.py:151
 msgid ""
 "Only consume documents which entirely match this filename if specified. "
 "Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
 msgstr ""
 
-#: documents/models.py:1000
+#: documents/models.py:1004
 msgid "filter documents from this mail rule"
 msgstr ""
 
-#: documents/models.py:1016
+#: documents/models.py:1020
 msgid "has these tag(s)"
 msgstr ""
 
-#: documents/models.py:1024
+#: documents/models.py:1028
 msgid "has this document type"
 msgstr ""
 
-#: documents/models.py:1032
+#: documents/models.py:1036
 msgid "has this correspondent"
 msgstr ""
 
-#: documents/models.py:1036
+#: documents/models.py:1040
 msgid "workflow trigger"
 msgstr ""
 
-#: documents/models.py:1037
+#: documents/models.py:1041
 msgid "workflow triggers"
 msgstr ""
 
-#: documents/models.py:1047
+#: documents/models.py:1051
 msgid "Assignment"
 msgstr ""
 
-#: documents/models.py:1051
+#: documents/models.py:1055
 msgid "Removal"
 msgstr ""
 
-#: documents/models.py:1055
+#: documents/models.py:1059
 msgid "Workflow Action Type"
 msgstr ""
 
-#: documents/models.py:1061
+#: documents/models.py:1065
 msgid "assign title"
 msgstr ""
 
-#: documents/models.py:1066
+#: documents/models.py:1070
 msgid ""
 "Assign a document title, can include some placeholders, see documentation."
 msgstr ""
 
-#: documents/models.py:1075 paperless_mail/models.py:216
+#: documents/models.py:1079 paperless_mail/models.py:219
 msgid "assign this tag"
 msgstr ""
 
-#: documents/models.py:1084 paperless_mail/models.py:224
+#: documents/models.py:1088 paperless_mail/models.py:227
 msgid "assign this document type"
 msgstr ""
 
-#: documents/models.py:1093 paperless_mail/models.py:238
+#: documents/models.py:1097 paperless_mail/models.py:241
 msgid "assign this correspondent"
 msgstr ""
 
-#: documents/models.py:1102
+#: documents/models.py:1106
 msgid "assign this storage path"
 msgstr ""
 
-#: documents/models.py:1111
+#: documents/models.py:1115
 msgid "assign this owner"
 msgstr ""
 
-#: documents/models.py:1118
+#: documents/models.py:1122
 msgid "grant view permissions to these users"
 msgstr ""
 
-#: documents/models.py:1125
+#: documents/models.py:1129
 msgid "grant view permissions to these groups"
 msgstr ""
 
-#: documents/models.py:1132
+#: documents/models.py:1136
 msgid "grant change permissions to these users"
 msgstr ""
 
-#: documents/models.py:1139
+#: documents/models.py:1143
 msgid "grant change permissions to these groups"
 msgstr ""
 
-#: documents/models.py:1146
+#: documents/models.py:1150
 msgid "assign these custom fields"
 msgstr ""
 
-#: documents/models.py:1153
+#: documents/models.py:1157
 msgid "remove these tag(s)"
 msgstr ""
 
-#: documents/models.py:1158
+#: documents/models.py:1162
 msgid "remove all tags"
 msgstr ""
 
-#: documents/models.py:1165
+#: documents/models.py:1169
 msgid "remove these document type(s)"
 msgstr ""
 
-#: documents/models.py:1170
+#: documents/models.py:1174
 msgid "remove all document types"
 msgstr ""
 
-#: documents/models.py:1177
+#: documents/models.py:1181
 msgid "remove these correspondent(s)"
 msgstr ""
 
-#: documents/models.py:1182
+#: documents/models.py:1186
 msgid "remove all correspondents"
 msgstr ""
 
-#: documents/models.py:1189
+#: documents/models.py:1193
 msgid "remove these storage path(s)"
 msgstr ""
 
-#: documents/models.py:1194
+#: documents/models.py:1198
 msgid "remove all storage paths"
 msgstr ""
 
-#: documents/models.py:1201
+#: documents/models.py:1205
 msgid "remove these owner(s)"
 msgstr ""
 
-#: documents/models.py:1206
+#: documents/models.py:1210
 msgid "remove all owners"
 msgstr ""
 
-#: documents/models.py:1213
+#: documents/models.py:1217
 msgid "remove view permissions for these users"
 msgstr ""
 
-#: documents/models.py:1220
+#: documents/models.py:1224
 msgid "remove view permissions for these groups"
 msgstr ""
 
-#: documents/models.py:1227
+#: documents/models.py:1231
 msgid "remove change permissions for these users"
 msgstr ""
 
-#: documents/models.py:1234
+#: documents/models.py:1238
 msgid "remove change permissions for these groups"
 msgstr ""
 
-#: documents/models.py:1239
+#: documents/models.py:1243
 msgid "remove all permissions"
 msgstr ""
 
-#: documents/models.py:1246
+#: documents/models.py:1250
 msgid "remove these custom fields"
 msgstr ""
 
-#: documents/models.py:1251
+#: documents/models.py:1255
 msgid "remove all custom fields"
 msgstr ""
 
-#: documents/models.py:1255
+#: documents/models.py:1259
 msgid "workflow action"
 msgstr ""
 
-#: documents/models.py:1256
+#: documents/models.py:1260
 msgid "workflow actions"
 msgstr ""
 
-#: documents/models.py:1265 paperless_mail/models.py:95
+#: documents/models.py:1269 paperless_mail/models.py:98
 msgid "order"
 msgstr ""
 
-#: documents/models.py:1271
+#: documents/models.py:1275
 msgid "triggers"
 msgstr ""
 
-#: documents/models.py:1278
+#: documents/models.py:1282
 msgid "actions"
 msgstr ""
 
-#: documents/models.py:1281
+#: documents/models.py:1285
 msgid "enabled"
 msgstr ""
 
-#: documents/serialisers.py:115
+#: documents/serialisers.py:119
 #, python-format
 msgid "Invalid regular expression: %(error)s"
 msgstr ""
 
-#: documents/serialisers.py:418
+#: documents/serialisers.py:422
 msgid "Invalid color."
 msgstr ""
 
-#: documents/serialisers.py:1197
+#: documents/serialisers.py:1234
 #, python-format
 msgid "File type %(type)s not supported"
 msgstr ""
 
-#: documents/serialisers.py:1306
+#: documents/serialisers.py:1343
 msgid "Invalid variable detected."
 msgstr ""
 
@@ -1085,11 +1101,11 @@ msgstr ""
 msgid "Here's a link to the docs."
 msgstr ""
 
-#: documents/templates/paperless-ngx/base.html:41
+#: documents/templates/paperless-ngx/base.html:55
 msgid "Share link was not found."
 msgstr ""
 
-#: documents/templates/paperless-ngx/base.html:45
+#: documents/templates/paperless-ngx/base.html:59
 msgid "Share link has expired."
 msgstr ""
 
@@ -1290,131 +1306,131 @@ msgstr ""
 msgid "paperless application settings"
 msgstr ""
 
-#: paperless/settings.py:662
+#: paperless/settings.py:660
 msgid "English (US)"
 msgstr ""
 
-#: paperless/settings.py:663
+#: paperless/settings.py:661
 msgid "Arabic"
 msgstr ""
 
-#: paperless/settings.py:664
+#: paperless/settings.py:662
 msgid "Afrikaans"
 msgstr ""
 
-#: paperless/settings.py:665
+#: paperless/settings.py:663
 msgid "Belarusian"
 msgstr ""
 
-#: paperless/settings.py:666
+#: paperless/settings.py:664
 msgid "Bulgarian"
 msgstr ""
 
-#: paperless/settings.py:667
+#: paperless/settings.py:665
 msgid "Catalan"
 msgstr ""
 
-#: paperless/settings.py:668
+#: paperless/settings.py:666
 msgid "Czech"
 msgstr ""
 
-#: paperless/settings.py:669
+#: paperless/settings.py:667
 msgid "Danish"
 msgstr ""
 
-#: paperless/settings.py:670
+#: paperless/settings.py:668
 msgid "German"
 msgstr ""
 
-#: paperless/settings.py:671
+#: paperless/settings.py:669
 msgid "Greek"
 msgstr ""
 
-#: paperless/settings.py:672
+#: paperless/settings.py:670
 msgid "English (GB)"
 msgstr ""
 
-#: paperless/settings.py:673
+#: paperless/settings.py:671
 msgid "Spanish"
 msgstr ""
 
-#: paperless/settings.py:674
+#: paperless/settings.py:672
 msgid "Finnish"
 msgstr ""
 
-#: paperless/settings.py:675
+#: paperless/settings.py:673
 msgid "French"
 msgstr ""
 
-#: paperless/settings.py:676
+#: paperless/settings.py:674
 msgid "Hungarian"
 msgstr ""
 
-#: paperless/settings.py:677
+#: paperless/settings.py:675
 msgid "Italian"
 msgstr ""
 
-#: paperless/settings.py:678
+#: paperless/settings.py:676
 msgid "Japanese"
 msgstr ""
 
-#: paperless/settings.py:679
+#: paperless/settings.py:677
 msgid "Luxembourgish"
 msgstr ""
 
-#: paperless/settings.py:680
+#: paperless/settings.py:678
 msgid "Norwegian"
 msgstr ""
 
-#: paperless/settings.py:681
+#: paperless/settings.py:679
 msgid "Dutch"
 msgstr ""
 
-#: paperless/settings.py:682
+#: paperless/settings.py:680
 msgid "Polish"
 msgstr ""
 
-#: paperless/settings.py:683
+#: paperless/settings.py:681
 msgid "Portuguese (Brazil)"
 msgstr ""
 
-#: paperless/settings.py:684
+#: paperless/settings.py:682
 msgid "Portuguese"
 msgstr ""
 
-#: paperless/settings.py:685
+#: paperless/settings.py:683
 msgid "Romanian"
 msgstr ""
 
-#: paperless/settings.py:686
+#: paperless/settings.py:684
 msgid "Russian"
 msgstr ""
 
-#: paperless/settings.py:687
+#: paperless/settings.py:685
 msgid "Slovak"
 msgstr ""
 
-#: paperless/settings.py:688
+#: paperless/settings.py:686
 msgid "Slovenian"
 msgstr ""
 
-#: paperless/settings.py:689
+#: paperless/settings.py:687
 msgid "Serbian"
 msgstr ""
 
-#: paperless/settings.py:690
+#: paperless/settings.py:688
 msgid "Swedish"
 msgstr ""
 
-#: paperless/settings.py:691
+#: paperless/settings.py:689
 msgid "Turkish"
 msgstr ""
 
-#: paperless/settings.py:692
+#: paperless/settings.py:690
 msgid "Ukrainian"
 msgstr ""
 
-#: paperless/settings.py:693
+#: paperless/settings.py:691
 msgid "Chinese Simplified"
 msgstr ""
 
@@ -1532,7 +1548,7 @@ msgstr ""
 msgid "mail rules"
 msgstr ""
 
-#: paperless_mail/models.py:64 paperless_mail/models.py:72
+#: paperless_mail/models.py:64 paperless_mail/models.py:75
 msgid "Only process attachments."
 msgstr ""
 
@@ -1540,172 +1556,172 @@ msgstr ""
 msgid "Process full Mail (with embedded attachments in file) as .eml"
 msgstr ""
 
-#: paperless_mail/models.py:67
+#: paperless_mail/models.py:69
 msgid ""
 "Process full Mail (with embedded attachments in file) as .eml + process "
 "attachments as separate documents"
 msgstr ""
 
-#: paperless_mail/models.py:73
+#: paperless_mail/models.py:76
 msgid "Process all files, including 'inline' attachments."
 msgstr ""
 
-#: paperless_mail/models.py:76
+#: paperless_mail/models.py:79
 msgid "Delete"
 msgstr ""
 
-#: paperless_mail/models.py:77
+#: paperless_mail/models.py:80
 msgid "Move to specified folder"
 msgstr ""
 
-#: paperless_mail/models.py:78
+#: paperless_mail/models.py:81
 msgid "Mark as read, don't process read mails"
 msgstr ""
 
-#: paperless_mail/models.py:79
+#: paperless_mail/models.py:82
 msgid "Flag the mail, don't process flagged mails"
 msgstr ""
 
-#: paperless_mail/models.py:80
+#: paperless_mail/models.py:83
 msgid "Tag the mail with specified tag, don't process tagged mails"
 msgstr ""
 
-#: paperless_mail/models.py:83
+#: paperless_mail/models.py:86
 msgid "Use subject as title"
 msgstr ""
 
-#: paperless_mail/models.py:84
+#: paperless_mail/models.py:87
 msgid "Use attachment filename as title"
 msgstr ""
 
-#: paperless_mail/models.py:85
+#: paperless_mail/models.py:88
 msgid "Do not assign title from rule"
 msgstr ""
 
-#: paperless_mail/models.py:88
+#: paperless_mail/models.py:91
 msgid "Do not assign a correspondent"
 msgstr ""
 
-#: paperless_mail/models.py:89
+#: paperless_mail/models.py:92
 msgid "Use mail address"
 msgstr ""
 
-#: paperless_mail/models.py:90
+#: paperless_mail/models.py:93
 msgid "Use name (or mail address if not available)"
 msgstr ""
 
-#: paperless_mail/models.py:91
+#: paperless_mail/models.py:94
 msgid "Use correspondent selected below"
 msgstr ""
 
-#: paperless_mail/models.py:101
+#: paperless_mail/models.py:104
 msgid "account"
 msgstr ""
 
-#: paperless_mail/models.py:105 paperless_mail/models.py:260
+#: paperless_mail/models.py:108 paperless_mail/models.py:263
 msgid "folder"
 msgstr ""
 
-#: paperless_mail/models.py:109
+#: paperless_mail/models.py:112
 msgid ""
 "Subfolders must be separated by a delimiter, often a dot ('.') or slash "
 "('/'), but it varies by mail server."
 msgstr ""
 
-#: paperless_mail/models.py:115
+#: paperless_mail/models.py:118
 msgid "filter from"
 msgstr ""
 
-#: paperless_mail/models.py:122
+#: paperless_mail/models.py:125
 msgid "filter to"
 msgstr ""
 
-#: paperless_mail/models.py:129
+#: paperless_mail/models.py:132
 msgid "filter subject"
 msgstr ""
 
-#: paperless_mail/models.py:136
+#: paperless_mail/models.py:139
 msgid "filter body"
 msgstr ""
 
-#: paperless_mail/models.py:143
+#: paperless_mail/models.py:146
 msgid "filter attachment filename inclusive"
 msgstr ""
 
-#: paperless_mail/models.py:155
+#: paperless_mail/models.py:158
 msgid "filter attachment filename exclusive"
 msgstr ""
 
-#: paperless_mail/models.py:160
+#: paperless_mail/models.py:163
 msgid ""
 "Do not consume documents which entirely match this filename if specified. "
 "Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
 msgstr ""
 
-#: paperless_mail/models.py:167
+#: paperless_mail/models.py:170
 msgid "maximum age"
 msgstr ""
 
-#: paperless_mail/models.py:169
+#: paperless_mail/models.py:172
 msgid "Specified in days."
 msgstr ""
 
-#: paperless_mail/models.py:173
+#: paperless_mail/models.py:176
 msgid "attachment type"
 msgstr ""
 
-#: paperless_mail/models.py:177
+#: paperless_mail/models.py:180
 msgid ""
 "Inline attachments include embedded images, so it's best to combine this "
 "option with a filename filter."
 msgstr ""
 
-#: paperless_mail/models.py:183
+#: paperless_mail/models.py:186
 msgid "consumption scope"
 msgstr ""
 
-#: paperless_mail/models.py:189
+#: paperless_mail/models.py:192
 msgid "action"
 msgstr ""
 
-#: paperless_mail/models.py:195
+#: paperless_mail/models.py:198
 msgid "action parameter"
 msgstr ""
 
-#: paperless_mail/models.py:200
+#: paperless_mail/models.py:203
 msgid ""
 "Additional parameter for the action selected above, i.e., the target folder "
 "of the move to folder action. Subfolders must be separated by dots."
 msgstr ""
 
-#: paperless_mail/models.py:208
+#: paperless_mail/models.py:211
 msgid "assign title from"
 msgstr ""
 
-#: paperless_mail/models.py:228
+#: paperless_mail/models.py:231
 msgid "assign correspondent from"
 msgstr ""
 
-#: paperless_mail/models.py:242
+#: paperless_mail/models.py:245
 msgid "Assign the rule owner to documents"
 msgstr ""
 
-#: paperless_mail/models.py:268
+#: paperless_mail/models.py:271
 msgid "uid"
 msgstr ""
 
-#: paperless_mail/models.py:276
+#: paperless_mail/models.py:279
 msgid "subject"
 msgstr ""
 
-#: paperless_mail/models.py:284
+#: paperless_mail/models.py:287
 msgid "received"
 msgstr ""
 
-#: paperless_mail/models.py:291
+#: paperless_mail/models.py:294
 msgid "processed"
 msgstr ""
 
-#: paperless_mail/models.py:297
+#: paperless_mail/models.py:300
 msgid "status"
 msgstr ""