Module lib.htmltemplate.template
Base class of html templates
Expand source code
# Distributed under Pycameresp License
# Copyright (c) 2023 Remi BERTHOLET
""" Base class of html templates """
import tools.logger
class Template:
""" Base class of html templates """
default_spacer = b"mb-3"
def __init__(self, classname, *args, **params):
""" """
self.classname = classname
self.children = []
self.spacer = b""
if len(args) > 0:
children = args[0]
else:
children = params.get("children",[])
if children != []:
self.add_children(children)
def end_init(self, **params):
""" Terminate initialisation"""
if params.get("spacer", None) is None:
self.spacer = Template.default_spacer
def add_children(self, children):
""" Add children of html template in the current instance """
if type(children) == type([]) or type(children) == type((0,)):
for child in children:
self.add_children(child)
else:
self.children.append(children)
async def write(self, file):
""" Write to the file stream the html template (parse also all children) """
try:
# pylint: disable=no-member
await file.write(self.get_begin(self))
for child in self.children:
if isinstance(child, Template):
await child.write(file)
elif child is not None:
if type(child) == type(b""):
await file.write(child)
elif type(child) == type([]) or type(child) == type((0,)):
for item in child:
if item is not None:
await item.write(file)
await file.write(self.get_end(self))
except Exception as err:
await file.write(tools.logger.html_exception(err))
Classes
class Template (classname, *args, **params)-
Base class of html templates
Expand source code
class Template: """ Base class of html templates """ default_spacer = b"mb-3" def __init__(self, classname, *args, **params): """ """ self.classname = classname self.children = [] self.spacer = b"" if len(args) > 0: children = args[0] else: children = params.get("children",[]) if children != []: self.add_children(children) def end_init(self, **params): """ Terminate initialisation""" if params.get("spacer", None) is None: self.spacer = Template.default_spacer def add_children(self, children): """ Add children of html template in the current instance """ if type(children) == type([]) or type(children) == type((0,)): for child in children: self.add_children(child) else: self.children.append(children) async def write(self, file): """ Write to the file stream the html template (parse also all children) """ try: # pylint: disable=no-member await file.write(self.get_begin(self)) for child in self.children: if isinstance(child, Template): await child.write(file) elif child is not None: if type(child) == type(b""): await file.write(child) elif type(child) == type([]) or type(child) == type((0,)): for item in child: if item is not None: await item.write(file) await file.write(self.get_end(self)) except Exception as err: await file.write(tools.logger.html_exception(err))Class variables
var default_spacer
Methods
def add_children(self, children)-
Add children of html template in the current instance
Expand source code
def add_children(self, children): """ Add children of html template in the current instance """ if type(children) == type([]) or type(children) == type((0,)): for child in children: self.add_children(child) else: self.children.append(children) def end_init(self, **params)-
Terminate initialisation
Expand source code
def end_init(self, **params): """ Terminate initialisation""" if params.get("spacer", None) is None: self.spacer = Template.default_spacer async def write(self, file)-
Write to the file stream the html template (parse also all children)
Expand source code
async def write(self, file): """ Write to the file stream the html template (parse also all children) """ try: # pylint: disable=no-member await file.write(self.get_begin(self)) for child in self.children: if isinstance(child, Template): await child.write(file) elif child is not None: if type(child) == type(b""): await file.write(child) elif type(child) == type([]) or type(child) == type((0,)): for item in child: if item is not None: await item.write(file) await file.write(self.get_end(self)) except Exception as err: await file.write(tools.logger.html_exception(err))