{ "info": { "author": "Canonical Webteam", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "# TemplateFinder\n\n`TemplateFinder` is an extension of `TemplateView` which attempts to\nload the corresponding templates directly from URLs, without the need to\nwrite a view for each URL.\n\nIt can load HTML templates directly, or parse Markdown files that\ncontain a \"wrapper\\_template\" frontmatter key.\n\n## Usage\n\nTo register the template finder in your Flask app you need to register the template folder in the application config, and specify which routes should be handled by it.\nThe following example will handle everything via the templatefinder:\n\n```\nfrom canonicalwebteam.templatefinder import TemplateFinder\n\nTEMPLATE_FOLDER = \n\napp = Flask(\n template_folder=\"templates\",\n static_folder=\"static\",\n)\napp.config[\"TEMPLATE_FOLDER\"] = \"templates\"\n\ntemplate_finder_view = TemplateFinder.as_view(\"template_finder\")\napp.add_url_rule(\"/\", view_fun c=template_finder_view)\napp.add_url_rule(\"/\", view_func=template_finder_view)\n```\n\n## Template matching\n\nThe templatefinder can be used to automatically map `.html` and `.md` files to url on a website.\nWhen included the finder will search for files at the given url in a specified template directory.\n\nE.g. `localhost/pages/test` will look for the following files, in order:\n\n- `$TEMPLATE_FOLDER/pages/test.html`\n- `$TEMPLATE_FOLDER/pages/test/index.html`\n- `$TEMPLATE_FOLDER/pages/test.md`\n- `$TEMPLATE_FOLDER/pages/test/index.md`\n\n## Markdown parsing\n\nIf the `TemplateFinder` encounters a Markdown file (ending `.md`) it\nwill look for the following keys in [YAML\nfrontmatter](https://jekyllrb.com/docs/front-matter/):\n\n- `wrapper_template` *mandatory*: (e.g.:\n `wrapper_template: includes/markdown-wrapper.html`) A path to an\n HTML template within which to place the parsed markdown content.\n This path must be relative to Flask's `template_folder` root.\n- `context` *optional*: (e.g.:\n `context: {title: \"Welcome\", description: \"A welcome page\"}`) A\n dictionary of extra key / value pairs to pass through to the\n template context.\n- `markdown_includes` *optional*: (e.g.: `markdown_includes: {nav: }`)\n A mapping of key names to template paths pointing to Markdown files\n to include. Each template path will be parsed, the resulting HTML\n will be passed in the template context, under the relevant key.\n Paths must be relative to Flask's `template_folder` root.\n\nHere's an example Markdown file:\n\n``` markdown\n---\nwrapper_template: \"includes/markdown-wrapper.html\"\nmarkdown_includes:\n nav: \"includes/nav.md\"\ncontext:\n title: \"Welcome\"\n description: \"A welcome page\"\n---\n\nWelcome to my website.\n\n## GitHub\n\nI also have [a GitHub page](https://github.com/me).\n```\n\n## Tests\nTests can be run with pytest:\n\n``` bash\npip3 install -r requirements.txt\npython3 -m pytest test\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/canonical-webteam/templatefinder", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "canonicalwebteam.templatefinder", "package_url": "https://pypi.org/project/canonicalwebteam.templatefinder/", "platform": "", "project_url": "https://pypi.org/project/canonicalwebteam.templatefinder/", "project_urls": { "Homepage": "https://github.com/canonical-webteam/templatefinder" }, "release_url": "https://pypi.org/project/canonicalwebteam.templatefinder/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "A module which attempts to load the corresponding templates directly from URLs, without the need to write a view for each URL.", "version": "0.2.2" }, "last_serial": 5791061, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e1c064e7955f9742b39618923825c4a4", "sha256": "38a4099d1ac0088e1a004fe7f95f0d45e5401483d8c317b3c846f064fe1bb53f" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e1c064e7955f9742b39618923825c4a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6542, "upload_time": "2019-06-18T13:55:40", "url": "https://files.pythonhosted.org/packages/55/30/183d431b778baf4fdc286f42b2a83208c0bac7d77d032066e116bf6e442a/canonicalwebteam.templatefinder-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "7728c06693ef0955d43ced407f01d726", "sha256": "103aacc4f6d5d9c5d1872fb5c2aa10afb678c81a4357a2f607c8981513c3b16c" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.1.1.tar.gz", "has_sig": false, "md5_digest": "7728c06693ef0955d43ced407f01d726", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6913, "upload_time": "2019-06-18T14:00:27", "url": "https://files.pythonhosted.org/packages/95/47/1b5e5df7ecce7caa56547ae9819ee55105950ce2e9751725ece30088aadb/canonicalwebteam.templatefinder-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4a7dadb51f4ac55fa10081e6c83e3d43", "sha256": "55621205f5b9e14e1d0d3b95c44fed73e295ec7dd6592e3466e087115fca4036" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4a7dadb51f4ac55fa10081e6c83e3d43", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8061, "upload_time": "2019-07-02T09:40:07", "url": "https://files.pythonhosted.org/packages/88/0f/a9bc3622414fbe5547f4367aec74a83f361d9aaa32524c9213d95594554c/canonicalwebteam.templatefinder-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e5bdfe006177340109a67d9c9ddd1f9", "sha256": "b2cc43beefb20fb6663a89f303ea0c7c12609f338c59e3d46133d012f1b5468a" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0e5bdfe006177340109a67d9c9ddd1f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7032, "upload_time": "2019-07-02T09:40:09", "url": "https://files.pythonhosted.org/packages/60/8e/7e99a4fb84f995a3e960c28970fb50d7ec266ae9eb8f44295571de479fd1/canonicalwebteam.templatefinder-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "4683248ba6c04e53c8042b4de062398e", "sha256": "5658c997c9ca85a5e9ed649f0fa15622c6d39cfc7c23560cc5d96b2aa12a0199" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4683248ba6c04e53c8042b4de062398e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6922, "upload_time": "2019-08-29T15:02:03", "url": "https://files.pythonhosted.org/packages/a1/33/2398f7fffc8dcb36373400730c80718ee6323a51bec3df2945c6f19e76d0/canonicalwebteam.templatefinder-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "0947a01499ccf27d309ae5cded4d89b0", "sha256": "4444bfee97b46b3d6427e15becbb7db070b513bc2581785acbc2b42e14ae0549" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0947a01499ccf27d309ae5cded4d89b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7024, "upload_time": "2019-09-03T16:06:07", "url": "https://files.pythonhosted.org/packages/3c/99/16294e0da94426ea577f373c6a42e02f36b0af6e1d3e886f85a078797966/canonicalwebteam.templatefinder-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3fcff492d25db7f869fcd8a01bb12e91", "sha256": "9b6a488cffaddf167f2dc82bea66637cc88bbbe3b60354885a9bff44a70728f8" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3fcff492d25db7f869fcd8a01bb12e91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7075, "upload_time": "2019-09-06T09:01:45", "url": "https://files.pythonhosted.org/packages/8f/23/99059bc7f0a57ecfd839fe0b3e8890e284b26f91b655543a28058fa25d95/canonicalwebteam.templatefinder-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3fcff492d25db7f869fcd8a01bb12e91", "sha256": "9b6a488cffaddf167f2dc82bea66637cc88bbbe3b60354885a9bff44a70728f8" }, "downloads": -1, "filename": "canonicalwebteam.templatefinder-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3fcff492d25db7f869fcd8a01bb12e91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7075, "upload_time": "2019-09-06T09:01:45", "url": "https://files.pythonhosted.org/packages/8f/23/99059bc7f0a57ecfd839fe0b3e8890e284b26f91b655543a28058fa25d95/canonicalwebteam.templatefinder-0.2.2.tar.gz" } ] }