]> git.phdru.name Git - m_librarian.git/commitdiff
Feat(web): Use signgle template `list_books`
authorOleg Broytman <phd@phdru.name>
Fri, 5 Mar 2021 15:57:31 +0000 (18:57 +0300)
committerOleg Broytman <phd@phdru.name>
Fri, 5 Mar 2021 15:57:31 +0000 (18:57 +0300)
Remove template `books_by_author`.

m_librarian/web/app.py
m_librarian/web/views/books_by_author.py [deleted file]
m_librarian/web/views/books_by_author.tmpl [deleted file]

index 78878a11df47845d740ac6af025779e8e343f5f8..ef5835b42722abf60382c0815edc820f77a1b2c6 100644 (file)
@@ -70,10 +70,11 @@ def search_authors_post():
 
 
 @route('/books-by-author/<id:int>/', method='GET')
-@cheetah_view('books_by_author.tmpl')
+@cheetah_view('list_books.tmpl')
 def books_by_author(id):
     use_filters = get_config().getint('filters', 'use_in_books_list', 1)
     columns = get_config().getlist('columns', 'book', ['title'])
+    author = Author.get(id)
     if use_filters:
         join_expressions = []
         join_expressions.append(Book.j.authors)
@@ -81,20 +82,16 @@ def books_by_author(id):
         books = search_books('full', None, {}, join_expressions,
                              orderBy=('series', 'ser_no', 'title', '-date'),
                              use_filters=use_filters)
-        return {
-            'author': Author.get(id),
-            'books': books,
-            'columns': columns,
-        }
     else:
-        return {
-            'author': Author.get(id),
-            'books': Book.select(
-                Book.j.authors & (Author.q.id == id),
-                orderBy=['series', 'ser_no', 'title'],
-            ),
-            'columns': columns,
-        }
+        books = Book.select(
+            Book.j.authors & (Author.q.id == id),
+            orderBy=['series', 'ser_no', 'title'],
+        )
+
+    return {
+        'books_by_author': {author.fullname: list(books)},
+        'columns': columns,
+    }
 
 
 @route('/static/<filename:path>')
diff --git a/m_librarian/web/views/books_by_author.py b/m_librarian/web/views/books_by_author.py
deleted file mode 100644 (file)
index 664c583..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-
-
-
-##################################################
-## DEPENDENCIES
-import sys
-import os
-import os.path
-try:
-    import builtins as builtin
-except ImportError:
-    import __builtin__ as builtin
-from os.path import getmtime, exists
-import time
-import types
-from Cheetah.Version import MinCompatibleVersion as RequiredCheetahVersion
-from Cheetah.Version import MinCompatibleVersionTuple as RequiredCheetahVersionTuple
-from Cheetah.Template import Template
-from Cheetah.DummyTransaction import *
-from Cheetah.NameMapper import NotFound, valueForName, valueFromSearchList, valueFromFrameOrSearchList
-from Cheetah.CacheRegion import CacheRegion
-import Cheetah.Filters as Filters
-import Cheetah.ErrorCatchers as ErrorCatchers
-from Cheetah.compat import unicode
-import cgi
-from m_librarian.translations import translations
-from views.layout import layout
-
-##################################################
-## MODULE CONSTANTS
-VFFSL=valueFromFrameOrSearchList
-VFSL=valueFromSearchList
-VFN=valueForName
-currentTime=time.time
-__CHEETAH_version__ = '3.1.0'
-__CHEETAH_versionTuple__ = (3, 1, 0, 'final', 1)
-__CHEETAH_genTime__ = 1528755605.645537
-__CHEETAH_genTimestamp__ = 'Tue Jun 12 01:20:05 2018'
-__CHEETAH_src__ = 'books_by_author.tmpl'
-__CHEETAH_srcLastModified__ = 'Tue Jun 12 01:19:14 2018'
-__CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
-
-if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
-    raise AssertionError(
-      'This template was compiled with Cheetah version'
-      ' %s. Templates compiled before version %s must be recompiled.'%(
-         __CHEETAH_version__, RequiredCheetahVersion))
-
-##################################################
-## CLASSES
-
-class books_by_author(layout):
-
-    ##################################################
-    ## CHEETAH GENERATED METHODS
-
-
-    def __init__(self, *args, **KWs):
-
-        super(books_by_author, self).__init__(*args, **KWs)
-        if not self._CHEETAH__instanceInitialized:
-            cheetahKWArgs = {}
-            allowedKWs = 'searchList namespaces filter filtersLib errorCatcher'.split()
-            for k,v in KWs.items():
-                if k in allowedKWs: cheetahKWArgs[k] = v
-            self._initCheetahInstance(**cheetahKWArgs)
-        
-
-    def body(self, **KWS):
-
-
-
-        ## CHEETAH: generated from #def body at line 6, col 1.
-        trans = KWS.get("trans")
-        if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
-            trans = self.transaction # is None unless self.awake() was called
-        if not trans:
-            trans = DummyTransaction()
-            _dummyTrans = True
-        else: _dummyTrans = False
-        write = trans.response().write
-        SL = self._CHEETAH__searchList
-        _filter = self._CHEETAH__currentFilter
-        
-        ########################################
-        ## START - generated method body
-        
-        write(u'''<h1>''')
-        _v = VFFSL(SL,"title",True) # u'$title' on line 7, col 5
-        if _v is not None: write(_filter(_v, rawExpr=u'$title')) # from line 7, col 5.
-        write(u''' ''')
-        _v = VFFSL(SL,"author.fullname",True) # u'$author.fullname' on line 7, col 12
-        if _v is not None: write(_filter(_v, rawExpr=u'$author.fullname')) # from line 7, col 12.
-        write(u'''</h1>
-
-''')
-        if VFFSL(SL,"books",True): # generated from line 9, col 1
-            write(u'''  <form action="/download/" method="POST" style="height: 80%">
-  <table style="width: 100%; height: 90%">
-  <tr>
-  <td>&nbsp;</td>
-  ''')
-            if False:
-                _
-            _ = VFFSL(SL,"getattr",False)(VFFSL(SL,"translations",True), 'ugettext', None) or VFFSL(SL,"translations.gettext",True)
-            for column in VFFSL(SL,"columns",True): # generated from line 15, col 3
-                write(u'''    <td style="text-align: center">''')
-                if False:
-                    _(VFFSL(SL,"column",True))
-                _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"_",False)(VFFSL(SL,"column",True))) # u'$cgi.escape($_($column))' on line 16, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 16, col 36.
-                write(u'''</td>
-''')
-            write(u'''  </tr>
-''')
-            series = None
-            columns1 = VFFSL(SL,"len",False)(VFFSL(SL,"columns",True))+1
-            for book in VFFSL(SL,"books",True): # generated from line 21, col 3
-                if VFFSL(SL,"book.series",True) != VFFSL(SL,"series",True): # generated from line 22, col 3
-                    series = VFFSL(SL,"book.series",True)
-                    write(u'''  <tr>
-  <td colspan="''')
-                    _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 25, col 16
-                    if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 25, col 16.
-                    write(u'''"><b><i>
-''')
-                    if VFFSL(SL,"book.series",True): # generated from line 26, col 3
-                        _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 27, col 1
-                        if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 27, col 1.
-                    else: # generated from line 28, 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 35, col 46
-                if _v is not None: write(_filter(_v, rawExpr=u'$book.id')) # from line 35, col 46.
-                write(u'''"></td>
-''')
-                for column in VFFSL(SL,"columns",True): # generated from line 36, col 3
-                    if VFFSL(SL,"column",True) in ('ser_no', 'size'): # generated from line 37, col 3
-                        style = ' style="text-align: right; width: 5ex"'
-                    else: # generated from line 39, col 3
-                        style = ''
-                    write(u'''  <td''')
-                    _v = VFFSL(SL,"style",True) # u'$style' on line 42, col 6
-                    if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 42, 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 42, col 13
-                    if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 42, col 13.
-                    write(u'''</td>
-''')
-                write(u'''  </tr>
-''')
-            write(u'''  <tr>
-  <td colspan="''')
-            _v = VFFSL(SL,"columns1",True) # u'$columns1' on line 47, col 16
-            if _v is not None: write(_filter(_v, rawExpr=u'$columns1')) # from line 47, 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 51, 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>
-''')
-        
-        ########################################
-        ## END - generated method body
-        
-        return _dummyTrans and trans.response().getvalue() or ""
-        
-
-    def writeBody(self, **KWS):
-
-
-
-        ## CHEETAH: main method generated for this template
-        trans = KWS.get("trans")
-        if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
-            trans = self.transaction # is None unless self.awake() was called
-        if not trans:
-            trans = DummyTransaction()
-            _dummyTrans = True
-        else: _dummyTrans = False
-        write = trans.response().write
-        SL = self._CHEETAH__searchList
-        _filter = self._CHEETAH__currentFilter
-        
-        ########################################
-        ## START - generated method body
-        
-        
-        ########################################
-        ## END - generated method body
-        
-        return _dummyTrans and trans.response().getvalue() or ""
-        
-    ##################################################
-    ## CHEETAH GENERATED ATTRIBUTES
-
-
-    _CHEETAH__instanceInitialized = False
-
-    _CHEETAH_version = __CHEETAH_version__
-
-    _CHEETAH_versionTuple = __CHEETAH_versionTuple__
-
-    _CHEETAH_genTime = __CHEETAH_genTime__
-
-    _CHEETAH_genTimestamp = __CHEETAH_genTimestamp__
-
-    _CHEETAH_src = __CHEETAH_src__
-
-    _CHEETAH_srcLastModified = __CHEETAH_srcLastModified__
-
-    title = 'Список книг автора'
-
-    _mainCheetahMethod_for_books_by_author = 'writeBody'
-
-## END CLASS DEFINITION
-
-if not hasattr(books_by_author, '_initCheetahAttributes'):
-    templateAPIClass = getattr(books_by_author,
-                               '_CHEETAH_templateClass',
-                               Template)
-    templateAPIClass._addCheetahPlumbingCodeToClass(books_by_author)
-
-
-# CHEETAH was developed by Tavis Rudd and Mike Orr
-# with code, advice and input from many other volunteers.
-# For more information visit http://cheetahtemplate.org/
-
-##################################################
-## if run from command line:
-if __name__ == '__main__':
-    from Cheetah.TemplateCmdLineIface import CmdLineIface
-    CmdLineIface(templateObj=books_by_author()).run()
-
-
diff --git a/m_librarian/web/views/books_by_author.tmpl b/m_librarian/web/views/books_by_author.tmpl
deleted file mode 100644 (file)
index 2200913..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#encoding utf-8
-#import cgi
-#from m_librarian.translations import translations
-#extends views.layout
-#attr $title = 'Список книг автора'
-#def body
-<h1>$title $author.fullname</h1>
-
-#if $books
-  <form action="/download/" method="POST" style="height: 80%">
-  <table style="width: 100%; height: 90%">
-  <tr>
-  <td>&nbsp;</td>
-  #set $_ = $getattr($translations, 'ugettext', None) or $translations.gettext
-  #for $column in $columns
-    <td style="text-align: center">$cgi.escape($_($column))</td>
-  #end for
-  </tr>
-  #set $series = None
-  #set $columns1 = $len($columns)+1
-  #for $book in $books
-  #if $book.series != $series
-  #set $series = $book.series
-  <tr>
-  <td colspan="$columns1"><b><i>
-  #if $book.series
-$cgi.escape($series, 1)#slurp
-  #else
-Вне серий#slurp
-  #end if
-  </i></b></td>
-  </tr>
-  #end if
-  <tr>
-  <td><input type=checkbox name=books value="$book.id"></td>
-  #for $column in $columns
-  #if $column in ('ser_no', 'size')
-  #set $style = ' style="text-align: right; width: 5ex"'
-  #else
-  #set $style = ''
-  #end if
-  <td$style>$cgi.escape(unicode($getattr($book, $column) or ''))</td>
-  #end for
-  </tr>
-  #end for
-  <tr>
-  <td colspan="$columns1" style="text-align: center"><input type="submit" value="Скачать"></td>
-  </tr>
-  </table>
-  </form>
-#else
-  <p>Не найдено ни одной книги!</p>
-#end if
-#end def