"
def render_paragraph(tag_name:str,value,options,parent,context):
if settings.USE_BOOTSTRAP:
return f"
{value}
"
return f"
{value}
"
def render_image(tag_name:str,value,options,parent,context):
if tag_name not in options:
return ""
if 'alt' in options:
alt=options['alt']
else:
alt=""
if settings.USE_BOOTSTRAP:
classes=["img-fluid","figure-img","rounded"]
fig_classes=["figure","my-1"]
styles=[]
fig_styles=[]
else:
styles=["max-width:100%;"]
classes=[]
fig_classes=[]
fig_styles=[]
if 'width' in options:
_w = options['width']
if _w.endswith('px') or _w.endswith('em') or _w.endswith('rem'):
fig_styles.append(f"width:{_w};")
else:
if _w.endswith('%'):
_w = _w[:-1]
if _w.isdigit():
_w=int(_w)
if _w > 100:
_w = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_w) <= 25:
width = 25
else:
width = ((_w // 25) * 25)
fig_classes.append(f'w-{width}')
else:
fig_styles.append(f"width:{_w}%;")
if 'height' in options:
_h = options['width']
if _h.endswith('px') or _h.endswith('em') or _h.endswith('rem'):
fig_styles.append(f"height:{_h};")
else:
if _h.endswith('%'):
_h= _h[:-1]
if _h.isdigit():
_h=int(_w)
if _h > 100:
_h = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_h) <= 25:
height = 25
else:
height = ((_h // 25) * 25)
if height > 100:
height = 100
fig_classes.append(f'h-{height}')
else:
fig_styles.append(f"height:{_h}%;")
if "position" in options:
pos = options['position']
if settings.USE_BOOTSTRAP:
if pos == "left" or pos=="start":
fig_classes += ["float-start","me-2"]
classes += ["float-start","me-2"]
elif pos == "right" or pos == "end":
fig_classes += ["float-end","ms-2"]
classes += ["float-end","ms-2"]
elif pos == "center":
fig_classes += ["mx-auto","d-block"]
classes += ["mx-auto","d-block"]
if styles:
style=f"style=\"{"".join(styles)}\""
else:
style=""
if fig_styles:
fig_style=f'style="{"".join(fig_styles)}"'
else:
fig_style=""
if settings.USE_BOOTSTRAP:
return f'{ value }'
else:
return f'{value}'
def render_wiki_image(tag_name:str,value,options,parent,context):
if tag_name not in options:
return ""
try:
image = models.Image.objects.get(slug=options[tag_name])
except models.Image.DoesNotExist:
return ""
if settings.USE_BOOTSTRAP:
classes=["img-fluid","figure-img","rounded"]
fig_classes=["figure","my-1"]
styles=[]
fig_styles=[]
else:
styles=["max-width:100%;"]
classes=[]
fig_classes=[]
fig_styles=[]
if 'width' in options:
_w = options['width']
if _w.endswith('px') or _w.endswith('em') or _w.endswith('rem'):
fig_styles.append(f"width:{_w};")
else:
if _w.endswith('%'):
_w = _w[:-1]
if _w.isdigit():
_w=int(_w)
if _w > 100:
_w = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_w) <= 25:
width = 25
else:
width = ((_w // 25) * 25)
fig_classes.append(f'w-{width}')
else:
fig_styles.append(f"width:{_w}%;")
if 'height' in options:
_h = options['width']
if _h.endswith('px') or _h.endswith('em') or _h.endswith('rem'):
fig_styles.append(f"height:{_h};")
else:
if _h.endswith('%'):
_h= _h[:-1]
if _h.isdigit():
_h=int(_w)
if _h > 100:
_h = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_h) <= 25:
height = 25
else:
height = ((_h // 25) * 25)
if height > 100:
height = 100
fig_classes.append(f'h-{height}')
else:
fig_styles.append(f"height:{_h}%;")
if "position" in options:
pos = options['position']
if settings.USE_BOOTSTRAP:
if pos == "left" or pos=="start":
fig_classes += ["float-start","me-2"]
elif pos == "right" or pos == "end":
fig_classes += ["float-end","ms-2"]
elif pos == "center":
fig_classes += ["mx-auto","d-block"]
if styles:
style=f"style=\"{"".join(styles)}\""
else:
style=""
if fig_styles:
fig_style=f'style="{"".join(fig_styles)}"'
else:
fig_style=""
if settings.USE_BOOTSTRAP:
return f'{image.description_html}'
else:
return f'{image.description}'
def render_table(tag_name:str,value,options,parent,context):
if settings.USE_BOOTSTRAP:
classes=["table"]
if "bordered" in options:
if options["bordered"] not in ("0","n","no","false","off"):
classes.append("table-bordered")
if options["bordered"] in ("primary","secondary","info","warning","danger","success","light","dark"):
classes.append(f"border-{options['bordered']}")
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
classes.append(f"table-{options[tag_name]}")
return f"
{value}
"
return f"
{value}
"
def render_table_row(tag_name:str,value,options,parent,context):
classes=[]
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
classes.append(f"table-{options[tag_name]}")
class_attr=f"class=\"{" ".join(classes)}\"" if classes else ""
return f"
{value}
"
def render_table_header(tag_name:str,value,options,parent,context):
extra_attributes=[]
classes=[]
if "colspan" in options:
extra_attributes.append(f"colspan=\"{options['colspan']}\"")
if "rowspan" in options:
extra_attributes.append(f"rowspan=\"{options['rowspan']}\"")
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
classes.append(f"table-{options[tag_name]}")
class_attr=f"class=\"{" ".join(classes)}\"" if classes else ""
return f"
{value}
"
def render_table_data(tag_name:str,value,options,parent,context):
extra_attributes=[]
classes=[]
if "colspan" in options:
extra_attributes.append(f"colspan=\"{options['colspan']}\"")
if "rowspan" in options:
extra_attributes.append(f"rowspan=\"{options['rowspan']}\"")
if settings.USE_BOOTSTRAP:
if tag_name in options:
if options[tag_name] in ("primary","secondary","info","warning","danger","success","light","dark"):
classes.append(f"table-{options[tag_name]}")
class_attr=f"class=\"{" ".join(classes)}\"" if classes else ""
return f"
{value}
"
def render_youtube_video(tag_name:str,value,options,parent,context):
if tag_name not in options:
return ""
if 'alt' in options:
alt=options['alt']
else:
alt=""
if settings.USE_BOOTSTRAP:
styles=[]
classes=["w-100"]
div_classes=["my-1"]
div_styles=[]
else:
styles=["max-width:100%;"]
classes=[]
div_classes=[]
div_styles=[]
if 'width' in options:
_w = options['width']
if _w.endswith('px') or _w.endswith('em') or _w.endswith('rem'):
if settings.USE_BOOTSTRAP:
div_styles.append(f"width:{_w};")
styles.append(f"width:{_w};")
else:
if _w.endswith('%'):
_w = _w[:-1]
if _w.isdigit():
_w=int(_w)
if _w > 100:
_w = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_w) <= 25:
width = 25
else:
width = ((_w // 25) * 25)
div_classes.append(f'w-{width}')
else:
styles.append(f"width:{_w}%;")
if 'height' in options:
_h = options['width']
if _h.endswith('px') or _h.endswith('em') or _h.endswith('rem'):
if settings.USE_BOOTSTRAP:
div_styles.append(f"height:{_h};")
else:
styles.append(f"height:{_h};")
else:
if _h.endswith('%'):
_h= _h[:-1]
if _h.isdigit():
_h=int(_w)
if _h > 100:
_h = 100
if settings.USE_BOOTSTRAP:
if 1 < int(_h) <= 25:
height = 25
else:
height = ((_h // 25) * 25)
if height > 100:
height = 100
div_classes.append(f'h-{height}')
else:
styles.append(f"height:{_h}%;")
if "position" in options:
pos = options['position']
if settings.USE_BOOTSTRAP:
if pos == "left" or pos=="start":
div_classes += ["float-start","me-2"]
#classes += ["float-start","me-2"]
elif pos == "right" or pos == "end":
div_classes += ["float-end","ms-2"]
#classes += ["float-end","ms-2"]
elif pos == "center":
div_classes += ["mx-auto","d-block"]
#classes += ["mx-auto","d-block"]
if styles:
style=f"style=\"{"".join(styles)}\""
else:
style=""
if div_styles:
div_style=f'style="{"".join(div_styles)}"'
else:
div_style=""
if settings.USE_BOOTSTRAP:
return f''
else:
return f''