picata 0.0.1__py3-none-any.whl → 0.0.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. README.md +7 -57
  2. manage.py +1 -1
  3. picata/__init__.py +1 -1
  4. picata/apps.py +6 -6
  5. picata/blocks.py +3 -2
  6. picata/helpers/wagtail.py +1 -1
  7. picata/middleware.py +1 -1
  8. picata/migrations/0001_initial.py +77 -211
  9. picata/models.py +6 -5
  10. picata/settings/base.py +15 -15
  11. picata/settings/dev.py +4 -2
  12. picata/templates/picata/base.html +3 -3
  13. picata/templates/picata/previews/theme_gallery.html +1 -1
  14. picata/templatetags/absolute_static.py +1 -1
  15. picata/templatetags/menu_tags.py +26 -12
  16. picata/transformers.py +1 -1
  17. picata/typing/__init__.py +1 -1
  18. picata/typing/wagtail.py +1 -1
  19. picata/urls.py +2 -2
  20. picata/views.py +3 -2
  21. picata/wagtail_hooks.py +1 -1
  22. picata/wsgi.py +2 -2
  23. picata-0.0.2.dist-info/METADATA +37 -0
  24. picata-0.0.2.dist-info/RECORD +73 -0
  25. picata/migrations/0002_alter_article_content_alter_basicpage_content.py +0 -112
  26. picata/migrations/0003_alter_article_content_alter_basicpage_content.py +0 -104
  27. picata/migrations/0004_alter_article_content_alter_basicpage_content.py +0 -105
  28. picata/migrations/0005_socialsettings.py +0 -48
  29. picata/migrations/0006_alter_article_content.py +0 -71
  30. picata/migrations/0007_splitviewpage.py +0 -69
  31. picata/migrations/0008_alter_splitviewpage_content.py +0 -96
  32. picata/migrations/0009_alter_splitviewpage_content.py +0 -111
  33. picata/migrations/0010_alter_splitviewpage_content.py +0 -105
  34. picata/migrations/0011_alter_splitviewpage_options_and_more.py +0 -113
  35. picata/migrations/0012_alter_splitviewpage_content.py +0 -109
  36. picata/migrations/0013_alter_article_content.py +0 -43
  37. picata/migrations/0014_alter_article_content_alter_article_summary.py +0 -24
  38. picata/migrations/0015_alter_article_options_article_tagline_and_more.py +0 -28
  39. picata/migrations/0016_alter_article_options_alter_articletag_options_and_more.py +0 -33
  40. picata/migrations/0017_articletagrelation_alter_article_tags_and_more.py +0 -35
  41. picata/migrations/0018_rename_articletag_pagetag_and_more.py +0 -21
  42. picata/migrations/0019_rename_name_plural_articletype__name_plural.py +0 -18
  43. picata/migrations/0020_rename__name_plural_articletype__pluralised_name.py +0 -18
  44. picata/migrations/0021_rename_article_type_article_page_type.py +0 -18
  45. picata/migrations/0022_homepage.py +0 -28
  46. picata-0.0.1.dist-info/METADATA +0 -87
  47. picata-0.0.1.dist-info/RECORD +0 -94
  48. {picata-0.0.1.dist-info → picata-0.0.2.dist-info}/WHEEL +0 -0
  49. {picata-0.0.1.dist-info → picata-0.0.2.dist-info}/licenses/LICENSE.md +0 -0
picata/settings/dev.py CHANGED
@@ -31,7 +31,9 @@ ALLOWED_HOSTS += CLASS_C_NETWORK_ADDR
31
31
 
32
32
  if getenv("DJANGO_MANAGEMENT_COMMAND", "").startswith("runserver"):
33
33
  logger.warning(
34
- f"Loading hpk.settings.dev…\nINTERNAL_IPS = {INTERNAL_IPS}\nALLOWED_HOSTS = {ALLOWED_HOSTS}"
34
+ "Loading picata.settings.dev…\n"
35
+ f"INTERNAL_IPS = {INTERNAL_IPS}\n"
36
+ f"ALLOWED_HOSTS = {ALLOWED_HOSTS}"
35
37
  )
36
38
 
37
39
  RUNSERVERPLUS_POLLER_RELOADER_TYPE = "watchdog"
@@ -80,7 +82,7 @@ LOGGING["loggers"]["gunicorn"] = {
80
82
  "propagate": False,
81
83
  }
82
84
 
83
- LOGGING["loggers"]["hpk"]["level"] = "DEBUG"
85
+ LOGGING["loggers"]["picata"]["level"] = "DEBUG"
84
86
 
85
87
  LOGGING["loggers"]["django"]["level"] = "DEBUG"
86
88
  LOGGING["loggers"]["django.db.backends"] = {"level": "INFO"}
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover" />
6
- <title>{% block document_title %}{% if title %}{{ title }} · {% endif %}hpk.io{% endblock %}</title>
6
+ <title>{% block document_title %}{% if title %}{{ title }} · {% endif %}[Example Site]{% endblock %}</title>
7
7
 
8
8
  <style>
9
9
  @font-face { font-family: 'Sacramento'; src: url("{% static 'fonts/Sacramento-Regular.ttf' %}") format("truetype"); font-weight: 400; font-style: normal; }
@@ -25,7 +25,7 @@
25
25
 
26
26
  <meta property="og:title" content="{% block og_title %}Hpk.io{% endblock %}">
27
27
  <meta property="og:description" content="{% block og_description %}Ada Wrights's website - Hpk.io{% endblock %}">
28
- <meta property="og:image" content="{% block og_image %}{% if settings.hpk.SocialSettings.default_social_image %}{{ request.scheme }}://{{ request.get_host }}/{% image_url settings.hpk.SocialSettings.default_social_image 'fill-1200x630' %}{% else %}{% absolute_static 'ada-social-bear.jpg' %}{% endif %}{% endblock %}">
28
+ <meta property="og:image" content="{% block og_image %}{% if settings.picata.SocialSettings.default_social_image %}{{ request.scheme }}://{{ request.get_host }}/{% image_url settings.hpk.SocialSettings.default_social_image 'fill-1200x630' %}{% else %}{% absolute_static 'ada-social-bear.jpg' %}{% endif %}{% endblock %}">
29
29
  <meta property="og:url" content="{{ request.build_absolute_uri }}">
30
30
  <meta property="og:type" content="{% block og_type %}website{% endblock %}">
31
31
 
@@ -35,7 +35,7 @@
35
35
  "@type": "{% block ld_type %}WebPage{% endblock %}",
36
36
  "name": "{{ page.get_social_title }}",
37
37
  "description": "{{ page.get_social_description }}",
38
- "image": "{% block ld_image %}{% if settings.hpk.SocialSettings.default_social_image %}{{ request.scheme }}://{{ request.get_host }}/{% image_url settings.hpk.SocialSettings.default_social_image 'fill-1200x630' %}{% else %}{% absolute_static 'ada-social-bear.jpg' %}{% endif %}{% endblock %}",
38
+ "image": "{% block ld_image %}{% if settings.picata.SocialSettings.default_social_image %}{{ request.scheme }}://{{ request.get_host }}/{% image_url settings.picata.SocialSettings.default_social_image 'fill-1200x630' %}{% else %}{% absolute_static 'ada-social-bear.jpg' %}{% endif %}{% endblock %}",
39
39
  "url": "{{ request.build_absolute_uri }}"
40
40
  }
41
41
  </script>
@@ -5,7 +5,7 @@
5
5
  {% block title %}Theme gallery{% endblock %}
6
6
 
7
7
  {% block article %}
8
- <img src="{% if settings.hpk.SocialSettings.default_social_image %}{% image_url settings.hpk.SocialSettings.default_social_image 'fill-1200x630' %}{% endif %}" width="1200" height="630" />
8
+ <img src="{% if settings.picata.SocialSettings.default_social_image %}{% image_url settings.picata.SocialSettings.default_social_image 'fill-1200x630' %}{% endif %}" width="1200" height="630" />
9
9
  <div class="mx-8 my-8">
10
10
  <div class="grid grid-cols-2 gap-2 md:grid-cols-4">
11
11
  <button class="btn">Default</button>
@@ -3,7 +3,7 @@
3
3
  from django import template
4
4
  from django.templatetags.static import static
5
5
 
6
- from hpk.typing import Context
6
+ from picata.typing import Context
7
7
 
8
8
  register = template.Library()
9
9
 
@@ -3,40 +3,54 @@
3
3
  # NB: Django's meta-class shenanigans over-complicate type hinting when QuerySets get involved.
4
4
  # pyright: reportAttributeAccessIssue=false
5
5
 
6
- from typing import TypedDict
6
+ from typing import TYPE_CHECKING, TypedDict
7
7
 
8
8
  from django import template
9
- from django.http import HttpRequest
10
- from hpk.typing import Context
11
9
  from wagtail.models import Page, Site
12
10
 
11
+ from picata.typing import Context
12
+
13
+ if TYPE_CHECKING:
14
+ from django.http import HttpRequest
15
+
13
16
  register = template.Library()
14
17
 
15
18
 
16
19
  class SiteMenuContext(TypedDict):
17
20
  """Context returned from `render_site_menu` for `site_menu.html`."""
18
21
 
19
- root_page: Page
20
22
  menu_pages: list[Page]
21
- request: HttpRequest
23
+ current_section: Page | None
22
24
 
23
25
 
24
26
  @register.inclusion_tag("picata/tags/site_menu.html", takes_context=True)
25
27
  def render_site_menu(context: Context) -> SiteMenuContext:
26
28
  """Fetch the site root and its child pages for the site menu."""
29
+ current_page: Page | None = context.get("self")
30
+ active_section = None
31
+
27
32
  request: HttpRequest = context["request"]
28
33
  current_site = Site.find_for_request(request)
29
34
  if not current_site:
30
35
  raise ValueError("No Wagtail Site found for the current request.")
31
36
 
37
+ # Get menu pages as a list of pages starting with the root, followed by its children
32
38
  root_page = current_site.root_page.specific
33
39
 
34
- menu_pages = root_page.get_children().in_menu()
40
+ top_pages = root_page.get_children().in_menu()
35
41
  if not request.user.is_authenticated:
36
- menu_pages = menu_pages.live()
42
+ top_pages = top_pages.live()
43
+ top_pages = top_pages.specific()
44
+
45
+ menu_pages = [root_page, *top_pages]
46
+
47
+ # Find which page in the set of menu pages that the current page is a descendant of
48
+ if current_page == root_page:
49
+ active_section = root_page
50
+ else:
51
+ for page in top_pages:
52
+ if current_page and (current_page == page or current_page.is_descendant_of(page)):
53
+ active_section = page
54
+ break
37
55
 
38
- return {
39
- "root_page": root_page,
40
- "menu_pages": menu_pages.specific(),
41
- "request": request,
42
- }
56
+ return {"menu_pages": menu_pages, "current_section": active_section}
picata/transformers.py CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  from lxml import etree
4
4
 
5
- from hpk.helpers import ALPHANUMERIC_REGEX, get_full_text
5
+ from picata.helpers import ALPHANUMERIC_REGEX, get_full_text
6
6
 
7
7
 
8
8
  def add_heading_ids(tree: etree._Element) -> None:
picata/typing/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- """Reusable types for the hpk project."""
1
+ """Reusable types for the Picata project."""
2
2
 
3
3
  from typing import Any, TypedDict
4
4
 
picata/typing/wagtail.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Types for Wagtail.
2
2
 
3
- NB: This module split the hpk.typing module into a package in order to avoid
3
+ NB: This module split the picata.typing module into a package in order to avoid
4
4
  circular imports during program initialisation, with the `from wagtail` imports.
5
5
  """
6
6
 
picata/urls.py CHANGED
@@ -10,7 +10,7 @@ from wagtail.contrib.sitemaps.views import sitemap
10
10
  from wagtail.documents import urls as wagtaildocs_urls
11
11
  from wagtail.images.views.serve import ServeView
12
12
 
13
- from hpk.views import search
13
+ from picata.views import search
14
14
 
15
15
  urlpatterns = [
16
16
  path("django-admin/", admin.site.urls), # Django Admin
@@ -29,7 +29,7 @@ if settings.DEBUG:
29
29
  from django.contrib.staticfiles.urls import staticfiles_urlpatterns
30
30
  from django.views.generic import RedirectView
31
31
 
32
- from hpk.views import debug_shell, preview
32
+ from picata.views import debug_shell, preview
33
33
 
34
34
  # Serve static and media files from development server
35
35
  urlpatterns += staticfiles_urlpatterns()
picata/views.py CHANGED
@@ -8,13 +8,14 @@ from typing import TYPE_CHECKING, NoReturn
8
8
 
9
9
  from django.http import HttpRequest, HttpResponse
10
10
  from django.shortcuts import render
11
- from hpk.helpers.wagtail import (
11
+
12
+ from picata.helpers.wagtail import (
12
13
  filter_pages_by_tags,
13
14
  filter_pages_by_type,
14
15
  page_preview_data,
15
16
  visible_pages_qs,
16
17
  )
17
- from hpk.models import ArticleType
18
+ from picata.models import ArticleType
18
19
 
19
20
  if TYPE_CHECKING:
20
21
  from wagtail.query import PageQuerySet
picata/wagtail_hooks.py CHANGED
@@ -13,7 +13,7 @@ from wagtail import hooks
13
13
  from wagtail.models import Page
14
14
  from wagtail.snippets.views.snippets import SnippetViewSet
15
15
 
16
- from hpk.models import PageTag
16
+ from picata.models import PageTag
17
17
 
18
18
  logger = logging.getLogger(__name__)
19
19
 
picata/wsgi.py CHANGED
@@ -1,4 +1,4 @@
1
- """WSGI config for the hpk project.
1
+ """WSGI config for the Picata project.
2
2
 
3
3
  It exposes the WSGI callable as a module-level variable named ``application``.
4
4
 
@@ -10,6 +10,6 @@ import os
10
10
 
11
11
  from django.core.wsgi import get_wsgi_application
12
12
 
13
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hpk.settings.prod")
13
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "picata.settings.prod")
14
14
 
15
15
  application = get_wsgi_application()
@@ -0,0 +1,37 @@
1
+ Metadata-Version: 2.4
2
+ Name: picata
3
+ Version: 0.0.2
4
+ Summary: Ada's Wagtail-based CMS & blog
5
+ Project-URL: Documentation, https://github.com/hipikat/picata#readme
6
+ Project-URL: Issues, https://github.com/hipikat/picata/issues
7
+ Project-URL: Source, https://github.com/hipikat/picata
8
+ Author-email: Ada Wright <ada@hpk.io>
9
+ License-Expression: MIT
10
+ License-File: LICENSE.md
11
+ Keywords: blog,cms,django,wagtail
12
+ Classifier: Development Status :: 2 - Pre-Alpha
13
+ Classifier: Framework :: Django CMS
14
+ Classifier: Framework :: Wagtail :: 6
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: Implementation :: CPython
18
+ Requires-Python: >=3.13
19
+ Requires-Dist: gunicorn~=23.0.0
20
+ Requires-Dist: lxml~=5.3.0
21
+ Requires-Dist: psutil~=6.1.0
22
+ Requires-Dist: psycopg~=3.2.3
23
+ Requires-Dist: pygments~=2.18.0
24
+ Requires-Dist: python-slugify~=8.0.4
25
+ Requires-Dist: wagtail-modeladmin~=2.1.0
26
+ Requires-Dist: wagtail~=6.2
27
+ Description-Content-Type: text/markdown
28
+
29
+ # Picata
30
+
31
+ **This project is very much pre-alpha**
32
+
33
+ Picata is the CMS & blog application I've forked off from my personal website.
34
+ It's effectively a ton of pre-made Wagtail "stuff" (models, views, templatetags,
35
+ middleware, hooks, etc.), made generic enough that you can include this app
36
+ in your `INSTALLED_APPS` and have a CMS/blog up-and-running without having to
37
+ spend weeks or months tailoring Wagtail to your needs.
@@ -0,0 +1,73 @@
1
+ LICENSE.md,sha256=Bv8sMyZI5NI6DMrfiAvCwIFRLSfJkimLF2KVcUMteKU,1103
2
+ README.md,sha256=AfAF_bV1vYiJSwkGTWpdW6_OO55EgkzRGbW0b8aiLRI,420
3
+ entrypoint.tsx,sha256=Tk6L2rCk0KrE5kaSL0GFuL3S19yG-BsUgvNAGe32uy8,8820
4
+ manage.py,sha256=BkGWS_zb8HTvlrOxDiBaQoahUEJGCoV5ePhX-P6jIaw,426
5
+ pygments.sass,sha256=zbDYpWda3EoGmjoC3JshZy-_CECNf6WU9abYPF8EHms,6369
6
+ styles.sass,sha256=4Jb-Gxn9AP09pZzwLlCGGfeacCyrncpJAOCYcy-dyB4,8486
7
+ components/HelloWorld.tsx,sha256=Kp7gvhGehfrX1mw0jgr2_D6AueFgqgfMYGkyQgvWekg,180
8
+ picata/__init__.py,sha256=ZCIoFQ_z3ias_sP4C77EU2IUJnyv4qR0xUdJ3PIdLLM,48
9
+ picata/apps.py,sha256=r5UQNm2CDP5tq22vQ_j6KuD6AGU3ODkvEQUeRvzJW0k,1259
10
+ picata/blocks.py,sha256=iVNxJM_uWlQIqZA-9Nao4svkG26oK5DQEogK0q_F2Po,5286
11
+ picata/log_utils.py,sha256=BRdB3PqpFx1XAhIyAzIOyQKiqrjbT3PBmkhH6-wAWJg,1555
12
+ picata/middleware.py,sha256=BbAifo--C4VYg1VhU8_qbdDcJUD9zYdbxU_9nqGpMa8,2067
13
+ picata/models.py,sha256=2EDMt5rV7mKmB5D6lNJmY6LhbDZwjtgDQZNlmJ0lKPI,15884
14
+ picata/transformers.py,sha256=CBnbIX3dnFV_gfp4TDTMPA_jGD8V_E4onodxWqbsjyY,2212
15
+ picata/urls.py,sha256=SAbmFKAgrM80LREULczs64hExbwmLOlsflXlo7qjzsc,1834
16
+ picata/validators.py,sha256=X4wdIxbCdmuU-gJv45ptTFB7kHR166jkSQBJiTzP3ZU,1517
17
+ picata/views.py,sha256=N6RYLDOTHAGBv0cYxese3T0gOvI6C99_q_Lv-3zbjrc,2881
18
+ picata/wagtail_hooks.py,sha256=R1YgJwp_ZvYm65b_xvLS8HiBWxflXFXSB4SksbJxW3k,1500
19
+ picata/wsgi.py,sha256=5vKFvebtHzxKb3BRVqps6SEKjWmOecBIkTwf4LqWJ0Q,398
20
+ picata/helpers/__init__.py,sha256=acN445qKCuRVfInCEyCtx5W1BggloOSrawzdQ-c9m7s,2427
21
+ picata/helpers/wagtail.py,sha256=ZJUqA31PBIu2lFtwfeEax3xu2UON0Yoa4cca79xdCc0,2111
22
+ picata/migrations/0001_initial.py,sha256=GnAiniyc1E9JsR-dYrEoVimvuIftazhfxEFCGJElKko,11943
23
+ picata/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ picata/settings/__init__.py,sha256=5qI40E9aCWsFanUxAnruZi1wXrad3oAwnusglycfPsk,47
25
+ picata/settings/base.py,sha256=_H0C0nEDK9ayVjPD9t0kWpLz-9jEhF65vfliKl2KCB8,9329
26
+ picata/settings/dev.py,sha256=qaRPpg1LlmNDbk8Kj1CffSxY_2hhgms_PLdRucUTi6Y,2825
27
+ picata/settings/mypy.py,sha256=M-_KU9Qi4twjCHwwuhFbGz9hnIU3TXLH0Sg3XionVNY,148
28
+ picata/settings/prod.py,sha256=iPsqLOdinblT_ayqMW2_GqpNccsXJlWA9-kA015X7Vo,474
29
+ picata/settings/test.py,sha256=H_Wkn_gjsIV0r5HsU-s5HLhW_Oi63VQp4Afj2TIgRhI,244
30
+ picata/static/picata/ada-profile.jpg,sha256=HlewC8MPH_zSr--pUXV5JCEE0emOrn8BIKCQv41WidA,209953
31
+ picata/static/picata/ada-social-bear.jpg,sha256=3jH2kf57boRLS5AD7M-qW-xsBP84didfeM1KN5Xp4tc,128453
32
+ picata/static/picata/favicon.ico,sha256=MJLjMSsDpx9Mjb1v7y8V5oPMX3gLtD4cIDmNAdOgHC8,15406
33
+ picata/static/picata/icons.svg,sha256=LRLgy8bHyZKorDyPxkO2mMdbevKs40sCnhdWoO29pdY,11320
34
+ picata/static/picata/fonts/Bitter-Light.ttf,sha256=JCgJXY06RiEONk2htx2bitpL3zqeGGJ01Z81fwRTwAo,182212
35
+ picata/static/picata/fonts/Bitter-LightItalic.ttf,sha256=A6oI_l_kGd2F9-V0eOYMoydigDPRdahO6aUKMvQXddY,181412
36
+ picata/static/picata/fonts/FiraCode-Light.ttf,sha256=bKCGEsYc36CaTQ_0-STZkfU7PDJXZpyQQDfQD7oJyTQ,188708
37
+ picata/static/picata/fonts/FiraCode-SemiBold.ttf,sha256=BsEuLjCqZkqwFH0_iBxrWH1hrdhDZa9cNM61DkA5hiE,188848
38
+ picata/static/picata/fonts/Sacramento-Regular.ttf,sha256=pbneZ75FSoJrRthYUS4y7sjDAxK-tMT4ZK7iOQQU6cU,64808
39
+ picata/static/picata/fonts/ZillaSlab-Bold.ttf,sha256=7Fo-wbzMoTThzw3ivb2PiLNcB1atOZdGClX22mwHu_Q,248052
40
+ picata/static/picata/fonts/ZillaSlab-BoldItalic.ttf,sha256=xra8p0e0zYZ5gyu5w6BeR8fnOJbZkeoIRFZuRm-FpEI,255272
41
+ picata/static/picata/fonts/ZillaSlab-Light.ttf,sha256=x9c6KiQ-iPpyqCDb2yYgDqi0GW-DNM8YIyTXqehumJ8,239836
42
+ picata/static/picata/fonts/ZillaSlab-LightItalic.ttf,sha256=8pgf5nlQb5DBqfaNKDj2P7iDMRwaW80YjaC3hXb72PA,245200
43
+ picata/static/picata/fonts/ZillaSlabHighlight-Bold.ttf,sha256=MbNNCVxe1Kt-j8rJpognUmTZrh9R9je-35MgwoeL7eU,245180
44
+ picata/templates/picata/3_column.html,sha256=4SYfqTbmAtYICEulpx1RWocBCQUUn32EnZJrcxfVWwA,790
45
+ picata/templates/picata/404.html,sha256=4q8kKGGHWDk9Z8ThW2rP70T3SQrGNGRf153pvYcV7VE,230
46
+ picata/templates/picata/500.html,sha256=1xvvK2uoiZKkc2EuVVnbfg69KmrCJUdplR0vvFtWvKo,369
47
+ picata/templates/picata/_post_list.html,sha256=JpvNAOGmupLQIC6lTyjoyNOyRGMUQwOqEvEaZgSPrsM,915
48
+ picata/templates/picata/article.html,sha256=NBwXpicb_oL2xy3FN8_6KJNbrrQD2rTrNIu1ngOietk,794
49
+ picata/templates/picata/base.html,sha256=HUzVThUqYeyeY9GGIapcWAwiBJxJ32mDFQb7Jn5yf94,8157
50
+ picata/templates/picata/basic_page.html,sha256=1FS_xdL6erskk9T-_TP3JWARczVstOLzs2ttvkbPbdk,173
51
+ picata/templates/picata/dl_view.html,sha256=epAV72HR2f0I3GWBEngUtYOQnHSsXs_SsNlhH7u-JbU,494
52
+ picata/templates/picata/home_page.html,sha256=nVDZwlsXfKtdSwQR80e0cHtiX7hf91ws5tYhu_ug_gU,635
53
+ picata/templates/picata/post_listing.html,sha256=3aSWYdPfwvYblE4s7b2P_dOLiiCWcrT1uvXRuDBak5Y,428
54
+ picata/templates/picata/search_results.html,sha256=P5HwdkLX2iQjZFEtD4YOp4Mun17btshjKBw__z6q8Hs,957
55
+ picata/templates/picata/split_view.html,sha256=DqRUKT5wc_-ByibQRZoyDU91omK6TgK7wC3Rp72bbgM,402
56
+ picata/templates/picata/blocks/icon_link_item.html,sha256=t-9LoA00Nv-H031yIL8es89zevbn315jlr5LTiAyM_o,301
57
+ picata/templates/picata/blocks/icon_link_list.html,sha256=7KU-hLOhAdKnoecLcugqWNzO5SgPnN9XfTDs1y60f0c,261
58
+ picata/templates/picata/blocks/icon_link_list_stream.html,sha256=B7yz5Ss_dT_5NIMsVwggnGFGmRgawNQrvnowaJUSUnw,69
59
+ picata/templates/picata/previews/3col.html,sha256=CwnWJpK5dvmVxqhBuu0QSFHWKhZlnc3xEowMQk3ltBo,4473
60
+ picata/templates/picata/previews/dl.html,sha256=ANOqlD3nlj5NF-4sPmya3eo0CNwmxgmUXswmz22Bh30,2095
61
+ picata/templates/picata/previews/split.html,sha256=hqv27u4wKTX8jJiNMazXioyRU9Uajpys_7LVQeI3NtE,2106
62
+ picata/templates/picata/previews/theme_gallery.html,sha256=A3HRSP5mc5FbpN9VXcZxgof-4sGR8Ylv6hXHY6Y_Ydo,8013
63
+ picata/templates/picata/tags/site_menu.html,sha256=Tb_BjV88ZH-nRb76alzSXPVUokPC9O2mVByKmeAgQWA,223
64
+ picata/templatetags/__init__.py,sha256=YNGfxmI00gewcJkkUlH219BHimHD_4p5Lz-zXPvgO-U,47
65
+ picata/templatetags/absolute_static.py,sha256=YpkPQhquvk2dRcnGy4g2yeLEBzRirOaQNs8AlGyM8tc,457
66
+ picata/templatetags/menu_tags.py,sha256=QBv2HNA-phOedijP2YErBkO067oHZUD8Bh80SaGwjdY,1844
67
+ picata/templatetags/stringify.py,sha256=QxStfcCgn29IGinH_bdsZoaiTLL7pz30ObDitlagecs,850
68
+ picata/typing/__init__.py,sha256=7qXco9cqvbveKX0Xprrc8DmgXa3MpkIQXtFsHDe77os,405
69
+ picata/typing/wagtail.py,sha256=V0n9GYYb_CM5ic54lcRtpN6lhN37-QdRzz2mGKm3Cwc,664
70
+ picata-0.0.2.dist-info/METADATA,sha256=Z0T9lYMlMULCxqwNCKz4I3WH1lj4n2kfWtH8MKGCh94,1426
71
+ picata-0.0.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
72
+ picata-0.0.2.dist-info/licenses/LICENSE.md,sha256=Bv8sMyZI5NI6DMrfiAvCwIFRLSfJkimLF2KVcUMteKU,1103
73
+ picata-0.0.2.dist-info/RECORD,,
@@ -1,112 +0,0 @@
1
- # Generated by Django 5.1.4 on 2024-12-19 22:18
2
-
3
- import wagtail.fields
4
- from django.db import migrations
5
-
6
-
7
- class Migration(migrations.Migration):
8
- dependencies = [
9
- ("hpk", "0001_initial"),
10
- ]
11
-
12
- operations = [
13
- migrations.AlterField(
14
- model_name="article",
15
- name="content",
16
- field=wagtail.fields.StreamField(
17
- [("section", 5), ("code", 8), ("image", 3)],
18
- blank=True,
19
- block_lookup={
20
- 0: (
21
- "wagtail.blocks.CharBlock",
22
- (),
23
- {"help_text": "Heading for this section.", "required": True},
24
- ),
25
- 1: (
26
- "wagtail.blocks.IntegerBlock",
27
- (),
28
- {
29
- "help_text": "Heading level",
30
- "max_value": 6,
31
- "min_value": 1,
32
- "required": True,
33
- },
34
- ),
35
- 2: (
36
- "wagtail.blocks.RichTextBlock",
37
- (),
38
- {"features": ["bold", "italic", "link", "ul", "ol", "document-link"]},
39
- ),
40
- 3: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
41
- 4: (
42
- "wagtail.blocks.StreamBlock",
43
- [[("rich_text", 2), ("image", 3)]],
44
- {"help_text": "Content blocks for this section.", "required": False},
45
- ),
46
- 5: (
47
- "wagtail.blocks.StructBlock",
48
- [[("heading", 0), ("level", 1), ("content", 4)]],
49
- {},
50
- ),
51
- 6: (
52
- "wagtail.blocks.TextBlock",
53
- (),
54
- {"help_text": "Paste your code here.", "required": True},
55
- ),
56
- 7: (
57
- "wagtail.blocks.ChoiceBlock",
58
- [],
59
- {
60
- "choices": [
61
- ("python", "Python"),
62
- ("javascript", "JavaScript"),
63
- ("html", "HTML"),
64
- ("css", "CSS"),
65
- ("bash", "Bash"),
66
- ("plaintext", "Plain Text"),
67
- ],
68
- "help_text": "Select the language for syntax highlighting.",
69
- "required": False,
70
- },
71
- ),
72
- 8: ("wagtail.blocks.StructBlock", [[("code", 6), ("language", 7)]], {}),
73
- },
74
- help_text="Main content for the article.",
75
- ),
76
- ),
77
- migrations.AlterField(
78
- model_name="basicpage",
79
- name="content",
80
- field=wagtail.fields.StreamField(
81
- [("rich_text", 0), ("code", 3), ("image", 4)],
82
- blank=True,
83
- block_lookup={
84
- 0: ("wagtail.blocks.RichTextBlock", (), {}),
85
- 1: (
86
- "wagtail.blocks.TextBlock",
87
- (),
88
- {"help_text": "Paste your code here.", "required": True},
89
- ),
90
- 2: (
91
- "wagtail.blocks.ChoiceBlock",
92
- [],
93
- {
94
- "choices": [
95
- ("python", "Python"),
96
- ("javascript", "JavaScript"),
97
- ("html", "HTML"),
98
- ("css", "CSS"),
99
- ("bash", "Bash"),
100
- ("plaintext", "Plain Text"),
101
- ],
102
- "help_text": "Select the language for syntax highlighting.",
103
- "required": False,
104
- },
105
- ),
106
- 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
107
- 4: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
108
- },
109
- help_text="Main content for the page.",
110
- ),
111
- ),
112
- ]
@@ -1,104 +0,0 @@
1
- # Generated by Django 5.1.4 on 2024-12-19 22:21
2
-
3
- import wagtail.fields
4
- from django.db import migrations
5
-
6
-
7
- class Migration(migrations.Migration):
8
- dependencies = [
9
- ("hpk", "0002_alter_article_content_alter_basicpage_content"),
10
- ]
11
-
12
- operations = [
13
- migrations.AlterField(
14
- model_name="article",
15
- name="content",
16
- field=wagtail.fields.StreamField(
17
- [("section", 5), ("code", 8), ("image", 3)],
18
- blank=True,
19
- block_lookup={
20
- 0: (
21
- "wagtail.blocks.CharBlock",
22
- (),
23
- {"help_text": "Heading for this section.", "required": True},
24
- ),
25
- 1: (
26
- "wagtail.blocks.IntegerBlock",
27
- (),
28
- {
29
- "help_text": "Heading level",
30
- "max_value": 6,
31
- "min_value": 1,
32
- "required": True,
33
- },
34
- ),
35
- 2: (
36
- "wagtail.blocks.RichTextBlock",
37
- (),
38
- {"features": ["bold", "italic", "link", "ul", "ol", "document-link"]},
39
- ),
40
- 3: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
41
- 4: (
42
- "wagtail.blocks.StreamBlock",
43
- [[("rich_text", 2), ("image", 3)]],
44
- {"help_text": "Content blocks for this section.", "required": False},
45
- ),
46
- 5: (
47
- "wagtail.blocks.StructBlock",
48
- [[("heading", 0), ("level", 1), ("content", 4)]],
49
- {},
50
- ),
51
- 6: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
52
- 7: (
53
- "wagtail.blocks.ChoiceBlock",
54
- [],
55
- {
56
- "choices": [
57
- ("python", "Python"),
58
- ("javascript", "JavaScript"),
59
- ("html", "HTML"),
60
- ("css", "CSS"),
61
- ("bash", "Bash"),
62
- ("plaintext", "Plain Text"),
63
- ],
64
- "help_text": "Select the language for syntax highlighting.",
65
- "required": False,
66
- },
67
- ),
68
- 8: ("wagtail.blocks.StructBlock", [[("code", 6), ("language", 7)]], {}),
69
- },
70
- help_text="Main content for the article.",
71
- ),
72
- ),
73
- migrations.AlterField(
74
- model_name="basicpage",
75
- name="content",
76
- field=wagtail.fields.StreamField(
77
- [("rich_text", 0), ("code", 3), ("image", 4)],
78
- blank=True,
79
- block_lookup={
80
- 0: ("wagtail.blocks.RichTextBlock", (), {}),
81
- 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
82
- 2: (
83
- "wagtail.blocks.ChoiceBlock",
84
- [],
85
- {
86
- "choices": [
87
- ("python", "Python"),
88
- ("javascript", "JavaScript"),
89
- ("html", "HTML"),
90
- ("css", "CSS"),
91
- ("bash", "Bash"),
92
- ("plaintext", "Plain Text"),
93
- ],
94
- "help_text": "Select the language for syntax highlighting.",
95
- "required": False,
96
- },
97
- ),
98
- 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
99
- 4: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
100
- },
101
- help_text="Main content for the page.",
102
- ),
103
- ),
104
- ]
@@ -1,105 +0,0 @@
1
- # Generated by Django 5.1.4 on 2024-12-19 22:23
2
-
3
- import wagtail.fields
4
- from django.db import migrations
5
-
6
-
7
- class Migration(migrations.Migration):
8
- dependencies = [
9
- ("hpk", "0003_alter_article_content_alter_basicpage_content"),
10
- ]
11
-
12
- operations = [
13
- migrations.AlterField(
14
- model_name="article",
15
- name="content",
16
- field=wagtail.fields.StreamField(
17
- [("section", 5), ("code", 8), ("image", 3)],
18
- blank=True,
19
- block_lookup={
20
- 0: (
21
- "wagtail.blocks.CharBlock",
22
- (),
23
- {
24
- "help_text": 'Heading for this section, included in "page contents".',
25
- "required": True,
26
- },
27
- ),
28
- 1: (
29
- "wagtail.blocks.IntegerBlock",
30
- (),
31
- {
32
- "help_text": "Heading level",
33
- "max_value": 6,
34
- "min_value": 1,
35
- "required": True,
36
- },
37
- ),
38
- 2: (
39
- "wagtail.blocks.RichTextBlock",
40
- (),
41
- {"features": ["bold", "italic", "link", "ul", "ol", "document-link"]},
42
- ),
43
- 3: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
44
- 4: (
45
- "wagtail.blocks.StreamBlock",
46
- [[("rich_text", 2), ("image", 3)]],
47
- {"help_text": None, "required": False},
48
- ),
49
- 5: (
50
- "wagtail.blocks.StructBlock",
51
- [[("heading", 0), ("level", 1), ("content", 4)]],
52
- {},
53
- ),
54
- 6: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
55
- 7: (
56
- "wagtail.blocks.ChoiceBlock",
57
- [],
58
- {
59
- "choices": [
60
- ("python", "Python"),
61
- ("javascript", "JavaScript"),
62
- ("html", "HTML"),
63
- ("css", "CSS"),
64
- ("bash", "Bash"),
65
- ("plaintext", "Plain Text"),
66
- ],
67
- "required": False,
68
- },
69
- ),
70
- 8: ("wagtail.blocks.StructBlock", [[("code", 6), ("language", 7)]], {}),
71
- },
72
- help_text="Main content for the article.",
73
- ),
74
- ),
75
- migrations.AlterField(
76
- model_name="basicpage",
77
- name="content",
78
- field=wagtail.fields.StreamField(
79
- [("rich_text", 0), ("code", 3), ("image", 4)],
80
- blank=True,
81
- block_lookup={
82
- 0: ("wagtail.blocks.RichTextBlock", (), {}),
83
- 1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
84
- 2: (
85
- "wagtail.blocks.ChoiceBlock",
86
- [],
87
- {
88
- "choices": [
89
- ("python", "Python"),
90
- ("javascript", "JavaScript"),
91
- ("html", "HTML"),
92
- ("css", "CSS"),
93
- ("bash", "Bash"),
94
- ("plaintext", "Plain Text"),
95
- ],
96
- "required": False,
97
- },
98
- ),
99
- 3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
100
- 4: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
101
- },
102
- help_text="Main content for the page.",
103
- ),
104
- ),
105
- ]