remove hardcoded shelf labels
This commit is contained in:
parent
b66cee3755
commit
240e782bfc
8 changed files with 31 additions and 20 deletions
|
@ -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 }}"
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
)
|
||||
|
|
|
@ -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(),
|
||||
},
|
||||
)
|
||||
|
|
Loading…
Add table
Reference in a new issue