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 DB import Database
|
||||||
from hatena import NotFound, as_text
|
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):
|
class PyResource(resource.Resource):
|
||||||
@@ -38,12 +38,17 @@ class CreatorLeaf(resource.Resource):
|
|||||||
room = Database.get_creator_room(self.room_id)
|
room = Database.get_creator_room(self.room_id)
|
||||||
if not room:
|
if not room:
|
||||||
return NotFound.render(request)
|
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"}:
|
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")
|
request.setHeader(b"content-type", b"text/plain")
|
||||||
return make_menu(
|
return make_menu(
|
||||||
layout=(2,1), title=room["display_name"], subtitle_top="Creator's Room",
|
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")},
|
corner={"label":"Post", "url":dsi_url(request, "ch/1.post")},
|
||||||
)
|
)
|
||||||
profile = (
|
profile = (
|
||||||
@@ -54,7 +59,7 @@ class CreatorLeaf(resource.Resource):
|
|||||||
'<tr><th>Identity</th><td>%s</td></tr>'
|
'<tr><th>Identity</th><td>%s</td></tr>'
|
||||||
'</table><p><a href="%s">View Flipnotes</a></p>'
|
'</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",
|
"Account" if room.get("account_id") else "Guest/IP",
|
||||||
html.escape(dsi_url(request, f"creator/{self.room_id}/movies.uls"), quote=True),
|
html.escape(dsi_url(request, f"creator/{self.room_id}/movies.uls"), quote=True),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in new issue
Block a user
