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 @@