]> git.phdru.name Git - m_librarian.git/commitdiff
Refactor(web): Use `#filter WebSafe` instead of `cgi.escape`
authorOleg Broytman <phd@phdru.name>
Tue, 18 Jun 2024 15:50:59 +0000 (18:50 +0300)
committerOleg Broytman <phd@phdru.name>
Tue, 18 Jun 2024 15:54:03 +0000 (18:54 +0300)
[skip ci]

TODO
m_librarian/web/views/list_authors.py
m_librarian/web/views/list_authors.tmpl
m_librarian/web/views/list_books.py
m_librarian/web/views/list_books.tmpl

diff --git a/TODO b/TODO
index f58673935479aa4b4dd56e11186d781709f3b101..ddfc80b92c5bb9be10feb5998aa6eb34d433faa2 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,9 +1,6 @@
 Next release
 ------------
 
-Get rid of ``import cgi``.
-
-
 List of authors, list of books -
 do not select when clicking on column/row titles.
 
index 41fab346bcf06aa5142f2055d3b1b095f7e4e61b..dca1c4090779344699278e1adcc27aed4a0e24d6 100644 (file)
@@ -25,7 +25,6 @@ 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
 from views.search_authors_form import search_authors_form
@@ -36,12 +35,12 @@ VFFSL=valueFromFrameOrSearchList
 VFSL=valueFromSearchList
 VFN=valueForName
 currentTime=time.time
-__CHEETAH_version__ = '3.1.0'
-__CHEETAH_versionTuple__ = (3, 1, 0, 'final', 1)
-__CHEETAH_genTime__ = 1528718535.495412
-__CHEETAH_genTimestamp__ = 'Mon Jun 11 15:02:15 2018'
+__CHEETAH_version__ = '3.3.1'
+__CHEETAH_versionTuple__ = (3, 3, 1, 'final', 0)
+__CHEETAH_genTime__ = 1718725815.054143
+__CHEETAH_genTimestamp__ = 'Tue Jun 18 18:50:15 2024'
 __CHEETAH_src__ = 'list_authors.tmpl'
-__CHEETAH_srcLastModified__ = 'Mon Jun 11 15:02:07 2018'
+__CHEETAH_srcLastModified__ = 'Tue Jun 18 18:50:12 2024'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -74,7 +73,7 @@ class list_authors(layout):
 
 
 
-        ## CHEETAH: generated from #def body at line 6, col 1.
+        ## CHEETAH: generated from #def body at line 5, 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
@@ -91,17 +90,24 @@ class list_authors(layout):
         
         write(u'''<h1>\u041f\u043e\u0438\u0441\u043a \u0430\u0432\u0442\u043e\u0440\u043e\u0432</h1>
 ''')
-        _v = VFFSL(SL,"search_authors_form",False)(searchList=VFFSL(SL,"searchList",True)) # u'$search_authors_form(searchList=$searchList)' on line 9, col 1
-        if _v is not None: write(_filter(_v, rawExpr=u'$search_authors_form(searchList=$searchList)')) # from line 9, col 1.
+        _v = VFFSL(SL,"search_authors_form",False)(searchList=VFFSL(SL,"searchList",True)) # u'$search_authors_form(searchList=$searchList)' on line 8, col 1
+        if _v is not None: write(_filter(_v, rawExpr=u'$search_authors_form(searchList=$searchList)')) # from line 8, col 1.
         write(u'''
 
 <h1>''')
-        _v = VFFSL(SL,"title",True) # u'$title' on line 11, col 5
-        if _v is not None: write(_filter(_v, rawExpr=u'$title')) # from line 11, col 5.
+        _v = VFFSL(SL,"title",True) # u'$title' on line 10, col 5
+        if _v is not None: write(_filter(_v, rawExpr=u'$title')) # from line 10, col 5.
         write(u'''</h1>
 
 ''')
-        if VFFSL(SL,"authors",True): # generated from line 13, col 1
+        if VFFSL(SL,"authors",True): # generated from line 12, col 1
+            _orig_filter_63533534 = _filter
+            filterName = u'WebSafe'
+            if "WebSafe" in self._CHEETAH__filters:
+                _filter = self._CHEETAH__currentFilter = self._CHEETAH__filters[filterName]
+            else:
+                _filter = self._CHEETAH__currentFilter = \
+                       self._CHEETAH__filters[filterName] = getattr(self._CHEETAH__filtersLib, filterName)(self).filter
             write(u'''  <table>
   <tr>
   ''')
@@ -112,8 +118,8 @@ class list_authors(layout):
                 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 18, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 18, col 36.
+                _v = VFFSL(SL,"_",False)(VFFSL(SL,"column",True)) # u'$_($column)' on line 18, col 36
+                if _v is not None: write(_filter(_v, rawExpr=u'$_($column)')) # from line 18, col 36.
                 write(u'''</td>
 ''')
             write(u'''  </tr>
@@ -134,8 +140,8 @@ class list_authors(layout):
                     if _v is not None: write(_filter(_v, rawExpr=u'$author.id')) # from line 29, col 41.
                     write(u'''/">
     ''')
-                    _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(unicode(VFFSL(SL,"getattr",False)(VFFSL(SL,"author",True), VFFSL(SL,"column",True)) or '')) # u"$cgi.escape(unicode($getattr($author, $column) or ''))" on line 30, col 5
-                    if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($author, $column) or ''))")) # from line 30, col 5.
+                    _v = VFFSL(SL,"unicode",False)(VFFSL(SL,"getattr",False)(VFFSL(SL,"author",True), VFFSL(SL,"column",True)) or '') # u"$unicode($getattr($author, $column) or '')" on line 30, col 5
+                    if _v is not None: write(_filter(_v, rawExpr=u"$unicode($getattr($author, $column) or '')")) # from line 30, col 5.
                     write(u'''
     </a></td>
 ''')
@@ -143,7 +149,8 @@ class list_authors(layout):
 ''')
             write(u'''  </table>
 ''')
-        else: # generated from line 36, col 1
+            _filter = self._CHEETAH__currentFilter = _orig_filter_63533534
+        else: # generated from line 37, col 1
             write(u'''  <p>\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0430!</p>
 ''')
         
@@ -211,7 +218,7 @@ if not hasattr(list_authors, '_initCheetahAttributes'):
 
 # 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/
+# For more information visit https://cheetahtemplate.org/
 
 ##################################################
 ## if run from command line:
index bdfd9fddf2abc1a48e1c704f1a1dd44d1321b5a4..a364ebaa203b9d6f54f81f9dfff42026120cef1b 100644 (file)
@@ -1,5 +1,4 @@
 #encoding utf-8
-#import cgi
 #from m_librarian.translations import translations
 #extends views.layout
 #attr $title = 'Список авторов'
@@ -11,11 +10,12 @@ $search_authors_form(searchList=$searchList)
 <h1>$title</h1>
 
 #if $authors
+#filter WebSafe
   <table>
   <tr>
   #set $_ = $getattr($translations, 'ugettext', None) or $translations.gettext
   #for $column in $columns
-    <td style="text-align: center">$cgi.escape($_($column))</td>
+    <td style="text-align: center">$_($column)</td>
   #end for
   </tr>
   #for $author in $authors
@@ -27,12 +27,13 @@ $search_authors_form(searchList=$searchList)
     #set $style = ''
     #end if
     <td$style><a href="/books-by-author/$author.id/">
-    $cgi.escape(unicode($getattr($author, $column) or ''))
+    $unicode($getattr($author, $column) or '')
     </a></td>
   #end for
   </tr>
   #end for
   </table>
+#end filter WebSafe
 #else
   <p>Не найдено ни одного автора!</p>
 #end if
index 346f1252c3b6d8bc452d7afad6527857429c1a40..7a327ed08752b59ff85ef01387b178bab6a7a117 100644 (file)
@@ -25,7 +25,6 @@ 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
 
@@ -35,12 +34,12 @@ VFFSL=valueFromFrameOrSearchList
 VFSL=valueFromSearchList
 VFN=valueForName
 currentTime=time.time
-__CHEETAH_version__ = '3.2.6'
-__CHEETAH_versionTuple__ = (3, 2, 6, 'final', 0)
-__CHEETAH_genTime__ = 1671305495.844598
-__CHEETAH_genTimestamp__ = 'Sat Dec 17 22:31:35 2022'
+__CHEETAH_version__ = '3.3.1'
+__CHEETAH_versionTuple__ = (3, 3, 1, 'final', 0)
+__CHEETAH_genTime__ = 1718725757.733093
+__CHEETAH_genTimestamp__ = 'Tue Jun 18 18:49:17 2024'
 __CHEETAH_src__ = 'list_books.tmpl'
-__CHEETAH_srcLastModified__ = 'Sat Dec 17 22:31:33 2022'
+__CHEETAH_srcLastModified__ = 'Tue Jun 18 18:49:15 2024'
 __CHEETAH_docstring__ = 'Autogenerated by Cheetah: The Python-Powered Template Engine'
 
 if __CHEETAH_versionTuple__ < RequiredCheetahVersionTuple:
@@ -73,7 +72,7 @@ class list_books(layout):
 
 
 
-        ## CHEETAH: generated from #def body at line 6, col 1.
+        ## CHEETAH: generated from #def body at line 5, 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
@@ -89,8 +88,8 @@ class list_books(layout):
         ## 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.
+        _v = VFFSL(SL,"title",True) # u'$title' on line 6, col 5
+        if _v is not None: write(_filter(_v, rawExpr=u'$title')) # from line 6, col 5.
         write(u'''</h1>
 
 <script type="text/javascript" language="Javascript">
@@ -117,7 +116,14 @@ function toggleSeries(name, value) {
 </script>
 
 ''')
-        if VFFSL(SL,"books_by_author",True): # generated from line 32, col 1
+        if VFFSL(SL,"books_by_author",True): # generated from line 31, col 1
+            _orig_filter_17563757 = _filter
+            filterName = u'WebSafe'
+            if "WebSafe" in self._CHEETAH__filters:
+                _filter = self._CHEETAH__currentFilter = self._CHEETAH__filters[filterName]
+            else:
+                _filter = self._CHEETAH__currentFilter = \
+                       self._CHEETAH__filters[filterName] = getattr(self._CHEETAH__filtersLib, filterName)(self).filter
             write(u'''  <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
@@ -131,8 +137,8 @@ function toggleSeries(name, value) {
                 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 40, col 36
-                if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($_($column))')) # from line 40, col 36.
+                _v = VFFSL(SL,"_",False)(VFFSL(SL,"column",True)) # u'$_($column)' on line 40, col 36
+                if _v is not None: write(_filter(_v, rawExpr=u'$_($column)')) # from line 40, col 36.
                 write(u'''</td>
 ''')
             write(u'''  </tr>
@@ -180,8 +186,9 @@ function toggleSeries(name, value) {
                         write(u''' \u2014 <i>
 ''')
                         if VFFSL(SL,"book.series",True): # generated from line 62, col 3
-                            _v = VFN(VFFSL(SL,"cgi",True),"escape",False)(VFFSL(SL,"series",True), 1) # u'$cgi.escape($series, 1)' on line 63, col 1
-                            if _v is not None: write(_filter(_v, rawExpr=u'$cgi.escape($series, 1)')) # from line 63, col 1.
+                            _v = VFFSL(SL,"series",True) # u'$series' on line 63, col 1
+                            if _v is not None: write(_filter(_v, rawExpr=u'$series')) # from line 63, col 1.
+                            write(u''', 1''')
                         else: # generated from line 64, col 3
                             write(u'''\u0412\u043d\u0435 \u0441\u0435\u0440\u0438\u0439''')
                         write(u'''  </i></b></td>
@@ -208,8 +215,8 @@ function toggleSeries(name, value) {
                         _v = VFFSL(SL,"style",True) # u'$style' on line 78, col 6
                         if _v is not None: write(_filter(_v, rawExpr=u'$style')) # from line 78, 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 78, col 13
-                        if _v is not None: write(_filter(_v, rawExpr=u"$cgi.escape(unicode($getattr($book, $column) or ''))")) # from line 78, col 13.
+                        _v = VFFSL(SL,"unicode",False)(VFFSL(SL,"getattr",False)(VFFSL(SL,"book",True), VFFSL(SL,"column",True)) or '') # u"$unicode($getattr($book, $column) or '')" on line 78, col 13
+                        if _v is not None: write(_filter(_v, rawExpr=u"$unicode($getattr($book, $column) or '')")) # from line 78, col 13.
                         write(u'''</td>
 ''')
                     write(u'''  </tr>
@@ -223,7 +230,8 @@ function toggleSeries(name, value) {
   </table>
   </form>
 ''')
-        else: # generated from line 88, col 1
+            _filter = self._CHEETAH__currentFilter = _orig_filter_17563757
+        else: # generated from line 89, 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 3fa406a1a351a92b60f3c8bb4df4f80cf09ea6f7..3127fec203c2bab0096e636335e4ad07c0da1f95 100644 (file)
@@ -1,5 +1,4 @@
 #encoding utf-8
-#import cgi
 #from m_librarian.translations import translations
 #extends views.layout
 #attr $title = 'Список книг'
@@ -30,6 +29,7 @@ function toggleSeries(name, value) {
 </script>
 
 #if $books_by_author
+#filter WebSafe
   <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
   <tr>
@@ -37,7 +37,7 @@ function toggleSeries(name, value) {
   onClick="toggleAll(this.checked)"></td>
   #set $_ = $getattr($translations, 'ugettext', None) or $translations.gettext
   #for $column in $columns
-    <td style="text-align: center">$cgi.escape($_($column))</td>
+    <td style="text-align: center">$_($column)</td>
   #end for
   </tr>
   #set $columns1 = $len($columns)+1
@@ -60,7 +60,7 @@ function toggleSeries(name, value) {
   <td colspan="${columns1-1}"><b>
   $author — <i>
   #if $book.series
-$cgi.escape($series, 1)#slurp
+$series, 1#slurp
   #else
 Вне серий#slurp
   #end if
@@ -75,7 +75,7 @@ $cgi.escape($series, 1)#slurp
   #else
   #set $style = ''
   #end if
-  <td$style>$cgi.escape(unicode($getattr($book, $column) or ''))</td>
+  <td$style>$unicode($getattr($book, $column) or '')</td>
   #end for
   </tr>
     #end for
@@ -85,6 +85,7 @@ $cgi.escape($series, 1)#slurp
   </tr>
   </table>
   </form>
+#end filter WebSafe
 #else
   <p>Не найдено ни одной книги!</p>
 #end if