def gallery_details(request: HttpRequest, pk: int, tool: str=None) -> HttpResponse:
try:
gallery = Gallery.objects.get(pk=pk)
except Gallery.DoesNotExist:
raise Http404("Gallery does not exist")
if not (gallery.public or request.user.is_authenticated):
raise Http404("Gallery does not exist")
if request.user.is_staff and tool == "download":
if 'downloader' in request.GET:
current_settings = Settings(load_from_config=crawler_settings.config)
current_settings.allow_downloaders_only([request.GET['downloader']], True, True, True)
current_settings.workers.web_queue.enqueue_args_list((gallery.get_link(),), override_options=current_settings)
else:
# Since this is used from the gallery page mainly to download an already added gallery using
# downloader settings, force replace_metadata
current_settings = Settings(load_from_config=crawler_settings.config)
current_settings.replace_metadata = True
current_settings.workers.web_queue.enqueue_args_list((gallery.get_link(),), override_options=current_settings)
return HttpResponseRedirect(request.META["HTTP_REFERER"])
if request.user.is_staff and tool == "toggle-hidden":
gallery.hidden = not gallery.hidden
gallery.save()
return HttpResponseRedirect(request.META["HTTP_REFERER"])
if request.user.is_staff and tool == "toggle-public":
gallery.public_toggle()
return HttpResponseRedirect(request.META["HTTP_REFERER"])
if request.user.is_staff and tool == "mark-deleted":
gallery.mark_as_deleted()
return HttpResponseRedirect(request.META["HTTP_REFERER"])
if request.user.is_staff and tool == "recall-api":
current_settings = Settings(load_from_config=crawler_settings.config)
current_settings.set_update_metadata_options(providers=(gallery.provider,))
current_settings.workers.web_queue.enqueue_args_list((gallery.get_link(),), override_options=current_settings)
frontend_logger.info(
'Updating gallery API data for gallery: {} and related archives'.format(
gallery.get_absolute_url()
)
)
return HttpResponseRedirect(request.META["HTTP_REFERER"])
tag_lists = sort_tags(gallery.tags.all())
d = {'gallery': gallery, 'tag_lists': tag_lists, 'settings': crawler_settings}
return render(request, "viewer/gallery.html", d)
评论列表
文章目录