feat(dsi): paginate Creator's Room uploads
Page through creator uploads while displaying the full total and safely rendering names.
This commit is contained in:
1 parent
1fa962f868
commit
cb689e6ef9
1 file changed
+9
-4
@@ -3,7 +3,7 @@ from twisted.web import resource
|
||||
|
||||
from DB import Database
|
||||
from hatena import NotFound, as_text
|
||||
from reximemo import dsi_url, flipnote_buttons, html_page, make_menu
|
||||
from reximemo import dsi_text_html, dsi_url, flipnote_buttons, html_page, make_menu, page_number, pagination_buttons
|
||||
|
||||
|
||||
class PyResource(resource.Resource):
|
||||
@@ -38,12 +38,17 @@ class CreatorLeaf(resource.Resource):
|
||||
room = Database.get_creator_room(self.room_id)
|
||||
if not room:
|
||||
return NotFound.render(request)
|
||||
notes = Database.list_creator_flipnotes(self.room_id, limit=50)
|
||||
total = Database.count_flipnotes(room_id=self.room_id)
|
||||
page = page_number(request, total)
|
||||
notes = Database.list_creator_flipnotes(self.room_id, limit=50, offset=(page - 1) * 50)
|
||||
if self.action in {"room.uls", "movies.uls"}:
|
||||
pager = pagination_buttons(request, f"creator/{self.room_id}/movies.uls", page, total)
|
||||
prev = [item for item in pager if item["label"].startswith("Previous")]
|
||||
nxt = [item for item in pager if item["label"].startswith("Next")]
|
||||
request.setHeader(b"content-type", b"text/plain")
|
||||
return make_menu(
|
||||
layout=(2,1), title=room["display_name"], subtitle_top="Creator's Room",
|
||||
left="Flipnotes", right=str(len(notes)), buttons=flipnote_buttons(request, notes),
|
||||
left="Flipnotes", right=str(total), buttons=prev + flipnote_buttons(request, notes) + nxt,
|
||||
corner={"label":"Post", "url":dsi_url(request, "ch/1.post")},
|
||||
)
|
||||
profile = (
|
||||
@@ -54,7 +59,7 @@ class CreatorLeaf(resource.Resource):
|
||||
'<tr><th>Identity</th><td>%s</td></tr>'
|
||||
'</table><p><a href="%s">View Flipnotes</a></p>'
|
||||
) % (
|
||||
html.escape(room["display_name"]), len(notes),
|
||||
dsi_text_html(room["display_name"]), total,
|
||||
"Account" if room.get("account_id") else "Guest/IP",
|
||||
html.escape(dsi_url(request, f"creator/{self.room_id}/movies.uls"), quote=True),
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user
