handle HEAD when needed

This commit is contained in:
mein Name 2025-02-28 20:57:56 -05:00 committed by Henri Dickson
parent 3ff6e65c03
commit 928914fd1f
4 changed files with 12 additions and 5 deletions

View file

@ -3,7 +3,7 @@ name: Mirror to Codeberg
on: [push, delete] on: [push, delete]
jobs: jobs:
to_gitlab: to_codeberg:
if: github.repository_owner == 'neodb-social' if: github.repository_owner == 'neodb-social'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View file

@ -1,7 +1,7 @@
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.cache import cache from django.core.cache import cache
from django.db.models import Count from django.db.models import Count
from django.http import Http404, JsonResponse from django.http import Http404, HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
@ -44,7 +44,7 @@ def retrieve_redirect(request, item_path, item_uuid):
return redirect(f"/{item_path}/{item_uuid}", permanent=True) return redirect(f"/{item_path}/{item_uuid}", permanent=True)
@require_http_methods(["GET"]) @require_http_methods(["GET", "HEAD"])
@xframe_options_exempt @xframe_options_exempt
def embed(request, item_path, item_uuid): def embed(request, item_path, item_uuid):
item = Item.get_by_url(item_uuid) item = Item.get_by_url(item_uuid)
@ -59,6 +59,8 @@ def embed(request, item_path, item_uuid):
focus_item = get_object_or_404( focus_item = get_object_or_404(
Item, uid=get_uuid_or_404(request.GET.get("focus")) Item, uid=get_uuid_or_404(request.GET.get("focus"))
) )
if request.method == "HEAD":
return HttpResponse()
return render( return render(
request, request,
"embed_" + item.class_name + ".html", "embed_" + item.class_name + ".html",
@ -81,6 +83,8 @@ def retrieve(request, item_path, item_uuid):
return redirect(item.merged_to_item.url) return redirect(item.merged_to_item.url)
if not skipcheck and item.is_deleted: if not skipcheck and item.is_deleted:
raise Http404(_("Item no longer exists")) raise Http404(_("Item no longer exists"))
if request.method == "HEAD":
return HttpResponse()
if request.headers.get("Accept", "").endswith("json"): if request.headers.get("Accept", "").endswith("json"):
return JsonResponse(item.ap_object) return JsonResponse(item.ap_object)
focus_item = None focus_item = None

View file

@ -2,6 +2,7 @@ import datetime
from urllib.parse import quote_plus from urllib.parse import quote_plus
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
from django.shortcuts import render from django.shortcuts import render
from django.views.decorators.http import require_http_methods from django.views.decorators.http import require_http_methods
@ -17,9 +18,11 @@ from ..forms import *
from ..models import * from ..models import *
@require_http_methods(["GET"]) @require_http_methods(["GET", "HEAD"])
@profile_identity_required @profile_identity_required
def profile(request: AuthedHttpRequest, user_name): def profile(request: AuthedHttpRequest, user_name):
if request.method == "HEAD":
return HttpResponse()
target = request.target_identity target = request.target_identity
anonymous = not request.user.is_authenticated anonymous = not request.user.is_authenticated
if anonymous and (not target.local or not target.anonymous_viewable): if anonymous and (not target.local or not target.anonymous_viewable):

@ -1 +1 @@
Subproject commit b783d46e5858e6fc8919a0b022b835a06634314c Subproject commit 1f8f9d1e73eca349288db0d43708c8e205d1e338