Merge branch 'main' into inbox-refactor
This commit is contained in:
@ -13,7 +13,7 @@ from bookwyrm.activitypub import ActivitypubResponse
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
from .helpers import get_activity_feed
|
||||
from .helpers import get_user_from_username
|
||||
from .helpers import is_api_request, is_bookworm_request, object_visible_to_user
|
||||
from .helpers import is_api_request, is_bookwyrm_request, object_visible_to_user
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
@ -65,7 +65,7 @@ class DirectMessage(View):
|
||||
user = None
|
||||
if username:
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
pass
|
||||
if user:
|
||||
@ -91,7 +91,7 @@ class Status(View):
|
||||
def get(self, request, username, status_id):
|
||||
''' display a particular status (and replies, etc) '''
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
status = models.Status.objects.select_subclasses().get(
|
||||
id=status_id, deleted=False)
|
||||
except ValueError:
|
||||
@ -107,7 +107,7 @@ class Status(View):
|
||||
|
||||
if is_api_request(request):
|
||||
return ActivitypubResponse(
|
||||
status.to_activity(pure=not is_bookworm_request(request)))
|
||||
status.to_activity(pure=not is_bookwyrm_request(request)))
|
||||
|
||||
data = {**feed_page_data(request.user), **{
|
||||
'title': 'Status by %s' % user.username,
|
||||
|
@ -14,7 +14,7 @@ def follow(request):
|
||||
''' follow another user, here or abroad '''
|
||||
username = request.POST['user']
|
||||
try:
|
||||
to_follow = get_user_from_username(username)
|
||||
to_follow = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
@ -35,7 +35,7 @@ def unfollow(request):
|
||||
''' unfollow a user '''
|
||||
username = request.POST['user']
|
||||
try:
|
||||
to_unfollow = get_user_from_username(username)
|
||||
to_unfollow = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
@ -52,7 +52,7 @@ def accept_follow_request(request):
|
||||
''' a user accepts a follow request '''
|
||||
username = request.POST['user']
|
||||
try:
|
||||
requester = get_user_from_username(username)
|
||||
requester = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
@ -75,7 +75,7 @@ def delete_follow_request(request):
|
||||
''' a user rejects a follow request '''
|
||||
username = request.POST['user']
|
||||
try:
|
||||
requester = get_user_from_username(username)
|
||||
requester = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
|
@ -18,7 +18,7 @@ class Goal(View):
|
||||
''' track books for the year '''
|
||||
def get(self, request, username, year):
|
||||
''' reading goal page '''
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
year = int(year)
|
||||
goal = models.AnnualGoal.objects.filter(
|
||||
year=year, user=user
|
||||
@ -42,7 +42,7 @@ class Goal(View):
|
||||
|
||||
def post(self, request, username, year):
|
||||
''' update or create an annual goal '''
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
if user != request.user:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
|
@ -9,13 +9,13 @@ from bookwyrm.status import create_generated_note
|
||||
from bookwyrm.utils import regex
|
||||
|
||||
|
||||
def get_user_from_username(username):
|
||||
def get_user_from_username(viewer, username):
|
||||
''' helper function to resolve a localname or a username to a user '''
|
||||
# raises DoesNotExist if user is now found
|
||||
try:
|
||||
return models.User.objects.get(localname=username)
|
||||
return models.User.viewer_aware_objects(viewer).get(localname=username)
|
||||
except models.User.DoesNotExist:
|
||||
return models.User.objects.get(username=username)
|
||||
return models.User.viewer_aware_objects(viewer).get(username=username)
|
||||
|
||||
|
||||
def is_api_request(request):
|
||||
@ -24,8 +24,8 @@ def is_api_request(request):
|
||||
request.path[-5:] == '.json'
|
||||
|
||||
|
||||
def is_bookworm_request(request):
|
||||
''' check if the request is coming from another bookworm instance '''
|
||||
def is_bookwyrm_request(request):
|
||||
''' check if the request is coming from another bookwyrm instance '''
|
||||
user_agent = request.headers.get('User-Agent')
|
||||
if user_agent is None or \
|
||||
re.search(regex.bookwyrm_user_agent, user_agent) is None:
|
||||
|
@ -1,5 +1,6 @@
|
||||
''' invites when registration is closed '''
|
||||
from django.contrib.auth.decorators import login_required, permission_required
|
||||
from django.core.paginator import Paginator
|
||||
from django.http import HttpResponseBadRequest
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
from django.template.response import TemplateResponse
|
||||
@ -7,6 +8,7 @@ from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.settings import PAGE_LENGTH
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
@ -18,10 +20,18 @@ class ManageInvites(View):
|
||||
''' create invites '''
|
||||
def get(self, request):
|
||||
''' invite management page '''
|
||||
try:
|
||||
page = int(request.GET.get('page', 1))
|
||||
except ValueError:
|
||||
page = 1
|
||||
|
||||
paginated = Paginator(models.SiteInvite.objects.filter(
|
||||
user=request.user
|
||||
).order_by('-created_date'), PAGE_LENGTH)
|
||||
|
||||
data = {
|
||||
'title': 'Invitations',
|
||||
'invites': models.SiteInvite.objects.filter(
|
||||
user=request.user).order_by('-created_date'),
|
||||
'invites': paginated.page(page),
|
||||
'form': forms.CreateInviteForm(),
|
||||
}
|
||||
return TemplateResponse(request, 'settings/manage_invites.html', data)
|
||||
@ -36,7 +46,15 @@ class ManageInvites(View):
|
||||
invite.user = request.user
|
||||
invite.save()
|
||||
|
||||
return redirect('/settings/invites')
|
||||
paginated = Paginator(models.SiteInvite.objects.filter(
|
||||
user=request.user
|
||||
).order_by('-created_date'), PAGE_LENGTH)
|
||||
data = {
|
||||
'title': 'Invitations',
|
||||
'invites': paginated.page(1),
|
||||
'form': form
|
||||
}
|
||||
return TemplateResponse(request, 'settings/manage_invites.html', data)
|
||||
|
||||
|
||||
class Invite(View):
|
||||
|
@ -16,7 +16,7 @@ class About(View):
|
||||
data = {
|
||||
'title': 'About',
|
||||
}
|
||||
return TemplateResponse(request, 'about.html', data)
|
||||
return TemplateResponse(request, 'discover/about.html', data)
|
||||
|
||||
class Home(View):
|
||||
''' discover page or home feed depending on auth '''
|
||||
@ -56,4 +56,4 @@ class Discover(View):
|
||||
'books': list(set(books)),
|
||||
'ratings': ratings
|
||||
}
|
||||
return TemplateResponse(request, 'discover.html', data)
|
||||
return TemplateResponse(request, 'discover/discover.html', data)
|
||||
|
@ -65,7 +65,7 @@ class UserLists(View):
|
||||
page = int(request.GET.get('page', 1))
|
||||
except ValueError:
|
||||
page = 1
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
lists = models.List.objects.filter(user=user).all()
|
||||
lists = privacy_filter(
|
||||
request.user, lists, ['public', 'followers', 'unlisted'])
|
||||
|
@ -4,6 +4,7 @@ from django.shortcuts import get_object_or_404
|
||||
from django.views import View
|
||||
|
||||
from bookwyrm import activitypub, models
|
||||
from .helpers import is_bookwyrm_request
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
@ -17,6 +18,10 @@ class Outbox(View):
|
||||
filter_type = None
|
||||
|
||||
return JsonResponse(
|
||||
user.to_outbox(**request.GET, filter_type=filter_type),
|
||||
user.to_outbox(
|
||||
**request.GET,
|
||||
filter_type=filter_type,
|
||||
pure=not is_bookwyrm_request(request)
|
||||
),
|
||||
encoder=activitypub.ActivityEncoder
|
||||
)
|
||||
|
@ -11,7 +11,7 @@ class RssFeed(Feed):
|
||||
|
||||
def get_object(self, request, username):
|
||||
''' the user who's posts get serialized '''
|
||||
return get_user_from_username(username)
|
||||
return get_user_from_username(request.user, username)
|
||||
|
||||
|
||||
def link(self, obj):
|
||||
|
@ -33,7 +33,7 @@ class Search(View):
|
||||
handle_remote_webfinger(query)
|
||||
|
||||
# do a user search
|
||||
user_results = models.User.objects.annotate(
|
||||
user_results = models.User.viewer_aware_objects(request.user).annotate(
|
||||
similarity=Greatest(
|
||||
TrigramSimilarity('username', query),
|
||||
TrigramSimilarity('localname', query),
|
||||
|
@ -19,7 +19,7 @@ class Shelf(View):
|
||||
def get(self, request, username, shelf_identifier):
|
||||
''' display a shelf '''
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
|
@ -26,7 +26,7 @@ class User(View):
|
||||
def get(self, request, username):
|
||||
''' profile page for a user '''
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
@ -96,7 +96,7 @@ class Followers(View):
|
||||
def get(self, request, username):
|
||||
''' list of followers '''
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
@ -121,7 +121,7 @@ class Following(View):
|
||||
def get(self, request, username):
|
||||
''' list of followers '''
|
||||
try:
|
||||
user = get_user_from_username(username)
|
||||
user = get_user_from_username(request.user, username)
|
||||
except models.User.DoesNotExist:
|
||||
return HttpResponseNotFound()
|
||||
|
||||
|
Reference in New Issue
Block a user