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
@@ -1,109 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-04 02:55
|
2
|
-
|
3
|
-
import wagtail.fields
|
4
|
-
from django.db import migrations
|
5
|
-
|
6
|
-
|
7
|
-
class Migration(migrations.Migration):
|
8
|
-
dependencies = [
|
9
|
-
("hpk", "0011_alter_splitviewpage_options_and_more"),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.AlterField(
|
14
|
-
model_name="splitviewpage",
|
15
|
-
name="content",
|
16
|
-
field=wagtail.fields.StreamField(
|
17
|
-
[("rich_text", 0), ("code", 3), ("image", 4), ("icon_link_lists", 14)],
|
18
|
-
blank=True,
|
19
|
-
block_lookup={
|
20
|
-
0: ("wagtail.blocks.RichTextBlock", (), {}),
|
21
|
-
1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
|
22
|
-
2: (
|
23
|
-
"wagtail.blocks.ChoiceBlock",
|
24
|
-
[],
|
25
|
-
{
|
26
|
-
"choices": [
|
27
|
-
("python", "Python"),
|
28
|
-
("javascript", "JavaScript"),
|
29
|
-
("html", "HTML"),
|
30
|
-
("css", "CSS"),
|
31
|
-
("bash", "Bash"),
|
32
|
-
("plaintext", "Plain Text"),
|
33
|
-
],
|
34
|
-
"required": False,
|
35
|
-
},
|
36
|
-
),
|
37
|
-
3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
|
38
|
-
4: ("hpk.blocks.WrappedImageChooserBlock", (), {}),
|
39
|
-
5: (
|
40
|
-
"wagtail.blocks.CharBlock",
|
41
|
-
(),
|
42
|
-
{
|
43
|
-
"help_text": "Optional heading for this list (e.g., Social Links).",
|
44
|
-
"required": False,
|
45
|
-
},
|
46
|
-
),
|
47
|
-
6: (
|
48
|
-
"wagtail.blocks.IntegerBlock",
|
49
|
-
(),
|
50
|
-
{
|
51
|
-
"default": 2,
|
52
|
-
"help_text": "Heading level for the list (1-6).",
|
53
|
-
"max_value": 6,
|
54
|
-
"min_value": 1,
|
55
|
-
"required": False,
|
56
|
-
},
|
57
|
-
),
|
58
|
-
7: (
|
59
|
-
"hpk.blocks.HREFBlock",
|
60
|
-
(),
|
61
|
-
{
|
62
|
-
"help_text": "An optional link field",
|
63
|
-
"max_length": 255,
|
64
|
-
"required": False,
|
65
|
-
},
|
66
|
-
),
|
67
|
-
8: (
|
68
|
-
"wagtail.blocks.CharBlock",
|
69
|
-
(),
|
70
|
-
{
|
71
|
-
"help_text": "The title for the list item.",
|
72
|
-
"max_length": 50,
|
73
|
-
"required": True,
|
74
|
-
},
|
75
|
-
),
|
76
|
-
9: (
|
77
|
-
"wagtail.blocks.CharBlock",
|
78
|
-
(),
|
79
|
-
{
|
80
|
-
"help_text": "Id of the icon in the static/icons.svg file.",
|
81
|
-
"max_length": 255,
|
82
|
-
"required": False,
|
83
|
-
},
|
84
|
-
),
|
85
|
-
10: (
|
86
|
-
"wagtail.blocks.StructBlock",
|
87
|
-
[[("href", 7), ("label", 8), ("icon", 9)]],
|
88
|
-
{},
|
89
|
-
),
|
90
|
-
11: ("wagtail.blocks.ListBlock", (10,), {"help_text": "The list of items."}),
|
91
|
-
12: (
|
92
|
-
"wagtail.blocks.StructBlock",
|
93
|
-
[[("heading", 5), ("heading_level", 6), ("items", 11)]],
|
94
|
-
{},
|
95
|
-
),
|
96
|
-
13: (
|
97
|
-
"wagtail.blocks.StreamBlock",
|
98
|
-
[[("link_list", 12)]],
|
99
|
-
{
|
100
|
-
"help_text": "Add one or more heading-and-link-list blocks.",
|
101
|
-
"required": False,
|
102
|
-
},
|
103
|
-
),
|
104
|
-
14: ("wagtail.blocks.StructBlock", [[("lists", 13)]], {}),
|
105
|
-
},
|
106
|
-
help_text="Main content for the split-view page.",
|
107
|
-
),
|
108
|
-
),
|
109
|
-
]
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-08 07:12
|
2
|
-
|
3
|
-
import wagtail.fields
|
4
|
-
from django.db import migrations
|
5
|
-
|
6
|
-
|
7
|
-
class Migration(migrations.Migration):
|
8
|
-
dependencies = [
|
9
|
-
("hpk", "0012_alter_splitviewpage_content"),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.AlterField(
|
14
|
-
model_name="article",
|
15
|
-
name="content",
|
16
|
-
field=wagtail.fields.StreamField(
|
17
|
-
[("section", 0), ("code", 3), ("image", 4)],
|
18
|
-
blank=True,
|
19
|
-
block_lookup={
|
20
|
-
0: ("wagtail.blocks.RichTextBlock", (), {}),
|
21
|
-
1: ("wagtail.blocks.TextBlock", (), {"help_text": None, "required": True}),
|
22
|
-
2: (
|
23
|
-
"wagtail.blocks.ChoiceBlock",
|
24
|
-
[],
|
25
|
-
{
|
26
|
-
"choices": [
|
27
|
-
("python", "Python"),
|
28
|
-
("javascript", "JavaScript"),
|
29
|
-
("html", "HTML"),
|
30
|
-
("css", "CSS"),
|
31
|
-
("bash", "Bash"),
|
32
|
-
("plaintext", "Plain Text"),
|
33
|
-
],
|
34
|
-
"required": False,
|
35
|
-
},
|
36
|
-
),
|
37
|
-
3: ("wagtail.blocks.StructBlock", [[("code", 1), ("language", 2)]], {}),
|
38
|
-
4: ("wagtail.images.blocks.ImageChooserBlock", (), {}),
|
39
|
-
},
|
40
|
-
help_text="Main content for the article.",
|
41
|
-
),
|
42
|
-
),
|
43
|
-
]
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-08 23:41
|
2
|
-
|
3
|
-
import wagtail.fields
|
4
|
-
from django.db import migrations
|
5
|
-
|
6
|
-
|
7
|
-
class Migration(migrations.Migration):
|
8
|
-
|
9
|
-
dependencies = [
|
10
|
-
('hpk', '0013_alter_article_content'),
|
11
|
-
]
|
12
|
-
|
13
|
-
operations = [
|
14
|
-
migrations.AlterField(
|
15
|
-
model_name='article',
|
16
|
-
name='content',
|
17
|
-
field=wagtail.fields.StreamField([('rich_text', 0), ('code', 3), ('image', 4)], blank=True, block_lookup={0: ('wagtail.blocks.RichTextBlock', (), {}), 1: ('wagtail.blocks.TextBlock', (), {'help_text': None, 'required': True}), 2: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('python', 'Python'), ('javascript', 'JavaScript'), ('html', 'HTML'), ('css', 'CSS'), ('bash', 'Bash'), ('plaintext', 'Plain Text')], 'required': False}), 3: ('wagtail.blocks.StructBlock', [[('code', 1), ('language', 2)]], {}), 4: ('wagtail.images.blocks.ImageChooserBlock', (), {})}, help_text='Main content for the article.'),
|
18
|
-
),
|
19
|
-
migrations.AlterField(
|
20
|
-
model_name='article',
|
21
|
-
name='summary',
|
22
|
-
field=wagtail.fields.RichTextField(blank=True, help_text='A summary, to be displayed in previews.'),
|
23
|
-
),
|
24
|
-
]
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-08 23:52
|
2
|
-
|
3
|
-
import wagtail.fields
|
4
|
-
from django.db import migrations, models
|
5
|
-
|
6
|
-
|
7
|
-
class Migration(migrations.Migration):
|
8
|
-
|
9
|
-
dependencies = [
|
10
|
-
('hpk', '0014_alter_article_content_alter_article_summary'),
|
11
|
-
]
|
12
|
-
|
13
|
-
operations = [
|
14
|
-
migrations.AlterModelOptions(
|
15
|
-
name='article',
|
16
|
-
options={'verbose_name': 'article', 'verbose_name_plural': 'articles'},
|
17
|
-
),
|
18
|
-
migrations.AddField(
|
19
|
-
model_name='article',
|
20
|
-
name='tagline',
|
21
|
-
field=models.CharField(blank=True, help_text='A short tagline for the article.'),
|
22
|
-
),
|
23
|
-
migrations.AlterField(
|
24
|
-
model_name='article',
|
25
|
-
name='summary',
|
26
|
-
field=wagtail.fields.RichTextField(blank=True, help_text='A summary to be displayed in previews.'),
|
27
|
-
),
|
28
|
-
]
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-09 00:27
|
2
|
-
|
3
|
-
from django.db import migrations
|
4
|
-
|
5
|
-
|
6
|
-
class Migration(migrations.Migration):
|
7
|
-
|
8
|
-
dependencies = [
|
9
|
-
('hpk', '0015_alter_article_options_article_tagline_and_more'),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.AlterModelOptions(
|
14
|
-
name='article',
|
15
|
-
options={},
|
16
|
-
),
|
17
|
-
migrations.AlterModelOptions(
|
18
|
-
name='articletag',
|
19
|
-
options={},
|
20
|
-
),
|
21
|
-
migrations.AlterModelOptions(
|
22
|
-
name='basicpage',
|
23
|
-
options={},
|
24
|
-
),
|
25
|
-
migrations.AlterModelOptions(
|
26
|
-
name='postgrouppage',
|
27
|
-
options={'verbose_name': 'post listing', 'verbose_name_plural': 'post listings'},
|
28
|
-
),
|
29
|
-
migrations.AlterModelOptions(
|
30
|
-
name='splitviewpage',
|
31
|
-
options={'verbose_name': 'split-view page', 'verbose_name_plural': 'split-view pages'},
|
32
|
-
),
|
33
|
-
]
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-10 02:28
|
2
|
-
|
3
|
-
import django.db.models.deletion
|
4
|
-
import modelcluster.contrib.taggit
|
5
|
-
import modelcluster.fields
|
6
|
-
from django.db import migrations, models
|
7
|
-
|
8
|
-
|
9
|
-
class Migration(migrations.Migration):
|
10
|
-
|
11
|
-
dependencies = [
|
12
|
-
('hpk', '0016_alter_article_options_alter_articletag_options_and_more'),
|
13
|
-
]
|
14
|
-
|
15
|
-
operations = [
|
16
|
-
migrations.CreateModel(
|
17
|
-
name='ArticleTagRelation',
|
18
|
-
fields=[
|
19
|
-
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
20
|
-
('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='tagged_items', to='hpk.article')),
|
21
|
-
('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tagged_items', to='hpk.articletag')),
|
22
|
-
],
|
23
|
-
options={
|
24
|
-
'abstract': False,
|
25
|
-
},
|
26
|
-
),
|
27
|
-
migrations.AlterField(
|
28
|
-
model_name='article',
|
29
|
-
name='tags',
|
30
|
-
field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='Tags for the article.', through='hpk.ArticleTagRelation', to='hpk.ArticleTag', verbose_name='Tags'),
|
31
|
-
),
|
32
|
-
migrations.DeleteModel(
|
33
|
-
name='ArticleTagItem',
|
34
|
-
),
|
35
|
-
]
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.4 on 2025-01-14 01:13
|
2
|
-
|
3
|
-
from django.db import migrations
|
4
|
-
|
5
|
-
|
6
|
-
class Migration(migrations.Migration):
|
7
|
-
|
8
|
-
dependencies = [
|
9
|
-
('hpk', '0017_articletagrelation_alter_article_tags_and_more'),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.RenameModel(
|
14
|
-
old_name='ArticleTag',
|
15
|
-
new_name='PageTag',
|
16
|
-
),
|
17
|
-
migrations.RenameModel(
|
18
|
-
old_name='ArticleTagRelation',
|
19
|
-
new_name='PageTagRelation',
|
20
|
-
),
|
21
|
-
]
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.5 on 2025-01-18 01:31
|
2
|
-
|
3
|
-
from django.db import migrations
|
4
|
-
|
5
|
-
|
6
|
-
class Migration(migrations.Migration):
|
7
|
-
|
8
|
-
dependencies = [
|
9
|
-
('hpk', '0018_rename_articletag_pagetag_and_more'),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.RenameField(
|
14
|
-
model_name='articletype',
|
15
|
-
old_name='name_plural',
|
16
|
-
new_name='_name_plural',
|
17
|
-
),
|
18
|
-
]
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.5 on 2025-01-18 01:34
|
2
|
-
|
3
|
-
from django.db import migrations
|
4
|
-
|
5
|
-
|
6
|
-
class Migration(migrations.Migration):
|
7
|
-
|
8
|
-
dependencies = [
|
9
|
-
('hpk', '0019_rename_name_plural_articletype__name_plural'),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.RenameField(
|
14
|
-
model_name='articletype',
|
15
|
-
old_name='_name_plural',
|
16
|
-
new_name='_Pluralised_name',
|
17
|
-
),
|
18
|
-
]
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.5 on 2025-01-18 03:04
|
2
|
-
|
3
|
-
from django.db import migrations
|
4
|
-
|
5
|
-
|
6
|
-
class Migration(migrations.Migration):
|
7
|
-
|
8
|
-
dependencies = [
|
9
|
-
('hpk', '0020_rename__name_plural_articletype__pluralised_name'),
|
10
|
-
]
|
11
|
-
|
12
|
-
operations = [
|
13
|
-
migrations.RenameField(
|
14
|
-
model_name='article',
|
15
|
-
old_name='article_type',
|
16
|
-
new_name='page_type',
|
17
|
-
),
|
18
|
-
]
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# Generated by Django 5.1.5 on 2025-01-20 04:02
|
2
|
-
|
3
|
-
import django.db.models.deletion
|
4
|
-
import wagtail.fields
|
5
|
-
from django.db import migrations, models
|
6
|
-
|
7
|
-
|
8
|
-
class Migration(migrations.Migration):
|
9
|
-
|
10
|
-
dependencies = [
|
11
|
-
('hpk', '0021_rename_article_type_article_page_type'),
|
12
|
-
('wagtailcore', '0094_alter_page_locale'),
|
13
|
-
]
|
14
|
-
|
15
|
-
operations = [
|
16
|
-
migrations.CreateModel(
|
17
|
-
name='HomePage',
|
18
|
-
fields=[
|
19
|
-
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
20
|
-
('top_content', wagtail.fields.StreamField([('rich_text', 0), ('image', 1), ('icon_link_lists', 11)], blank=True, block_lookup={0: ('wagtail.blocks.RichTextBlock', (), {}), 1: ('hpk.blocks.WrappedImageChooserBlock', (), {}), 2: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional heading for this list (e.g., Social Links).', 'required': False}), 3: ('wagtail.blocks.IntegerBlock', (), {'default': 2, 'help_text': 'Heading level for the list (1-6).', 'max_value': 6, 'min_value': 1, 'required': False}), 4: ('hpk.blocks.HREFBlock', (), {'help_text': 'An optional link field', 'max_length': 255, 'required': False}), 5: ('wagtail.blocks.CharBlock', (), {'help_text': 'The title for the list item.', 'max_length': 50, 'required': True}), 6: ('wagtail.blocks.CharBlock', (), {'help_text': 'Id of the icon in the static/icons.svg file.', 'max_length': 255, 'required': False}), 7: ('wagtail.blocks.StructBlock', [[('href', 4), ('label', 5), ('icon', 6)]], {}), 8: ('wagtail.blocks.ListBlock', (7,), {'help_text': 'The list of items.'}), 9: ('wagtail.blocks.StructBlock', [[('heading', 2), ('heading_level', 3), ('items', 8)]], {}), 10: ('wagtail.blocks.StreamBlock', [[('link_list', 9)]], {'help_text': 'Add one or more heading-and-link-list blocks.', 'required': False}), 11: ('wagtail.blocks.StructBlock', [[('lists', 10)]], {})}, help_text="Content stream above 'Recent posts'")),
|
21
|
-
('bottom_content', wagtail.fields.StreamField([('rich_text', 0), ('image', 1), ('icon_link_lists', 11)], blank=True, block_lookup={0: ('wagtail.blocks.RichTextBlock', (), {}), 1: ('hpk.blocks.WrappedImageChooserBlock', (), {}), 2: ('wagtail.blocks.CharBlock', (), {'help_text': 'Optional heading for this list (e.g., Social Links).', 'required': False}), 3: ('wagtail.blocks.IntegerBlock', (), {'default': 2, 'help_text': 'Heading level for the list (1-6).', 'max_value': 6, 'min_value': 1, 'required': False}), 4: ('hpk.blocks.HREFBlock', (), {'help_text': 'An optional link field', 'max_length': 255, 'required': False}), 5: ('wagtail.blocks.CharBlock', (), {'help_text': 'The title for the list item.', 'max_length': 50, 'required': True}), 6: ('wagtail.blocks.CharBlock', (), {'help_text': 'Id of the icon in the static/icons.svg file.', 'max_length': 255, 'required': False}), 7: ('wagtail.blocks.StructBlock', [[('href', 4), ('label', 5), ('icon', 6)]], {}), 8: ('wagtail.blocks.ListBlock', (7,), {'help_text': 'The list of items.'}), 9: ('wagtail.blocks.StructBlock', [[('heading', 2), ('heading_level', 3), ('items', 8)]], {}), 10: ('wagtail.blocks.StreamBlock', [[('link_list', 9)]], {'help_text': 'Add one or more heading-and-link-list blocks.', 'required': False}), 11: ('wagtail.blocks.StructBlock', [[('lists', 10)]], {})}, help_text="Content stream rendered under 'Recent posts'")),
|
22
|
-
],
|
23
|
-
options={
|
24
|
-
'verbose_name': 'home page',
|
25
|
-
},
|
26
|
-
bases=('wagtailcore.page',),
|
27
|
-
),
|
28
|
-
]
|
picata-0.0.1.dist-info/METADATA
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: picata
|
3
|
-
Version: 0.0.1
|
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
|
-
# Ada's website
|
30
|
-
|
31
|
-
Wherein I set up a little website, and learn a bunch of stuff as I go.
|
32
|
-
|
33
|
-
## What it's made of
|
34
|
-
|
35
|
-
### Inside the box
|
36
|
-
|
37
|
-
- [Wagtail](https://wagtail.org) (on [Django](https://www.djangoproject.com)) is the web framework
|
38
|
-
<!-- - [Tailwind CSS](https://tailwindcss.com) for styling -->
|
39
|
-
|
40
|
-
### Holding things together
|
41
|
-
|
42
|
-
- [UV](https://github.com/astral-sh/uv) for all Python project management
|
43
|
-
- [Just](https://just.systems) as a command runner
|
44
|
-
- [OpenTofu](https://opentofu.org) for DevOps
|
45
|
-
- [Postgres](https://www.postgresql.org) for the database
|
46
|
-
- [Docker](https://www.docker.com) for local development
|
47
|
-
|
48
|
-
## Quickstart
|
49
|
-
|
50
|
-
### Requirements
|
51
|
-
|
52
|
-
- On a Mac:
|
53
|
-
|
54
|
-
```shell
|
55
|
-
brew install colima docker
|
56
|
-
```
|
57
|
-
|
58
|
-
### Run a development server
|
59
|
-
|
60
|
-
```shell
|
61
|
-
just tofu workspace select dev
|
62
|
-
just tofu apply
|
63
|
-
```
|
64
|
-
|
65
|
-
This will spin up a box on DigitalOcean using the settings defined in
|
66
|
-
[infra/variables.tf](infra/variables.tf), and create a DNS A record at
|
67
|
-
(workspace).for.(tld), (i.e. dev.for.hpk.io) pointing to the box. The variables
|
68
|
-
`do_token` and `ssh_fingerprint` should be defined in
|
69
|
-
[infra/secrets.tfvars](infra/secrets.tfvars). Workspace-specific variables are
|
70
|
-
defined in infra/envs/(workspace).tfvars; e.g.
|
71
|
-
[infra/envs/dev.tfvars](infra/envs/dev.tfvars) defines the 'tags' list for the
|
72
|
-
box as `[development]` and sets `cloud_init_config` to point to the
|
73
|
-
[cloud-init](https://cloud-init.io) script
|
74
|
-
[config/cloud-init-dev.yml](config/cloud-init-dev.yml).
|
75
|
-
|
76
|
-
The development cloud-init script will:
|
77
|
-
|
78
|
-
- Install the system packages [`just`](https://just.systems), [`zsh`](https://www.zsh.org),
|
79
|
-
[`gunicorn`](https://gunicorn.org), and `tree`
|
80
|
-
- Create a 'wagtail' user, with UID 1500
|
81
|
-
- Create the 'ada' user, and:
|
82
|
-
- install their SSH public keys,
|
83
|
-
- install their dotfiles,
|
84
|
-
- add them to the 'sudo' and 'wagtail' groups
|
85
|
-
- Install [Node](http://nodejs.org) on the system, from the `TF_VAR_NODE_VERSION`
|
86
|
-
defined in [.env](.env)
|
87
|
-
- Checkout this repository into `/app`, setting the owner and group to 'wagtail'.
|
picata-0.0.1.dist-info/RECORD
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
LICENSE.md,sha256=Bv8sMyZI5NI6DMrfiAvCwIFRLSfJkimLF2KVcUMteKU,1103
|
2
|
-
README.md,sha256=tPe8EjMhr2cMwsf-N-gQcTT-IpyE2kIOnwggeJnSPzM,1990
|
3
|
-
entrypoint.tsx,sha256=Tk6L2rCk0KrE5kaSL0GFuL3S19yG-BsUgvNAGe32uy8,8820
|
4
|
-
manage.py,sha256=v0zbaNjwEksTx39Z9dgoWh8LxZEH1tuCpjLVVmiXBF4,423
|
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=_kL7fTKu02_hXVnOmF1K7llLgpdOeQyAVliL7I5o-Dg,62
|
9
|
-
picata/apps.py,sha256=P1qIVWRACiNUA-TY6aIRvt-MyA-3baG82Z_MEpr2fsw,1241
|
10
|
-
picata/blocks.py,sha256=iPJc4eQN7_J-KGMMw3Iln31I1-tBluqgaUF-xCxq2Mc,5279
|
11
|
-
picata/log_utils.py,sha256=BRdB3PqpFx1XAhIyAzIOyQKiqrjbT3PBmkhH6-wAWJg,1555
|
12
|
-
picata/middleware.py,sha256=ycKEVr2GKGmGFQNqFG4ijBmxFuVK11khtiiAiTsbbsk,2064
|
13
|
-
picata/models.py,sha256=dra7x1pbRrMpFydgER_j7zPEnrP9Dqqy1n3rDR1Jbgc,15868
|
14
|
-
picata/transformers.py,sha256=8VkJJC0Xm8ZMzKxOp07rSnqJA7b-TiL02e_y07Gh5AI,2209
|
15
|
-
picata/urls.py,sha256=kTSLS0-f9YaLmhzgg8mW4Oc9W04eXVf_0TZpEnYdnJo,1828
|
16
|
-
picata/validators.py,sha256=X4wdIxbCdmuU-gJv45ptTFB7kHR166jkSQBJiTzP3ZU,1517
|
17
|
-
picata/views.py,sha256=L_NXtqZogdwP7X1uBIPOB1qnYSNpCCThuI8O7YeS47E,2874
|
18
|
-
picata/wagtail_hooks.py,sha256=Y_50IVpV62TEHtg1h8MN0IDkCWAMTVzv0Hd3eiult9M,1497
|
19
|
-
picata/wsgi.py,sha256=XdUhwbLt-MKyr9he5PRphYrvKadC8yF0glx1xxQpCgE,392
|
20
|
-
picata/helpers/__init__.py,sha256=acN445qKCuRVfInCEyCtx5W1BggloOSrawzdQ-c9m7s,2427
|
21
|
-
picata/helpers/wagtail.py,sha256=p_0qw530UcaIBY3AzeTYY6fOUxmVnC9DaP_0_gByrUw,2108
|
22
|
-
picata/migrations/0001_initial.py,sha256=q15Mjii63qa397O7eXyM-BSgTDzf1MqzKAJn1To_huc,9721
|
23
|
-
picata/migrations/0002_alter_article_content_alter_basicpage_content.py,sha256=WlmmGgbAaBCZvR904W8gAeyxp30fOfi4a0D5Xpiojsk,4490
|
24
|
-
picata/migrations/0003_alter_article_content_alter_basicpage_content.py,sha256=i2KD213JKxzM7Kgxlfufxz405IICBoVFJVeNBZuaRlI,4300
|
25
|
-
picata/migrations/0004_alter_article_content_alter_basicpage_content.py,sha256=sZ_ky-xTZREr43y9Zrh1DaqUS5ZXi4r7ilL_EZf9L_E,4204
|
26
|
-
picata/migrations/0005_socialsettings.py,sha256=flfEf47418UX972SoL0nta2gKjambGFACXpFD_oeY0s,1541
|
27
|
-
picata/migrations/0006_alter_article_content.py,sha256=EVTuWtWf74mpD-YvZEzBEdmwHAixzn4R5PxEABl8n0Q,2690
|
28
|
-
picata/migrations/0007_splitviewpage.py,sha256=KK67Kw4kbxVm56BZfKj58mDajZfsCpLwspAFegKQgNA,2675
|
29
|
-
picata/migrations/0008_alter_splitviewpage_content.py,sha256=Y5aj5rTgclKxAgpPF7wCOxDpyFe4rrVkxa_YsEAoYCc,3829
|
30
|
-
picata/migrations/0009_alter_splitviewpage_content.py,sha256=PPu4Hqtm7PkbQYRB_CzqsS-G3-vkAPncPco8Zrn1IXY,4406
|
31
|
-
picata/migrations/0010_alter_splitviewpage_content.py,sha256=Re61nL4y6zHRGMhxADkqHNDkfoWQ8bHGbZK74uJXatg,4265
|
32
|
-
picata/migrations/0011_alter_splitviewpage_options_and_more.py,sha256=OPtQipM3COYRVf9RaP9G8ec0x3NlyR8wT1er3m11kg8,4527
|
33
|
-
picata/migrations/0012_alter_splitviewpage_content.py,sha256=pPERBPW4uduQ-sGops44p2gavJ2hYh5toZ67hmvjhLo,4357
|
34
|
-
picata/migrations/0013_alter_article_content.py,sha256=zVn-YC5jhXiG_c6hkD_uhAgu1BCdsqA1j1xfgJj5n1U,1571
|
35
|
-
picata/migrations/0014_alter_article_content_alter_article_summary.py,sha256=5RvNPNyjy0dnyOw9RfcuTB8pFlpmg6p3yK8kuR0zgMk,1186
|
36
|
-
picata/migrations/0015_alter_article_options_article_tagline_and_more.py,sha256=8ToGgChYwqSoxo5EgwM8SISbQhFt7yewH-fN3raNE_Y,849
|
37
|
-
picata/migrations/0016_alter_article_options_alter_articletag_options_and_more.py,sha256=yxDQhzCMOZCl3NPEyYnM1Yw1E5HAn4wN_BPV5PYrMxE,917
|
38
|
-
picata/migrations/0017_articletagrelation_alter_article_tags_and_more.py,sha256=3rPB6p0GxwTCvTVQIDKNFBtrf26q99mdmQwoCqpXyM8,1341
|
39
|
-
picata/migrations/0018_rename_articletag_pagetag_and_more.py,sha256=0wFB82uAlJZAA7BD1OVTJIWvY5by8fZss7TIVsVLnnY,485
|
40
|
-
picata/migrations/0019_rename_name_plural_articletype__name_plural.py,sha256=K58-B-V2ld2gJ7OuHnrQchC7zZvLP2Bnss3bQB5oS84,391
|
41
|
-
picata/migrations/0020_rename__name_plural_articletype__pluralised_name.py,sha256=X9zRPk5G6iMwitrr5BTUB9Nk9VqQQ951HfBrQ8_MXD4,405
|
42
|
-
picata/migrations/0021_rename_article_type_article_page_type.py,sha256=DtxWYyke-8RmoFqpW817rtrIzVMSV8wqCpS1e911Nxc,399
|
43
|
-
picata/migrations/0022_homepage.py,sha256=SYpqIlquJzLh4YozTcJVjR_0fW_v9GRrY75bnAUk0vE,3591
|
44
|
-
picata/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
-
picata/settings/__init__.py,sha256=5qI40E9aCWsFanUxAnruZi1wXrad3oAwnusglycfPsk,47
|
46
|
-
picata/settings/base.py,sha256=APK6EyBUu1C3Q8VX8JciKTQX-iZcARm2BMD54LDgAaY,9273
|
47
|
-
picata/settings/dev.py,sha256=6SXFuEH3NTq2L3iWcC49Ky3gxJnPflHE3TtjByzuEOg,2796
|
48
|
-
picata/settings/mypy.py,sha256=M-_KU9Qi4twjCHwwuhFbGz9hnIU3TXLH0Sg3XionVNY,148
|
49
|
-
picata/settings/prod.py,sha256=iPsqLOdinblT_ayqMW2_GqpNccsXJlWA9-kA015X7Vo,474
|
50
|
-
picata/settings/test.py,sha256=H_Wkn_gjsIV0r5HsU-s5HLhW_Oi63VQp4Afj2TIgRhI,244
|
51
|
-
picata/static/picata/ada-profile.jpg,sha256=HlewC8MPH_zSr--pUXV5JCEE0emOrn8BIKCQv41WidA,209953
|
52
|
-
picata/static/picata/ada-social-bear.jpg,sha256=3jH2kf57boRLS5AD7M-qW-xsBP84didfeM1KN5Xp4tc,128453
|
53
|
-
picata/static/picata/favicon.ico,sha256=MJLjMSsDpx9Mjb1v7y8V5oPMX3gLtD4cIDmNAdOgHC8,15406
|
54
|
-
picata/static/picata/icons.svg,sha256=LRLgy8bHyZKorDyPxkO2mMdbevKs40sCnhdWoO29pdY,11320
|
55
|
-
picata/static/picata/fonts/Bitter-Light.ttf,sha256=JCgJXY06RiEONk2htx2bitpL3zqeGGJ01Z81fwRTwAo,182212
|
56
|
-
picata/static/picata/fonts/Bitter-LightItalic.ttf,sha256=A6oI_l_kGd2F9-V0eOYMoydigDPRdahO6aUKMvQXddY,181412
|
57
|
-
picata/static/picata/fonts/FiraCode-Light.ttf,sha256=bKCGEsYc36CaTQ_0-STZkfU7PDJXZpyQQDfQD7oJyTQ,188708
|
58
|
-
picata/static/picata/fonts/FiraCode-SemiBold.ttf,sha256=BsEuLjCqZkqwFH0_iBxrWH1hrdhDZa9cNM61DkA5hiE,188848
|
59
|
-
picata/static/picata/fonts/Sacramento-Regular.ttf,sha256=pbneZ75FSoJrRthYUS4y7sjDAxK-tMT4ZK7iOQQU6cU,64808
|
60
|
-
picata/static/picata/fonts/ZillaSlab-Bold.ttf,sha256=7Fo-wbzMoTThzw3ivb2PiLNcB1atOZdGClX22mwHu_Q,248052
|
61
|
-
picata/static/picata/fonts/ZillaSlab-BoldItalic.ttf,sha256=xra8p0e0zYZ5gyu5w6BeR8fnOJbZkeoIRFZuRm-FpEI,255272
|
62
|
-
picata/static/picata/fonts/ZillaSlab-Light.ttf,sha256=x9c6KiQ-iPpyqCDb2yYgDqi0GW-DNM8YIyTXqehumJ8,239836
|
63
|
-
picata/static/picata/fonts/ZillaSlab-LightItalic.ttf,sha256=8pgf5nlQb5DBqfaNKDj2P7iDMRwaW80YjaC3hXb72PA,245200
|
64
|
-
picata/static/picata/fonts/ZillaSlabHighlight-Bold.ttf,sha256=MbNNCVxe1Kt-j8rJpognUmTZrh9R9je-35MgwoeL7eU,245180
|
65
|
-
picata/templates/picata/3_column.html,sha256=4SYfqTbmAtYICEulpx1RWocBCQUUn32EnZJrcxfVWwA,790
|
66
|
-
picata/templates/picata/404.html,sha256=4q8kKGGHWDk9Z8ThW2rP70T3SQrGNGRf153pvYcV7VE,230
|
67
|
-
picata/templates/picata/500.html,sha256=1xvvK2uoiZKkc2EuVVnbfg69KmrCJUdplR0vvFtWvKo,369
|
68
|
-
picata/templates/picata/_post_list.html,sha256=JpvNAOGmupLQIC6lTyjoyNOyRGMUQwOqEvEaZgSPrsM,915
|
69
|
-
picata/templates/picata/article.html,sha256=NBwXpicb_oL2xy3FN8_6KJNbrrQD2rTrNIu1ngOietk,794
|
70
|
-
picata/templates/picata/base.html,sha256=gE8pChABBlXUYfyQCkUdVZx9tFHS-cnMEWGNeaHGziI,8140
|
71
|
-
picata/templates/picata/basic_page.html,sha256=1FS_xdL6erskk9T-_TP3JWARczVstOLzs2ttvkbPbdk,173
|
72
|
-
picata/templates/picata/dl_view.html,sha256=epAV72HR2f0I3GWBEngUtYOQnHSsXs_SsNlhH7u-JbU,494
|
73
|
-
picata/templates/picata/home_page.html,sha256=nVDZwlsXfKtdSwQR80e0cHtiX7hf91ws5tYhu_ug_gU,635
|
74
|
-
picata/templates/picata/post_listing.html,sha256=3aSWYdPfwvYblE4s7b2P_dOLiiCWcrT1uvXRuDBak5Y,428
|
75
|
-
picata/templates/picata/search_results.html,sha256=P5HwdkLX2iQjZFEtD4YOp4Mun17btshjKBw__z6q8Hs,957
|
76
|
-
picata/templates/picata/split_view.html,sha256=DqRUKT5wc_-ByibQRZoyDU91omK6TgK7wC3Rp72bbgM,402
|
77
|
-
picata/templates/picata/blocks/icon_link_item.html,sha256=t-9LoA00Nv-H031yIL8es89zevbn315jlr5LTiAyM_o,301
|
78
|
-
picata/templates/picata/blocks/icon_link_list.html,sha256=7KU-hLOhAdKnoecLcugqWNzO5SgPnN9XfTDs1y60f0c,261
|
79
|
-
picata/templates/picata/blocks/icon_link_list_stream.html,sha256=B7yz5Ss_dT_5NIMsVwggnGFGmRgawNQrvnowaJUSUnw,69
|
80
|
-
picata/templates/picata/previews/3col.html,sha256=CwnWJpK5dvmVxqhBuu0QSFHWKhZlnc3xEowMQk3ltBo,4473
|
81
|
-
picata/templates/picata/previews/dl.html,sha256=ANOqlD3nlj5NF-4sPmya3eo0CNwmxgmUXswmz22Bh30,2095
|
82
|
-
picata/templates/picata/previews/split.html,sha256=hqv27u4wKTX8jJiNMazXioyRU9Uajpys_7LVQeI3NtE,2106
|
83
|
-
picata/templates/picata/previews/theme_gallery.html,sha256=f10610quPimz6xzpozvpZtdRrTpSP5KFIppuGeOZ308,8007
|
84
|
-
picata/templates/picata/tags/site_menu.html,sha256=Tb_BjV88ZH-nRb76alzSXPVUokPC9O2mVByKmeAgQWA,223
|
85
|
-
picata/templatetags/__init__.py,sha256=YNGfxmI00gewcJkkUlH219BHimHD_4p5Lz-zXPvgO-U,47
|
86
|
-
picata/templatetags/absolute_static.py,sha256=asY9uNFShD5iQCaU-ZjsgXQOJNlmLmkoOvRs2WWhEYE,454
|
87
|
-
picata/templatetags/menu_tags.py,sha256=WvsyNHyuD4oiueedWjqnej2PrAQW0FdlGeEYrYd_xbs,1267
|
88
|
-
picata/templatetags/stringify.py,sha256=QxStfcCgn29IGinH_bdsZoaiTLL7pz30ObDitlagecs,850
|
89
|
-
picata/typing/__init__.py,sha256=Nu2HZtspAQTzxMx6gmRKdDp9DfqmFc5urxfokXp2k-Y,402
|
90
|
-
picata/typing/wagtail.py,sha256=r84cf-8AzaWCMULF4HRjl5wmTFKIxw2DwvhxmIDurjA,661
|
91
|
-
picata-0.0.1.dist-info/METADATA,sha256=CzIkWSGSTfq45DELALkcS2ReZ-sxZ3sJ-vMpyfRWq7M,2996
|
92
|
-
picata-0.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
93
|
-
picata-0.0.1.dist-info/licenses/LICENSE.md,sha256=Bv8sMyZI5NI6DMrfiAvCwIFRLSfJkimLF2KVcUMteKU,1103
|
94
|
-
picata-0.0.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|