1
0
Fork 0

Merge branch 'main' into book-series-v1

This commit is contained in:
Dustin Steiner 2023-01-31 10:06:07 +00:00
commit c2a81d88bb
No known key found for this signature in database
GPG key ID: 918D51522D8CB8F2
9 changed files with 53 additions and 19 deletions

View file

@ -31,7 +31,7 @@ from .admin.reports import (
)
from .admin.site import Site, Registration, RegistrationLimited
from .admin.themes import Themes, delete_theme
from .admin.user_admin import UserAdmin, UserAdminList
from .admin.user_admin import UserAdmin, UserAdminList, ActivateUserAdmin
# user preferences
from .preferences.change_password import ChangePassword

View file

@ -1,7 +1,7 @@
""" manage user """
from django.contrib.auth.decorators import login_required, permission_required
from django.core.paginator import Paginator
from django.shortcuts import get_object_or_404
from django.shortcuts import get_object_or_404, redirect
from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.views import View
@ -95,3 +95,19 @@ class UserAdmin(View):
form.save(request)
data = {"user": user, "group_form": form}
return TemplateResponse(request, "settings/users/user.html", data)
@method_decorator(login_required, name="dispatch")
@method_decorator(
permission_required("bookwyrm.moderate_user", raise_exception=True),
name="dispatch",
)
class ActivateUserAdmin(View):
"""activate a user manually"""
# pylint: disable=unused-argument
def post(self, request, user):
"""activate user"""
user = get_object_or_404(models.User, id=user)
user.reactivate()
return redirect("settings-user", user.id)

View file

@ -237,16 +237,24 @@ def feed_page_data(user):
def get_suggested_books(user, max_books=5):
"""helper to get a user's recent books"""
book_count = 0
preset_shelves = [("reading", max_books), ("read", 2), ("to-read", max_books)]
preset_shelves = {"reading": max_books, "read": 2, "to-read": max_books}
suggested_books = []
for (preset, shelf_max) in preset_shelves:
user_shelves = {
shelf.identifier: shelf
for shelf in user.shelf_set.filter(
identifier__in=preset_shelves.keys()
).exclude(books__isnull=True)
}
for preset, shelf_max in preset_shelves.items():
limit = (
shelf_max
if shelf_max < (max_books - book_count)
else max_books - book_count
)
shelf = user.shelf_set.get(identifier=preset)
if not shelf.books.exists():
shelf = user_shelves.get(preset, None)
if not shelf:
continue
shelf_preview = {