picata 0.0.1__py3-none-any.whl → 0.0.2__py3-none-any.whl
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.
- README.md +7 -57
- manage.py +1 -1
- picata/__init__.py +1 -1
- picata/apps.py +6 -6
- picata/blocks.py +3 -2
- picata/helpers/wagtail.py +1 -1
- picata/middleware.py +1 -1
- picata/migrations/0001_initial.py +77 -211
- picata/models.py +6 -5
- picata/settings/base.py +15 -15
- picata/settings/dev.py +4 -2
- picata/templates/picata/base.html +3 -3
- picata/templates/picata/previews/theme_gallery.html +1 -1
- picata/templatetags/absolute_static.py +1 -1
- picata/templatetags/menu_tags.py +26 -12
- picata/transformers.py +1 -1
- picata/typing/__init__.py +1 -1
- picata/typing/wagtail.py +1 -1
- picata/urls.py +2 -2
- picata/views.py +3 -2
- picata/wagtail_hooks.py +1 -1
- picata/wsgi.py +2 -2
- picata-0.0.2.dist-info/METADATA +37 -0
- picata-0.0.2.dist-info/RECORD +73 -0
- picata/migrations/0002_alter_article_content_alter_basicpage_content.py +0 -112
- picata/migrations/0003_alter_article_content_alter_basicpage_content.py +0 -104
- picata/migrations/0004_alter_article_content_alter_basicpage_content.py +0 -105
- picata/migrations/0005_socialsettings.py +0 -48
- picata/migrations/0006_alter_article_content.py +0 -71
- picata/migrations/0007_splitviewpage.py +0 -69
- picata/migrations/0008_alter_splitviewpage_content.py +0 -96
- picata/migrations/0009_alter_splitviewpage_content.py +0 -111
- picata/migrations/0010_alter_splitviewpage_content.py +0 -105
- picata/migrations/0011_alter_splitviewpage_options_and_more.py +0 -113
- picata/migrations/0012_alter_splitviewpage_content.py +0 -109
- picata/migrations/0013_alter_article_content.py +0 -43
- picata/migrations/0014_alter_article_content_alter_article_summary.py +0 -24
- picata/migrations/0015_alter_article_options_article_tagline_and_more.py +0 -28
- picata/migrations/0016_alter_article_options_alter_articletag_options_and_more.py +0 -33
- picata/migrations/0017_articletagrelation_alter_article_tags_and_more.py +0 -35
- picata/migrations/0018_rename_articletag_pagetag_and_more.py +0 -21
- picata/migrations/0019_rename_name_plural_articletype__name_plural.py +0 -18
- picata/migrations/0020_rename__name_plural_articletype__pluralised_name.py +0 -18
- picata/migrations/0021_rename_article_type_article_page_type.py +0 -18
- picata/migrations/0022_homepage.py +0 -28
- picata-0.0.1.dist-info/METADATA +0 -87
- picata-0.0.1.dist-info/RECORD +0 -94
- {picata-0.0.1.dist-info → picata-0.0.2.dist-info}/WHEEL +0 -0
- {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
|
-
|
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"]["
|
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 %}
|
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.
|
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.
|
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.
|
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>
|
picata/templatetags/menu_tags.py
CHANGED
@@ -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
|
-
|
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
|
-
|
40
|
+
top_pages = root_page.get_children().in_menu()
|
35
41
|
if not request.user.is_authenticated:
|
36
|
-
|
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
picata/typing/__init__.py
CHANGED
picata/typing/wagtail.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"""Types for Wagtail.
|
2
2
|
|
3
|
-
NB: This module split the
|
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
|
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
|
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
|
-
|
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
|
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
picata/wsgi.py
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
"""WSGI config for the
|
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", "
|
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
|
-
]
|