mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-06-25 06:44:19 +00:00
69ef26dab0
* Added devcontainer * Add feature storage pathes * Exclude tests and add versioning * Check escaping * Check escaping * Check quoting * Echo * Escape * Escape : * Double escape \ * Escaping * Remove if * Escape colon * Missing \ * Esacpe : * Escape all * test * Remove sed * Fix exclude * Remove SED command * Add LD_LIBRARY_PATH * Adjusted to v1.7 * Updated test-cases * Remove devcontainer * Removed internal build-file * Run pre-commit * Corrected flak8 error * Adjusted to v1.7 * Updated test-cases * Corrected flak8 error * Adjusted to new plural translations * Small adjustments due to code-review backend * Adjusted line-break * Removed PAPERLESS prefix from settings variables * Corrected style change due to search+replace * First documentation draft * Revert changes to Pipfile * Add sphinx-autobuild with keep-outdated * Revert merge error that results in wrong storage path is evaluated * Adjust styles of generated files ... * Adds additional testing to cover dynamic storage path functionality * Remove unnecessary condition * Add hint to edit storage path dialog * Correct spelling of pathes to paths * Minor documentation tweaks * Minor typo * improving wrapping of filter editor buttons with new storage path button * Update .gitignore * Fix select border radius in non input-groups * Better storage path edit hint * Add note to edit storage path dialog re document_renamer * Add note to bulk edit storage path re document_renamer * Rename FILTER_STORAGE_DIRECTORY to PATH * Fix broken filter rule parsing * Show default storage if unspecified * Remove note re storage path on bulk edit * Add basic validation of filename variables Co-authored-by: Markus Kling <markus@markus-kling.net> Co-authored-by: Trenton Holmes <holmes.trenton@gmail.com> Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com> Co-authored-by: Quinn Casey <quinn@quinncasey.com>
154 lines
5.3 KiB
Python
154 lines
5.3 KiB
Python
from django.conf import settings
|
|
from django.conf.urls import include
|
|
from django.contrib import admin
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.urls import path
|
|
from django.urls import re_path
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from django.views.generic import RedirectView
|
|
from documents.views import BulkDownloadView
|
|
from documents.views import BulkEditView
|
|
from documents.views import CorrespondentViewSet
|
|
from documents.views import DocumentTypeViewSet
|
|
from documents.views import IndexView
|
|
from documents.views import LogViewSet
|
|
from documents.views import PostDocumentView
|
|
from documents.views import RemoteVersionView
|
|
from documents.views import SavedViewViewSet
|
|
from documents.views import SearchAutoCompleteView
|
|
from documents.views import SelectionDataView
|
|
from documents.views import StatisticsView
|
|
from documents.views import StoragePathViewSet
|
|
from documents.views import TagViewSet
|
|
from documents.views import UiSettingsView
|
|
from documents.views import UnifiedSearchViewSet
|
|
from paperless.consumers import StatusConsumer
|
|
from paperless.views import FaviconView
|
|
from rest_framework.authtoken import views
|
|
from rest_framework.routers import DefaultRouter
|
|
|
|
api_router = DefaultRouter()
|
|
api_router.register(r"correspondents", CorrespondentViewSet)
|
|
api_router.register(r"document_types", DocumentTypeViewSet)
|
|
api_router.register(r"documents", UnifiedSearchViewSet)
|
|
api_router.register(r"logs", LogViewSet, basename="logs")
|
|
api_router.register(r"tags", TagViewSet)
|
|
api_router.register(r"saved_views", SavedViewViewSet)
|
|
api_router.register(r"storage_paths", StoragePathViewSet)
|
|
|
|
|
|
urlpatterns = [
|
|
re_path(
|
|
r"^api/",
|
|
include(
|
|
[
|
|
re_path(
|
|
r"^auth/",
|
|
include(
|
|
("rest_framework.urls", "rest_framework"),
|
|
namespace="rest_framework",
|
|
),
|
|
),
|
|
re_path(
|
|
r"^search/autocomplete/",
|
|
SearchAutoCompleteView.as_view(),
|
|
name="autocomplete",
|
|
),
|
|
re_path(r"^statistics/", StatisticsView.as_view(), name="statistics"),
|
|
re_path(
|
|
r"^documents/post_document/",
|
|
PostDocumentView.as_view(),
|
|
name="post_document",
|
|
),
|
|
re_path(
|
|
r"^documents/bulk_edit/",
|
|
BulkEditView.as_view(),
|
|
name="bulk_edit",
|
|
),
|
|
re_path(
|
|
r"^documents/selection_data/",
|
|
SelectionDataView.as_view(),
|
|
name="selection_data",
|
|
),
|
|
re_path(
|
|
r"^documents/bulk_download/",
|
|
BulkDownloadView.as_view(),
|
|
name="bulk_download",
|
|
),
|
|
re_path(
|
|
r"^remote_version/",
|
|
RemoteVersionView.as_view(),
|
|
name="remoteversion",
|
|
),
|
|
re_path(
|
|
r"^ui_settings/",
|
|
UiSettingsView.as_view(),
|
|
name="ui_settings",
|
|
),
|
|
path("token/", views.obtain_auth_token),
|
|
]
|
|
+ api_router.urls,
|
|
),
|
|
),
|
|
re_path(r"^favicon.ico$", FaviconView.as_view(), name="favicon"),
|
|
re_path(r"admin/", admin.site.urls),
|
|
re_path(
|
|
r"^fetch/",
|
|
include(
|
|
[
|
|
re_path(
|
|
r"^doc/(?P<pk>\d+)$",
|
|
RedirectView.as_view(
|
|
url=settings.BASE_URL + "api/documents/%(pk)s/download/",
|
|
),
|
|
),
|
|
re_path(
|
|
r"^thumb/(?P<pk>\d+)$",
|
|
RedirectView.as_view(
|
|
url=settings.BASE_URL + "api/documents/%(pk)s/thumb/",
|
|
),
|
|
),
|
|
re_path(
|
|
r"^preview/(?P<pk>\d+)$",
|
|
RedirectView.as_view(
|
|
url=settings.BASE_URL + "api/documents/%(pk)s/preview/",
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
re_path(
|
|
r"^push$",
|
|
csrf_exempt(
|
|
RedirectView.as_view(
|
|
url=settings.BASE_URL + "api/documents/post_document/",
|
|
),
|
|
),
|
|
),
|
|
# Frontend assets TODO: this is pretty bad, but it works.
|
|
path(
|
|
"assets/<path:path>",
|
|
RedirectView.as_view(
|
|
url=settings.STATIC_URL + "frontend/en-US/assets/%(path)s",
|
|
),
|
|
),
|
|
# TODO: with localization, this is even worse! :/
|
|
# login, logout
|
|
path("accounts/", include("django.contrib.auth.urls")),
|
|
# Root of the Frontent
|
|
re_path(r".*", login_required(IndexView.as_view()), name="base"),
|
|
]
|
|
|
|
|
|
websocket_urlpatterns = [
|
|
re_path(r"ws/status/$", StatusConsumer.as_asgi()),
|
|
]
|
|
|
|
# Text in each page's <h1> (and above login form).
|
|
admin.site.site_header = "Paperless-ngx"
|
|
# Text at the end of each page's <title>.
|
|
admin.site.site_title = "Paperless-ngx"
|
|
# Text at the top of the admin index page.
|
|
admin.site.index_title = _("Paperless-ngx administration")
|