comparison roundup/cgi/templating.py @ 7021:4e25815961a7

flake8: remove trailing whitespace; blank lines for definitions E305 expected 2 blank lines after class or function definition, found 1 E306 expected 1 blank line before a nested definition, found 0 W291 trailing whitespace
author John Rouillard <rouilj@ieee.org>
date Sun, 09 Oct 2022 17:30:47 -0400
parents 86312ca47ad7
children f4bfc1af5d95
comparison
equal deleted inserted replaced
7020:86312ca47ad7 7021:4e25815961a7
65 65
66 66
67 def _import_markdown2(): 67 def _import_markdown2():
68 try: 68 try:
69 import markdown2, re 69 import markdown2, re
70
70 class Markdown(markdown2.Markdown): 71 class Markdown(markdown2.Markdown):
71 # don't allow disabled protocols in links 72 # don't allow disabled protocols in links
72 _safe_protocols = re.compile('(?!' + ':|'.join([re.escape(s) for s in _disable_url_schemes]) + ':)', re.IGNORECASE) 73 _safe_protocols = re.compile('(?!' + ':|'.join([re.escape(s) for s in _disable_url_schemes]) + ':)', re.IGNORECASE)
73 74
74 def _extras(config): 75 def _extras(config):
176 177
177 values = { 178 values = {
178 'content': escape(content), 179 'content': escape(content),
179 'href': escape_link(link), 180 'href': escape_link(link),
180 'rel': self.rel_value, 181 'rel': self.rel_value,
181 'title': escape(title) if title else '', 182 'title': escape(title) if title else '',
182 } 183 }
183 184
184 if title: 185 if title:
185 return '<a href="%(href)s" rel="%(rel)s" ' \ 186 return '<a href="%(href)s" rel="%(rel)s" ' \
186 'title="%(title)s">%(content)s</a>' % values 187 'title="%(title)s">%(content)s</a>' % values
196 markdown = lambda s, c: mistune.markdown(s, **_options(c)) 197 markdown = lambda s, c: mistune.markdown(s, **_options(c))
197 except ImportError: 198 except ImportError:
198 markdown = None 199 markdown = None
199 200
200 return markdown 201 return markdown
202
201 203
202 markdown = _import_markdown2() or _import_markdown() or _import_mistune() 204 markdown = _import_markdown2() or _import_markdown() or _import_mistune()
203 205
204 # bring in the templating support 206 # bring in the templating support
205 from roundup.cgi import ZTUtils 207 from roundup.cgi import ZTUtils
336 def check(self, name): 338 def check(self, name):
337 for l in self.loaders: 339 for l in self.loaders:
338 if l.check(name): 340 if l.check(name):
339 return True 341 return True
340 342
341 def load(self, name): 343 def load(self, name):
342 for l in self.loaders: 344 for l in self.loaders:
343 if l.check(name): 345 if l.check(name):
344 return l.load(name) 346 return l.load(name)
345 347
346 def __getitem__(self, name): 348 def __getitem__(self, name):
504 l = sorted(self._client.db.classes.keys()) 506 l = sorted(self._client.db.classes.keys())
505 m = [] 507 m = []
506 for item in l: 508 for item in l:
507 m.append(HTMLClass(self._client, item)) 509 m.append(HTMLClass(self._client, item))
508 return m 510 return m
511
509 512
510 num_re = re.compile(r'^-?\d+$') 513 num_re = re.compile(r'^-?\d+$')
511 514
512 515
513 def lookupIds(db, prop, ids, fail_ok=0, num_re=num_re, do_lookup=True): 516 def lookupIds(db, prop, ids, fail_ok=0, num_re=num_re, do_lookup=True):
579 <input required ..> not <input required="required" ...> 582 <input required ..> not <input required="required" ...>
580 The latter is xhtml. Recognize booleans by: 583 The latter is xhtml. Recognize booleans by:
581 value is None 584 value is None
582 Code can use None to indicate a pure boolean. 585 Code can use None to indicate a pure boolean.
583 ''' 586 '''
584 return ' '.join(['%s="%s"'%(k,html_escape(str(v), True)) 587 return ' '.join(['%s="%s"'%(k,html_escape(str(v), True))
585 if v != None else '%s'%(k) 588 if v != None else '%s'%(k)
586 for k,v in sorted(attrs.items())]) 589 for k,v in sorted(attrs.items())])
587 590
588 591
589 def xhtml_cgi_escape_attrs(**attrs): 592 def xhtml_cgi_escape_attrs(**attrs):
2664 l = self._value[:] 2667 l = self._value[:]
2665 l.reverse() 2668 l.reverse()
2666 return self.viewableGenerator(l) 2669 return self.viewableGenerator(l)
2667 2670
2668 def sorted(self, property, reverse=False, NoneFirst=False): 2671 def sorted(self, property, reverse=False, NoneFirst=False):
2669 """ Return this multilink sorted by the given property 2672 """ Return this multilink sorted by the given property
2670 2673
2671 Set Nonefirst to True to sort None/unset property 2674 Set Nonefirst to True to sort None/unset property
2672 before a property with a valid value. 2675 before a property with a valid value.
2673 2676
2674 """ 2677 """
2687 # determine orderprop for property if property is a link or multilink 2690 # determine orderprop for property if property is a link or multilink
2688 prop = self._db.getclass(self._classname).getprops()[property] 2691 prop = self._db.getclass(self._classname).getprops()[property]
2689 if type(prop) in [hyperdb.Link, hyperdb.Multilink]: 2692 if type(prop) in [hyperdb.Link, hyperdb.Multilink]:
2690 orderprop = value[0]._db.getclass(prop.classname).orderprop() 2693 orderprop = value[0]._db.getclass(prop.classname).orderprop()
2691 sort_by_link = True 2694 sort_by_link = True
2692 else: 2695 else:
2693 orderprop = property 2696 orderprop = property
2694 sort_by_link = False 2697 sort_by_link = False
2695 2698
2696 def keyfunc(v): 2699 def keyfunc(v):
2697 # Return tuples made of (group order (int), base python 2700 # Return tuples made of (group order (int), base python
2922 The list being sorted may contain mixed ids and labels. 2925 The list being sorted may contain mixed ids and labels.
2923 """ 2926 """
2924 linkcl = db.getclass(classname) 2927 linkcl = db.getclass(classname)
2925 if sort_on is None: 2928 if sort_on is None:
2926 sort_on = linkcl.orderprop() 2929 sort_on = linkcl.orderprop()
2930
2927 def keyfunc(a): 2931 def keyfunc(a):
2928 if num_re.match(a): 2932 if num_re.match(a):
2929 a = linkcl.get(a, sort_on) 2933 a = linkcl.get(a, sort_on)
2930 # In Python3 we may not compare strings and None 2934 # In Python3 we may not compare strings and None
2931 if a is None: 2935 if a is None:
3218 these elements. This wll prevent the function from creating 3222 these elements. This wll prevent the function from creating
3219 these elements in its output. 3223 these elements in its output.
3220 """ 3224 """
3221 l = [] 3225 l = []
3222 sc = self.special_char 3226 sc = self.special_char
3227
3223 def add(k, v): 3228 def add(k, v):
3224 l.append(self.input(type="hidden", name=k, value=v)) 3229 l.append(self.input(type="hidden", name=k, value=v))
3225 if columns and self.columns: 3230 if columns and self.columns:
3226 add(sc+'columns', ','.join(self.columns)) 3231 add(sc+'columns', ','.join(self.columns))
3227 if sort: 3232 if sort:

Roundup Issue Tracker: http://roundup-tracker.org/