remove hardcoded shelf labels

This commit is contained in:
Her Email 2023-12-03 12:38:45 -05:00 committed by Henri Dickson
parent b66cee3755
commit 240e782bfc
8 changed files with 31 additions and 20 deletions

View file

@ -54,7 +54,7 @@
{% if request.user.is_authenticated and not mark.shelf_type %}
<div id="item-primary-action" class="right mark">
<div class="item-action item-mark-buttons">
{% for k, v in shelf_types %}
{% for k, v in shelf_labels %}
{% if v %}
<button class="primary"
data-status="{{ k }}"

View file

@ -20,7 +20,7 @@ from journal.models import (
Review,
ShelfMember,
ShelfType,
ShelfTypeNames,
get_shelf_labels_for_category,
q_piece_in_home_feed_of_user,
q_piece_visible_to_user,
)
@ -92,7 +92,7 @@ def retrieve(request, item_path, item_uuid):
my_collections = []
collection_list = []
child_item_comments = []
shelf_types = [(n[1], n[2]) for n in iter(ShelfTypeNames) if n[0] == item.category]
shelf_labels = get_shelf_labels_for_category(item.category)
if request.user.is_authenticated:
visible = q_piece_visible_to_user(request.user)
mark = Mark(request.user.identity, item)
@ -126,7 +126,7 @@ def retrieve(request, item_path, item_uuid):
"child_item_comments": child_item_comments,
"my_collections": my_collections,
"collection_list": collection_list,
"shelf_types": shelf_types,
"shelf_labels": shelf_labels,
},
)

View file

@ -16,12 +16,13 @@ from .rating import Rating
from .renderers import render_md
from .review import Review
from .shelf import (
SHELF_LABELS,
Shelf,
ShelfLogEntry,
ShelfManager,
ShelfMember,
ShelfType,
ShelfTypeNames,
get_shelf_labels_for_category,
)
from .tag import Tag, TagManager, TagMember
from .utils import (

View file

@ -25,7 +25,7 @@ class ShelfType(models.TextChoices):
# DISCARDED = ('discarded', '放弃')
ShelfTypeNames = [
SHELF_LABELS = [
[ItemCategory.Book, ShelfType.WISHLIST, _("想读")],
[ItemCategory.Book, ShelfType.PROGRESS, _("在读")],
[ItemCategory.Book, ShelfType.COMPLETE, _("读过")],
@ -52,6 +52,10 @@ ShelfTypeNames = [
]
def get_shelf_labels_for_category(item_category: ItemCategory):
return [(n[1], n[2]) for n in SHELF_LABELS if n[0] == item_category]
class ShelfMember(ListMember):
parent = models.ForeignKey(
"Shelf", related_name="members", on_delete=models.CASCADE
@ -268,7 +272,7 @@ class ShelfManager:
cls, shelf_type: ShelfType | str, item_category: ItemCategory
) -> str:
st = str(shelf_type)
sts = [n[2] for n in ShelfTypeNames if n[0] == item_category and n[1] == st]
sts = [n[2] for n in SHELF_LABELS if n[0] == item_category and n[1] == st]
return sts[0] if sts else st
@classmethod

View file

@ -17,12 +17,11 @@
{% endfor %}
</select>
<select name="shelf" id="shelf" onchange="filter()">
<option {% if '/wishlist/' in request.path %}selected{% endif %}
value="wishlist">想看</option>
<option {% if '/progress/' in request.path %}selected{% endif %}
value="progress">在看</option>
<option {% if '/complete/' in request.path %}selected{% endif %}
value="complete">看过</option>
{% for typ, label in shelf_labels %}
{% if label %}
<option {% if typ in request.path %}selected{% endif %} value="{{ typ }}">{{ label }}</option>
{% endif %}
{% endfor %}
<option {% if '/reviews/' in request.path %}selected{% endif %}
value="reviews">评论</option>
</select>

View file

@ -22,11 +22,11 @@
<div class="add-to-list-modal__body">
<form method="post" action="{% url 'journal:mark' item.uuid %}">
{% csrf_token %}
{% if shelf_types %}
{% if shelf_labels %}
<div class="grid mark-line">
<div>
<fieldset>
{% for k, v in shelf_types %}
{% for k, v in shelf_labels %}
{% if v %}
<input type="radio"
name="status"

View file

@ -91,6 +91,7 @@ def render_list(
page_number = int(request.GET.get("page", default=1))
members = paginator.get_page(page_number)
pagination = PageLinksGenerator(PAGE_SIZE, page_number, paginator.num_pages)
shelf_labels = get_shelf_labels_for_category(item_category) if item_category else []
return render(
request,
f"user_{type}_list.html",
@ -103,6 +104,7 @@ def render_list(
"years": years,
"year": year,
"shelf": shelf_type,
"shelf_labels": shelf_labels,
"category": item_category,
},
)

View file

@ -16,7 +16,14 @@ from common.utils import AuthedHttpRequest, PageLinksGenerator, get_uuid_or_404
from mastodon.api import boost_toot_later
from takahe.utils import Takahe
from ..models import Comment, Mark, Piece, ShelfType, ShelfTypeNames, TagManager
from ..models import (
Comment,
Mark,
Piece,
ShelfType,
TagManager,
get_shelf_labels_for_category,
)
from .common import render_list, render_relogin, target_identity_required
_logger = logging.getLogger(__name__)
@ -98,9 +105,7 @@ def mark(request: AuthedHttpRequest, item_uuid):
mark = Mark(request.user.identity, item)
if request.method == "GET":
tags = request.user.identity.tag_manager.get_item_tags(item)
shelf_types = [
(n[1], n[2]) for n in iter(ShelfTypeNames) if n[0] == item.category
]
shelf_labels = get_shelf_labels_for_category(item.category)
shelf_type = request.GET.get("shelf_type", mark.shelf_type)
return render(
request,
@ -110,7 +115,7 @@ def mark(request: AuthedHttpRequest, item_uuid):
"mark": mark,
"shelf_type": shelf_type,
"tags": ",".join(tags),
"shelf_types": shelf_types,
"shelf_labels": shelf_labels,
"date_today": timezone.localdate().isoformat(),
},
)