structables 0.3.4__tar.gz → 0.3.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. {structables-0.3.4 → structables-0.3.6}/.gitignore +1 -0
  2. {structables-0.3.4 → structables-0.3.6}/PKG-INFO +2 -1
  3. {structables-0.3.4 → structables-0.3.6}/pyproject.toml +2 -1
  4. {structables-0.3.4 → structables-0.3.6}/src/structables/config.py +1 -1
  5. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/main.py +24 -1
  6. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/privacypolicy.html +1 -1
  7. {structables-0.3.4 → structables-0.3.6}/.forgejo/workflows/release.yml +0 -0
  8. {structables-0.3.4 → structables-0.3.6}/LICENSE +0 -0
  9. {structables-0.3.4 → structables-0.3.6}/README.md +0 -0
  10. {structables-0.3.4 → structables-0.3.6}/cronjob.txt +0 -0
  11. {structables-0.3.4 → structables-0.3.6}/src/structables/__init__.py +0 -0
  12. {structables-0.3.4 → structables-0.3.6}/src/structables/main.py +0 -0
  13. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/__init__.py +0 -0
  14. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/category.py +0 -0
  15. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/contest.py +0 -0
  16. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/member.py +0 -0
  17. {structables-0.3.4 → structables-0.3.6}/src/structables/routes/proxy.py +0 -0
  18. {structables-0.3.4 → structables-0.3.6}/src/structables/static/css/style.css +0 -0
  19. {structables-0.3.4 → structables-0.3.6}/src/structables/static/dist/css/bootstrap.min.css +0 -0
  20. {structables-0.3.4 → structables-0.3.6}/src/structables/static/dist/css/bootstrap.min.css.map +0 -0
  21. {structables-0.3.4 → structables-0.3.6}/src/structables/static/dist/js/bootstrap.bundle.min.js +0 -0
  22. {structables-0.3.4 → structables-0.3.6}/src/structables/static/dist/js/bootstrap.bundle.min.js.map +0 -0
  23. {structables-0.3.4 → structables-0.3.6}/src/structables/static/img/logo.png +0 -0
  24. {structables-0.3.4 → structables-0.3.6}/src/structables/static/img/logo_lg.png +0 -0
  25. {structables-0.3.4 → structables-0.3.6}/src/structables/static/img/magnifying-glass-solid.svg +0 -0
  26. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/400.html +0 -0
  27. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/404.html +0 -0
  28. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/429.html +0 -0
  29. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/500.html +0 -0
  30. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/archives.html +0 -0
  31. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/article-review.html +0 -0
  32. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/article.html +0 -0
  33. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/base.html +0 -0
  34. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/category.html +0 -0
  35. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/collection.html +0 -0
  36. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/contest.html +0 -0
  37. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/contests.html +0 -0
  38. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/footer.html +0 -0
  39. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/header.html +0 -0
  40. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/iframe.html +0 -0
  41. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/index.html +0 -0
  42. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/member-instructables.html +0 -0
  43. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/member.html +0 -0
  44. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/projects.html +0 -0
  45. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/sitemap.html +0 -0
  46. {structables-0.3.4 → structables-0.3.6}/src/structables/templates/style.html +0 -0
  47. {structables-0.3.4 → structables-0.3.6}/src/structables/utils/data.py +0 -0
  48. {structables-0.3.4 → structables-0.3.6}/src/structables/utils/helpers.py +0 -0
@@ -3,4 +3,5 @@ venv/
3
3
  __pycache__/
4
4
  .vscode
5
5
  privacy.txt
6
+ privacy.md
6
7
  /dist/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: structables
3
- Version: 0.3.4
3
+ Version: 0.3.6
4
4
  Summary: A simple frontend for Instructables
5
5
  Project-URL: Homepage, https://git.private.coffee/privatecoffee/structables
6
6
  Project-URL: Bug Tracker, https://git.private.coffee/privatecoffee/structables/issues
@@ -674,6 +674,7 @@ Classifier: Programming Language :: Python :: 3
674
674
  Requires-Python: >=3.10
675
675
  Requires-Dist: bs4
676
676
  Requires-Dist: flask
677
+ Requires-Dist: markdown2[all]
677
678
  Description-Content-Type: text/markdown
678
679
 
679
680
  <img align="right" src="src/structables/static/img/logo.png">
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "structables"
7
- version = "0.3.4"
7
+ version = "0.3.6"
8
8
  authors = [
9
9
  { name="Private.coffee Team", email="support@private.coffee" },
10
10
  ]
@@ -20,6 +20,7 @@ classifiers = [
20
20
  dependencies = [
21
21
  "flask",
22
22
  "bs4",
23
+ "markdown2[all]",
23
24
  ]
24
25
 
25
26
  [project.scripts]
@@ -6,7 +6,7 @@ class Config:
6
6
  LISTEN_HOST = os.environ.get("STRUCTABLES_LISTEN_HOST", "127.0.0.1")
7
7
  INVIDIOUS = os.environ.get("STRUCTABLES_INVIDIOUS")
8
8
  UNSAFE = os.environ.get("STRUCTABLES_UNSAFE", False)
9
- PRIVACY_FILE = os.environ.get("STRUCTABLES_PRIVACY_FILE", "privacy.txt")
9
+ PRIVACY_FILE = os.environ.get("STRUCTABLES_PRIVACY_FILE")
10
10
 
11
11
  @staticmethod
12
12
  def init_app(app):
@@ -4,6 +4,7 @@ from urllib.error import HTTPError
4
4
  from bs4 import BeautifulSoup
5
5
  from urllib.parse import quote
6
6
  from werkzeug.exceptions import InternalServerError
7
+ from markdown2 import Markdown
7
8
  from traceback import print_exc
8
9
  import pathlib
9
10
  import json
@@ -333,11 +334,33 @@ def init_main_routes(app):
333
334
 
334
335
  @app.route("/privacypolicy/")
335
336
  def privacypolicy():
337
+ """Display the privacy policy.
338
+
339
+ The privacy policy is loaded from the file specified in the
340
+ `STRUCTABLES_PRIVACY_FILE` environment variable. If that variable is
341
+ unset or the file cannot be read, a default message is displayed.
342
+ """
343
+
336
344
  content = "No privacy policy found."
337
345
 
346
+ path = app.config.get("PRIVACY_FILE")
347
+
348
+ if not path:
349
+ if pathlib.Path("privacy.md").exists():
350
+ path = "privacy.md"
351
+
352
+ elif pathlib.Path("privacy.txt").exists():
353
+ path = "privacy.txt"
354
+
338
355
  try:
339
- with (pathlib.Path(__file__).parent / "privacy.txt").open() as f:
356
+ with pathlib.Path(path).open() as f:
340
357
  content = f.read()
358
+
359
+ print(path, content)
360
+
361
+ if path.endswith(".md"):
362
+ content = Markdown().convert(content)
363
+
341
364
  except OSError:
342
365
  pass
343
366
 
@@ -5,6 +5,6 @@
5
5
  <br>
6
6
  <h1 style="font-size:2em;line-height:0em;">Privacy Policy</h1>
7
7
  <br>
8
- <p>{{ content }}</p>
8
+ <p>{{ content|safe }}</p>
9
9
  </center>
10
10
  {% endblock %}
File without changes
File without changes
File without changes