From c1ef7b3892aa2f793030d7ad209bba440fb8ea02 Mon Sep 17 00:00:00 2001
From: Your Name
Date: Sun, 13 Aug 2023 18:00:10 -0400
Subject: [PATCH] fetch remote identity
---
catalog/search/views.py | 20 ++----
catalog/views.py | 1 +
common/templates/_header.html | 2 +-
common/templates/_sidebar.html | 36 +++++-----
common/templatetags/mastodon.py | 12 ++--
common/utils.py | 10 ++-
journal/models/like.py | 12 ++--
journal/templates/profile.html | 31 +++++----
journal/views/collection.py | 3 +
journal/views/common.py | 15 +++--
journal/views/profile.py | 14 ++--
journal/views/tag.py | 1 +
takahe/ap_handlers.py | 2 +-
takahe/migrations/0001_initial.py | 20 ++++++
takahe/models.py | 31 +++++++++
takahe/utils.py | 18 ++++-
users/migrations/0012_apidentity.py | 3 +-
users/migrations/0013_init_identity.py | 2 +-
users/models/apidentity.py | 65 +++++++++++++++----
.../users/fetch_identity_failed.html | 4 ++
.../users/fetch_identity_pending.html | 42 ++++++++++++
.../users/fetch_identity_refresh.html | 5 ++
users/templates/users/profile_actions.html | 22 +++----
users/tests.py | 19 ++++++
users/urls.py | 1 +
users/views.py | 39 ++++++++++-
26 files changed, 328 insertions(+), 102 deletions(-)
create mode 100644 users/templates/users/fetch_identity_failed.html
create mode 100644 users/templates/users/fetch_identity_pending.html
create mode 100644 users/templates/users/fetch_identity_refresh.html
diff --git a/catalog/search/views.py b/catalog/search/views.py
index 4af3c393..605fc19c 100644
--- a/catalog/search/views.py
+++ b/catalog/search/views.py
@@ -1,13 +1,11 @@
-import hashlib
import logging
-import uuid
+import re
import django_rq
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.core.cache import cache
from django.core.exceptions import BadRequest
-from django.http import HttpResponseRedirect
from django.shortcuts import redirect, render
from django.utils.translation import gettext_lazy as _
from rq.job import Job
@@ -15,7 +13,8 @@ from rq.job import Job
from catalog.common.models import ItemCategory, SiteName
from catalog.common.sites import AbstractSite, SiteManager
from common.config import PAGE_LINK_NUMBER
-from common.utils import PageLinksGenerator
+from common.utils import HTTPResponseHXRedirect, PageLinksGenerator
+from users.views import query_identity
from ..models import *
from .external import ExternalSources
@@ -24,16 +23,7 @@ from .models import enqueue_fetch, get_fetch_lock, query_index
_logger = logging.getLogger(__name__)
-class HTTPResponseHXRedirect(HttpResponseRedirect):
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self["HX-Redirect"] = self["Location"]
-
- status_code = 200
-
-
def fetch_refresh(request, job_id):
- retry = request.GET
try:
job = Job.fetch(id=job_id, connection=django_rq.get_connection("fetch"))
item_url = job.return_value()
@@ -102,6 +92,9 @@ def visible_categories(request):
def search(request):
+ keywords = request.GET.get("q", default="").strip()
+ if re.match(r"^[@@]", keywords):
+ return query_identity(request, keywords.replace("@", "@"))
category = request.GET.get("c", default="all").strip().lower()
hide_category = False
if category == "all" or not category:
@@ -115,7 +108,6 @@ def search(request):
hide_category = True
except:
categories = visible_categories(request)
- keywords = request.GET.get("q", default="").strip()
tag = request.GET.get("tag", default="").strip()
p = request.GET.get("page", default="1")
p = int(p) if p.isdigit() else 1
diff --git a/catalog/views.py b/catalog/views.py
index a9635c28..4e3bddfb 100644
--- a/catalog/views.py
+++ b/catalog/views.py
@@ -312,6 +312,7 @@ def discover(request):
"discover.html",
{
"user": user,
+ "identity": user.identity,
"gallery_list": gallery_list,
"recent_podcast_episodes": recent_podcast_episodes,
"books_in_progress": books_in_progress,
diff --git a/common/templates/_header.html b/common/templates/_header.html
index b1d33db2..62b7c5c6 100644
--- a/common/templates/_header.html
+++ b/common/templates/_header.html
@@ -15,7 +15,7 @@
@@ -62,7 +63,7 @@