mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-13 21:49:26 +02:00
Merge siteroot application
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from .assets import *
|
||||
from .auth import *
|
||||
from .bookmarks import *
|
||||
from .settings import *
|
||||
from .toasts import *
|
||||
|
37
bookmarks/views/auth.py
Normal file
37
bookmarks/views/auth.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import views as auth_views
|
||||
|
||||
|
||||
class LinkdingLoginView(auth_views.LoginView):
|
||||
"""
|
||||
Custom login view to lazily add additional context data
|
||||
Allows to override settings in tests
|
||||
"""
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
context["allow_registration"] = settings.ALLOW_REGISTRATION
|
||||
context["enable_oidc"] = settings.LD_ENABLE_OIDC
|
||||
return context
|
||||
|
||||
def form_invalid(self, form):
|
||||
"""
|
||||
Return 401 status code on failed login. Should allow integrating with
|
||||
tools like Fail2Ban. Also, Hotwired Turbo requires a non 2xx status
|
||||
code to handle failed form submissions.
|
||||
"""
|
||||
response = super().form_invalid(form)
|
||||
response.status_code = 401
|
||||
return response
|
||||
|
||||
|
||||
class LinkdingPasswordChangeView(auth_views.PasswordChangeView):
|
||||
def form_invalid(self, form):
|
||||
"""
|
||||
Hotwired Turbo requires a non 2xx status code to handle failed form
|
||||
submissions.
|
||||
"""
|
||||
response = super().form_invalid(form)
|
||||
response.status_code = 422
|
||||
return response
|
@@ -105,7 +105,7 @@ def shared(request):
|
||||
"tag_cloud": tag_cloud,
|
||||
"details": bookmark_details,
|
||||
"users": users,
|
||||
"rss_feed_url": reverse("bookmarks:feeds.public_shared"),
|
||||
"rss_feed_url": reverse("linkding:feeds.public_shared"),
|
||||
},
|
||||
)
|
||||
|
||||
@@ -167,9 +167,9 @@ def new(request):
|
||||
tag_string = convert_tag_string(form.data["tag_string"])
|
||||
create_bookmark(form.save(commit=False), tag_string, current_user)
|
||||
if auto_close:
|
||||
return HttpResponseRedirect(reverse("bookmarks:close"))
|
||||
return HttpResponseRedirect(reverse("linkding:bookmarks.close"))
|
||||
else:
|
||||
return HttpResponseRedirect(reverse("bookmarks:index"))
|
||||
return HttpResponseRedirect(reverse("linkding:bookmarks.index"))
|
||||
else:
|
||||
form = BookmarkForm()
|
||||
if initial_url:
|
||||
@@ -189,7 +189,7 @@ def new(request):
|
||||
context = {
|
||||
"form": form,
|
||||
"auto_close": initial_auto_close,
|
||||
"return_url": reverse("bookmarks:index"),
|
||||
"return_url": reverse("linkding:bookmarks.index"),
|
||||
}
|
||||
|
||||
return render(request, "bookmarks/new.html", context, status=status)
|
||||
@@ -202,7 +202,7 @@ def edit(request, bookmark_id: int):
|
||||
except Bookmark.DoesNotExist:
|
||||
raise Http404("Bookmark does not exist")
|
||||
return_url = get_safe_return_url(
|
||||
request.GET.get("return_url"), reverse("bookmarks:index")
|
||||
request.GET.get("return_url"), reverse("linkding:bookmarks.index")
|
||||
)
|
||||
|
||||
if request.method == "POST":
|
||||
@@ -327,7 +327,7 @@ def index_action(request):
|
||||
if turbo.accept(request):
|
||||
return partials.active_bookmark_update(request)
|
||||
|
||||
return utils.redirect_with_query(request, reverse("bookmarks:index"))
|
||||
return utils.redirect_with_query(request, reverse("linkding:bookmarks.index"))
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -342,7 +342,7 @@ def archived_action(request):
|
||||
if turbo.accept(request):
|
||||
return partials.archived_bookmark_update(request)
|
||||
|
||||
return utils.redirect_with_query(request, reverse("bookmarks:archived"))
|
||||
return utils.redirect_with_query(request, reverse("linkding:bookmarks.archived"))
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -357,7 +357,7 @@ def shared_action(request):
|
||||
if turbo.accept(request):
|
||||
return partials.shared_bookmark_update(request)
|
||||
|
||||
return utils.redirect_with_query(request, reverse("bookmarks:shared"))
|
||||
return utils.redirect_with_query(request, reverse("linkding:bookmarks.shared"))
|
||||
|
||||
|
||||
def handle_action(request, query: QuerySet[Bookmark] = None):
|
||||
|
@@ -25,8 +25,8 @@ CJK_RE = re.compile(r"[\u4e00-\u9fff]+")
|
||||
|
||||
|
||||
class RequestContext:
|
||||
index_view = "bookmarks:index"
|
||||
action_view = "bookmarks:index.action"
|
||||
index_view = "linkding:bookmarks.index"
|
||||
action_view = "linkding:bookmarks.index.action"
|
||||
|
||||
def __init__(self, request: WSGIRequest):
|
||||
self.request = request
|
||||
@@ -62,8 +62,8 @@ class RequestContext:
|
||||
|
||||
|
||||
class ActiveBookmarksContext(RequestContext):
|
||||
index_view = "bookmarks:index"
|
||||
action_view = "bookmarks:index.action"
|
||||
index_view = "linkding:bookmarks.index"
|
||||
action_view = "linkding:bookmarks.index.action"
|
||||
|
||||
def get_bookmark_query_set(self, search: BookmarkSearch):
|
||||
return queries.query_bookmarks(
|
||||
@@ -77,8 +77,8 @@ class ActiveBookmarksContext(RequestContext):
|
||||
|
||||
|
||||
class ArchivedBookmarksContext(RequestContext):
|
||||
index_view = "bookmarks:archived"
|
||||
action_view = "bookmarks:archived.action"
|
||||
index_view = "linkding:bookmarks.archived"
|
||||
action_view = "linkding:bookmarks.archived.action"
|
||||
|
||||
def get_bookmark_query_set(self, search: BookmarkSearch):
|
||||
return queries.query_archived_bookmarks(
|
||||
@@ -92,8 +92,8 @@ class ArchivedBookmarksContext(RequestContext):
|
||||
|
||||
|
||||
class SharedBookmarksContext(RequestContext):
|
||||
index_view = "bookmarks:shared"
|
||||
action_view = "bookmarks:shared.action"
|
||||
index_view = "linkding:bookmarks.shared"
|
||||
action_view = "linkding:bookmarks.shared.action"
|
||||
|
||||
def get_bookmark_query_set(self, search: BookmarkSearch):
|
||||
user = User.objects.filter(username=search.user).first()
|
||||
|
@@ -10,9 +10,9 @@ def root(request):
|
||||
settings = request.global_settings
|
||||
|
||||
if settings.landing_page == GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS:
|
||||
return HttpResponseRedirect(reverse("bookmarks:shared"))
|
||||
return HttpResponseRedirect(reverse("linkding:bookmarks.shared"))
|
||||
else:
|
||||
return HttpResponseRedirect(reverse("login"))
|
||||
|
||||
# Redirect authenticated users to the bookmarks page
|
||||
return HttpResponseRedirect(reverse("bookmarks:index"))
|
||||
return HttpResponseRedirect(reverse("linkding:bookmarks.index"))
|
||||
|
@@ -94,7 +94,7 @@ def update(request):
|
||||
request, "No missing snapshots found.", "settings_success_message"
|
||||
)
|
||||
|
||||
return HttpResponseRedirect(reverse("bookmarks:settings.general"))
|
||||
return HttpResponseRedirect(reverse("linkding:settings.general"))
|
||||
|
||||
|
||||
def update_profile(request):
|
||||
@@ -113,7 +113,7 @@ def update_profile(request):
|
||||
if profile.enable_preview_images and not previews_were_enabled:
|
||||
tasks.schedule_bookmarks_without_previews(request.user)
|
||||
|
||||
return HttpResponseRedirect(reverse("bookmarks:settings.general"))
|
||||
return HttpResponseRedirect(reverse("linkding:settings.general"))
|
||||
|
||||
messages.error(
|
||||
request,
|
||||
@@ -165,20 +165,20 @@ def get_ttl_hash(seconds=3600):
|
||||
|
||||
@login_required
|
||||
def integrations(request):
|
||||
application_url = request.build_absolute_uri(reverse("bookmarks:new"))
|
||||
application_url = request.build_absolute_uri(reverse("linkding:bookmarks.new"))
|
||||
api_token = Token.objects.get_or_create(user=request.user)[0]
|
||||
feed_token = FeedToken.objects.get_or_create(user=request.user)[0]
|
||||
all_feed_url = request.build_absolute_uri(
|
||||
reverse("bookmarks:feeds.all", args=[feed_token.key])
|
||||
reverse("linkding:feeds.all", args=[feed_token.key])
|
||||
)
|
||||
unread_feed_url = request.build_absolute_uri(
|
||||
reverse("bookmarks:feeds.unread", args=[feed_token.key])
|
||||
reverse("linkding:feeds.unread", args=[feed_token.key])
|
||||
)
|
||||
shared_feed_url = request.build_absolute_uri(
|
||||
reverse("bookmarks:feeds.shared", args=[feed_token.key])
|
||||
reverse("linkding:feeds.shared", args=[feed_token.key])
|
||||
)
|
||||
public_shared_feed_url = request.build_absolute_uri(
|
||||
reverse("bookmarks:feeds.public_shared")
|
||||
reverse("linkding:feeds.public_shared")
|
||||
)
|
||||
return render(
|
||||
request,
|
||||
@@ -205,7 +205,7 @@ def bookmark_import(request):
|
||||
messages.error(
|
||||
request, "Please select a file to import.", "settings_error_message"
|
||||
)
|
||||
return HttpResponseRedirect(reverse("bookmarks:settings.general"))
|
||||
return HttpResponseRedirect(reverse("linkding:settings.general"))
|
||||
|
||||
try:
|
||||
content = import_file.read().decode()
|
||||
@@ -226,7 +226,7 @@ def bookmark_import(request):
|
||||
"settings_error_message",
|
||||
)
|
||||
|
||||
return HttpResponseRedirect(reverse("bookmarks:settings.general"))
|
||||
return HttpResponseRedirect(reverse("linkding:settings.general"))
|
||||
|
||||
|
||||
@login_required
|
||||
|
@@ -17,6 +17,6 @@ def acknowledge(request):
|
||||
toast.save()
|
||||
|
||||
return_url = get_safe_return_url(
|
||||
request.GET.get("return_url"), reverse("bookmarks:index")
|
||||
request.GET.get("return_url"), reverse("linkding:bookmarks.index")
|
||||
)
|
||||
return HttpResponseRedirect(return_url)
|
||||
|
Reference in New Issue
Block a user