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.
- 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
|
-
]
|