]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web): Загружать выбранный список книг
authorOleg Broytman <phd@phdru.name>
Fri, 25 May 2018 02:05:18 +0000 (05:05 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 25 May 2018 02:05:18 +0000 (05:05 +0300)
m_librarian/web/app.py
m_librarian/web/views/books_by_author.py
m_librarian/web/views/books_by_author.tmpl

index 7032825e8224d3f4c0cf94e04228eeddd46d21f7..2296d277bbe17f85d174e49615673176ecb484ae 100644 (file)
@@ -87,11 +87,19 @@ def send_static(filename):
     )
 
 
-@route('/download/<id:int>/', method='GET')
+@route('/download/', method='POST')
 @cheetah_view('download.tmpl')
-def download_book(id):
-    book = Book.get(id)
-    download(book, get_config().get('download', 'path'))
-    return {
-        'message': u'Книга сохранена',
-    }
+def download_books():
+    books_ids = request.forms.getall('books')
+    download_path = get_config().get('download', 'path')
+    if books_ids:
+        for id in books_ids:
+            book = Book.get(int(id))
+            download(book, download_path)
+        return {
+            'message': u'Книги сохранены.',
+        }
+    else:
+        return {
+            'message': u'Не выбрано книг для сохранения.',
+        }
index c0e2ab880b1d9af2b85ee48405c06c81628e8968..6d5399610252bdf81ad9535107fd52d0a609a304 100644 (file)
@@ -36,10 +36,10 @@ VFN=valueForName
 currentTime=time.time
 __CHEETAH_version__ = '3.1.0'
 __CHEETAH_versionTuple__ = (3, 1, 0, 'final', 1)
-__CHEETAH_genTime__ = 1527213181.482462
-__CHEETAH_genTimestamp__ = 'Fri May 25 04:53:01 2018'
+__CHEETAH_genTime__ = 1527213308.313682
+__CHEETAH_genTimestamp__ = 'Fri May 25 04:55:08 2018'
 __CHEETAH_src__ = 'books_by_author.tmpl'
-__CHEETAH_srcLastModified__ = 'Fri May 25 04:52:59 2018'
+__CHEETAH_srcLastModified__ = 'Fri May 25 04:55:05 2018'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -97,40 +97,45 @@ class books_by_author(layout):
 
 ''')
         if VFFSL(SL,"books",True): # generated from line 8, col 1
-            write(u'''  <form action="" method="POST" style="height: 80%">
-  <select multiple style="height: 90%">
+            write(u'''  <form action="/download/" method="POST" style="height: 80%">
+  <div style="width: 100%; height: 90%">
+  <select multiple name="books" style="height: 100%">
 ''')
             series = None
-            for book in VFFSL(SL,"books",True): # generated from line 12, col 3
-                if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 13, col 3
-                    if VFFSL(SL,"series",True) is not None: # generated from line 14, col 3
+            for book in VFFSL(SL,"books",True): # generated from line 13, col 3
+                if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 14, col 3
+                    if VFFSL(SL,"series",True) is not None: # generated from line 15, col 3
                         write(u'''  </optgroup>
 ''')
                     series = VFFSL(SL,"book.series",True)
                     write(u'''  <optgroup label="''')
-                    if VFFSL(SL,"book.series",True): # generated from line 19, col 3
-                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 20, col 1
-                        if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 20, col 1.
-                    else: # generated from line 21, col 3
+                    if VFFSL(SL,"book.series",True): # generated from line 20, col 3
+                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 21, col 1
+                        if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 21, col 1.
+                    else: # generated from line 22, col 3
                         write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''')
                     write(u'''">
 ''')
                 write(u'''  <option value="''')
-                _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 26, col 18
-                if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 26, col 18.
+                _v = VFFSL(SL,"book.id",True) # u'$book.id' on line 27, col 18
+                if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 27, col 18.
                 write(u'''">''')
-                _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 26, col 28
-                if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 26, col 28.
+                _v = VFFSL(SL,"book.ser_no",True) # u'$book.ser_no' on line 27, col 28
+                if _v is not None: write(_filter(_v, rawExpr=u'$book.ser_no')) # from line 27, col 28.
                 write(u''' ''')
-                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 26, col 41
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 26, col 41.
+                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"book.title",True)) # u'$cgi.escape($book.title)' on line 27, col 41
+                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($book.title)')) # from line 27, col 41.
                 write(u'''</option>
 ''')
             write(u'''  </optgroup>
   </select>
+  </div>
+  <div style="width: 100%; text-align: center">
+  <input type="submit" value="\u0421\u043a\u0430\u0447\u0430\u0442\u044c">
+  </div>
   </form>
 ''')
-        else: # generated from line 31, col 1
+        else: # generated from line 36, 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 668e4453b079cf764b78c3e7e1a529b0531386b0..bdd694ea6d162c3a48434edb4700a3cf01fde3e6 100644 (file)
@@ -6,8 +6,9 @@
 <h1>$title $author.fullname</h1>
 
 #if $books
-  <form action="" method="POST" style="height: 80%">
-  <select multiple style="height: 90%">
+  <form action="/download/" method="POST" style="height: 80%">
+  <div style="width: 100%; height: 90%">
+  <select multiple name="books" style="height: 100%">
   #set $series = None
   #for $book in $books
   #if $book.series != $series
@@ -27,6 +28,10 @@ $cgi.escape($series, 1)#slurp
   #end for
   </optgroup>
   </select>
+  </div>
+  <div style="width: 100%; text-align: center">
+  <input type="submit" value="Скачать">
+  </div>
   </form>
 #else
   <p>Не найдено ни одной книги!</p>