Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

90 rindas
2.0 KiB

  1. # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. from frappe.utils.jinja import get_jenv
  5. def resolve_class(classes):
  6. if classes is None:
  7. return ""
  8. if isinstance(classes, str):
  9. return classes
  10. if isinstance(classes, (list, tuple)):
  11. return " ".join([resolve_class(c) for c in classes]).strip()
  12. if isinstance(classes, dict):
  13. return " ".join([classname for classname in classes if classes[classname]]).strip()
  14. return classes
  15. def inspect(var, render=True):
  16. context = {"var": var}
  17. if render:
  18. html = "<pre>{{ var | pprint | e }}</pre>"
  19. else:
  20. return ""
  21. return get_jenv().from_string(html).render(context)
  22. def web_block(template, values=None, **kwargs):
  23. options = {"template": template, "values": values}
  24. options.update(kwargs)
  25. return web_blocks([options])
  26. def web_blocks(blocks):
  27. from frappe import throw, _dict, _
  28. from frappe.website.doctype.web_page.web_page import get_web_blocks_html
  29. web_blocks = []
  30. for block in blocks:
  31. if not block.get("template"):
  32. throw(_("Web Template is not specified"))
  33. doc = _dict(
  34. {
  35. "doctype": "Web Page Block",
  36. "web_template": block["template"],
  37. "web_template_values": block.get("values", {}),
  38. "add_top_padding": 1,
  39. "add_bottom_padding": 1,
  40. "add_container": 1,
  41. "hide_block": 0,
  42. "css_class": "",
  43. }
  44. )
  45. doc.update(block)
  46. web_blocks.append(doc)
  47. out = get_web_blocks_html(web_blocks)
  48. html = out.html
  49. for script in out.scripts:
  50. html += "<script>{}</script>".format(script)
  51. return html
  52. def include_script(path):
  53. path = bundled_asset(path)
  54. return f'<script type="text/javascript" src="{path}"></script>'
  55. def include_style(path):
  56. path = bundled_asset(path)
  57. return f'<link type="text/css" rel="stylesheet" href="{path}">'
  58. def bundled_asset(path):
  59. from frappe.utils import get_assets_json
  60. if path.startswith("/assets") or ".bundle." not in path:
  61. return path
  62. bundled_assets = get_assets_json()
  63. return bundled_assets.get(path) or path