From 2d61599520048f70cdf07fceb07d0fd509d548fc Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sat, 17 Dec 2022 18:38:09 +0300 Subject: [PATCH] Feat(web/views/list_books): Group check boxes Name checkboxes by author and series counts. Will be used to turn checkboxes on/off in series and authors. [skip ci] --- m_librarian/web/app.py | 7 ++- m_librarian/web/views/list_books.py | 62 +++++++++++++++------------ m_librarian/web/views/list_books.tmpl | 6 ++- 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/m_librarian/web/app.py b/m_librarian/web/app.py index ef5835b..8975d7e 100644 --- a/m_librarian/web/app.py +++ b/m_librarian/web/app.py @@ -107,7 +107,12 @@ def send_static(filename): @route('/download/', method='POST') @cheetah_view('download.tmpl') def download_books(): - books_ids = request.forms.getall('books') + books_ids = [] + form = request.forms + for k in form: + if k.split('_')[-1] == 'books': + for _id in form.getall(k): + books_ids.append(_id) download_path = get_config().getpath('download', 'path') if books_ids: for id in books_ids: diff --git a/m_librarian/web/views/list_books.py b/m_librarian/web/views/list_books.py index 210516b..90e7443 100644 --- a/m_librarian/web/views/list_books.py +++ b/m_librarian/web/views/list_books.py @@ -37,10 +37,10 @@ VFN=valueForName currentTime=time.time __CHEETAH_version__ = '3.2.6' __CHEETAH_versionTuple__ = (3, 2, 6, 'final', 0) -__CHEETAH_genTime__ = 1671291302.390272 -__CHEETAH_genTimestamp__ = 'Sat Dec 17 18:35:02 2022' +__CHEETAH_genTime__ = 1671291191.270126 +__CHEETAH_genTimestamp__ = 'Sat Dec 17 18:33:11 2022' __CHEETAH_src__ = 'list_books.tmpl' -__CHEETAH_srcLastModified__ = 'Sat Dec 17 18:34:51 2022' +__CHEETAH_srcLastModified__ = 'Sat Dec 17 18:33:09 2022' __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine' if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple: @@ -114,61 +114,69 @@ class list_books(layout): write(u''' ''') columns1 = VFFSL(SL,"len",False)(VFFSL(SL,"columns",True))+1 - for author in VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True)): # generated from line 20, col 3 + for anum, author in VFFSL(SL,"enumerate",False)(VFFSL(SL,"sorted",False)(VFFSL(SL,"books_by_author",True))): # generated from line 20, col 3 series = None + snum = 0 books = VFFSL(SL,"books_by_author",True)[VFFSL(SL,"author",True)] - for book in VFFSL(SL,"books",True): # generated from line 23, col 5 - if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 24, col 5 + for book in VFFSL(SL,"books",True): # generated from line 24, col 5 + if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 25, col 5 series = VFFSL(SL,"book.series",True) + snum += 1 write(u''' ''') - _v = VFFSL(SL,"author",True) # u'$author' on line 28, col 3 - if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 28, col 3. + _v = VFFSL(SL,"author",True) # u'$author' on line 30, col 3 + if _v is not None: write(_filter(_v, rawExpr=u'$author')) # from line 30, col 3. write(u''' \u2014 ''') - if VFFSL(SL,"book.series",True): # generated from line 29, col 3 - _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 30, col 1 - if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 30, col 1. - else: # generated from line 31, col 3 + if VFFSL(SL,"book.series",True): # generated from line 31, col 3 + _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 32, col 1 + if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 32, col 1. + else: # generated from line 33, col 3 write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''') write(u''' ''') write(u''' - ''') - for column in VFFSL(SL,"columns",True): # generated from line 39, col 3 - if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 40, col 3 + for column in VFFSL(SL,"columns",True): # generated from line 41, col 3 + if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 42, col 3 style = ' style="text-align: right; width: 5ex"' - else: # generated from line 42, col 3 + else: # generated from line 44, col 3 style = '' write(u''' ''') - _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(unicode(VFFSL(SL,"getattr",False)(VFFSL(SL,"book",True), VFFSL(SL,"column",True)) or '')) # u"$cgi.escape(unicode($getattr($book, $column) or ''))" on line 45, col 13 - if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 45, col 13. + _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(unicode(VFFSL(SL,"getattr",False)(VFFSL(SL,"book",True), VFFSL(SL,"column",True)) or '')) # u"$cgi.escape(unicode($getattr($book, $column) or ''))" on line 47, col 13 + if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 47, col 13. write(u''' ''') write(u''' ''') write(u''' ''') - else: # generated from line 55, col 1 + else: # generated from line 57, col 1 write(u'''

\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0438!

''') diff --git a/m_librarian/web/views/list_books.tmpl b/m_librarian/web/views/list_books.tmpl index e5e885a..0e2424d 100644 --- a/m_librarian/web/views/list_books.tmpl +++ b/m_librarian/web/views/list_books.tmpl @@ -17,12 +17,14 @@ #end for #set $columns1 = $len($columns)+1 - #for $author in $sorted($books_by_author) + #for $anum, $author in $enumerate($sorted($books_by_author)) #set $series = None + #set $snum = 0 #set $books = $books_by_author[$author] #for $book in $books #if $book.series != $series #set $series = $book.series + #set $snum += 1 $author — @@ -35,7 +37,7 @@ $cgi.escape($series, 1)#slurp #end if - + #for $column in $columns #if $column in ('ser_no', 'size') #set $style = ' style="text-align: right; width: 5ex"' -- 2.39.5