]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web/views/list_books): Group check boxes
authorOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 15:38:09 +0000 (18:38 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 17 Dec 2022 17:05:59 +0000 (20:05 +0300)
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
m_librarian/web/views/list_books.py
m_librarian/web/views/list_books.tmpl

index ef5835b42722abf60382c0815edc820f77a1b2c6..8975d7e7622325c53205779bd23b58f3629ef944 100644 (file)
@@ -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:
index 210516b61f92fc77175be0f824b6598ae6013965..90e74436b9d4d3173641d4def0fd38217088638e 100644 (file)
@@ -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'''  </tr>
 ''')
             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'''  <tr>
   <td colspan="''')
-                        _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 27, col 16
-                        if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 27, col 16.
+                        _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 29, col 16
+                        if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 29, col 16.
                         write(u'''"><b>
   ''')
-                        _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 <i>
 ''')
-                        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'''  </i></b></td>
   </tr>
 ''')
                     write(u'''  <tr>
-  <td><input type=checkbox name=books value="''')
-                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 38, col 46
-                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 38, col 46.
+  <td><input type=checkbox name="a''')
+                    _v = VFFSL(SL,"anum",True)+1 # u'${anum+1}' on line 40, col 35
+                    if _v is not None: write(_filter(_v, rawExpr=u'${anum+1}')) # from line 40, col 35.
+                    write(u'''_s''')
+                    _v = VFFSL(SL,"snum",True) # u'${snum}' on line 40, col 46
+                    if _v is not None: write(_filter(_v, rawExpr=u'${snum}')) # from line 40, col 46.
+                    write(u'''_books" value="''')
+                    _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 40, col 68
+                    if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 40, col 68.
                     write(u'''"></td>
 ''')
-                    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'''  <td''')
-                        _v = VFFSL(SL,"style",True) # u'$style' on line 45, col 6
-                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 45, col 6.
+                        _v = VFFSL(SL,"style",True) # u'$style' on line 47, col 6
+                        if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 47, col 6.
                         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'''</td>
 ''')
                     write(u'''  </tr>
 ''')
             write(u'''  <tr>
   <td colspan="''')
-            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 51, col 16
-            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 51, col 16.
+            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 53, col 16
+            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 53, col 16.
             write(u'''" style="text-align: center"><input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c"></td>
   </tr>
   </table>
   </form>
 ''')
-        else: # generated from line 55, col 1
+        else: # generated from line 57, col 1
             write(u'''  <p>\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043d\u0438\u0433\u0438!</p>
 ''')
         
index e5e885a98a046c77f213421184e996102a2c44bf..0e2424d18b70319f09214e8c58ff1c34526fa776 100644 (file)
   #end for
   </tr>
   #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
   <tr>
   <td colspan="$columns1"><b>
   $author — <i>
@@ -35,7 +37,7 @@ $cgi.escape($series, 1)#slurp
   </tr>
     #end if
   <tr>
-  <td><input type=checkbox name=books value="$book.id"></td>
+  <td><input type=checkbox name="a${anum+1}_s${snum}_books" value="$book.id"></td>
   #for $column in $columns
   #if $column in ('ser_no', 'size')
   #set $style = ' style="text-align: right; width: 5ex"'