django-mosaic 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/PKG-INFO +1 -1
  2. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/pyproject.toml +1 -1
  3. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/admin.py +1 -1
  4. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/apps.py +1 -1
  5. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/feeds.py +1 -1
  6. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/management/commands/import.py +1 -1
  7. django_mosaic-0.1.1/src/django_mosaic/migrations/0001_initial.py +156 -0
  8. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/models.py +1 -1
  9. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/urls.py +2 -2
  10. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/views.py +1 -1
  11. django_mosaic-0.1.0/src/django_mosaic/migrations/0001_initial_squashed_0008_alter_tag_name_alter_tag_unique_together.py +0 -124
  12. django_mosaic-0.1.0/src/django_mosaic/migrations/0009_alter_post_published_at.py +0 -21
  13. django_mosaic-0.1.0/src/django_mosaic/migrations/0010_alter_post_published_at_alter_post_slug_and_more.py +0 -28
  14. django_mosaic-0.1.0/src/django_mosaic/migrations/0011_remove_post_is_draft_post_is_published_and_more.py +0 -37
  15. django_mosaic-0.1.0/src/django_mosaic/migrations/0012_author_post_author.py +0 -38
  16. django_mosaic-0.1.0/src/django_mosaic/migrations/0013_add_author_to_post.py +0 -26
  17. django_mosaic-0.1.0/src/django_mosaic/migrations/0014_contentimage.py +0 -43
  18. django_mosaic-0.1.0/src/django_mosaic/migrations/0015_contentimage_post.py +0 -22
  19. django_mosaic-0.1.0/src/django_mosaic/migrations/0016_alter_contentimage_image_alter_contentimage_thumb.py +0 -25
  20. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/LICENSE +0 -0
  21. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/README.md +0 -0
  22. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/__init__.py +0 -0
  23. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/management/__init__.py +0 -0
  24. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/management/commands/__init__.py +0 -0
  25. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/migrations/__init__.py +0 -0
  26. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/base.html +0 -0
  27. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/home.html +0 -0
  28. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/post-detail-include.html +0 -0
  29. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/post-detail.html +0 -0
  30. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/post-list.html +0 -0
  31. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/templates/tag-detail.html +0 -0
  32. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/tests/post-1-introduction-to-lorem.md +0 -0
  33. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/tests/post-2-advanced-techniques.md +0 -0
  34. {django_mosaic-0.1.0 → django_mosaic-0.1.1}/src/django_mosaic/tests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: django-mosaic
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: A simple django blogging engine for the indieweb
5
5
  Keywords: django,blog,indieweb
6
6
  Author: j23n
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "django-mosaic"
3
- version = "0.1.0"
3
+ version = "0.1.1"
4
4
  description = "A simple django blogging engine for the indieweb"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -2,7 +2,7 @@ from django.contrib import admin
2
2
  from django.db import models
3
3
  from django import forms
4
4
  from django.utils.html import format_html
5
- from mosaic.models import Post, Tag, ContentImage
5
+ from django_mosaic.models import Post, Tag, ContentImage
6
6
 
7
7
 
8
8
  class ContentImageInlineAdmin(admin.TabularInline):
@@ -2,4 +2,4 @@ from django.apps import AppConfig
2
2
 
3
3
 
4
4
  class BlogConfig(AppConfig):
5
- name = "mosaic"
5
+ name = "django_mosaic"
@@ -1,7 +1,7 @@
1
1
  from django.contrib.syndication.views import Feed
2
2
  from django.conf import settings
3
3
 
4
- from mosaic.models import Post, Namespace
4
+ from django_mosaic.models import Post, Namespace
5
5
 
6
6
 
7
7
  class PostFeed(Feed):
@@ -5,7 +5,7 @@ import logging
5
5
 
6
6
  from django.core.management.base import BaseCommand
7
7
  from django.utils.text import slugify
8
- from mosaic.models import Post, Tag, Namespace
8
+ from django_mosaic.models import Post, Tag, Namespace
9
9
 
10
10
  EXPECTED_KEYWORDS = ["title", "date", "draft"]
11
11
 
@@ -0,0 +1,156 @@
1
+ # Generated by Django 6.0.2 on 2026-02-04 15:48
2
+
3
+ import django.db.models.deletion
4
+ from django.conf import settings
5
+ from django.db import migrations, models
6
+
7
+
8
+ class Migration(migrations.Migration):
9
+
10
+ initial = True
11
+
12
+ dependencies = [
13
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14
+ ]
15
+
16
+ operations = [
17
+ migrations.CreateModel(
18
+ name="Namespace",
19
+ fields=[
20
+ (
21
+ "id",
22
+ models.BigAutoField(
23
+ auto_created=True,
24
+ primary_key=True,
25
+ serialize=False,
26
+ verbose_name="ID",
27
+ ),
28
+ ),
29
+ ("name", models.SlugField(max_length=256, unique=True)),
30
+ ],
31
+ ),
32
+ migrations.CreateModel(
33
+ name="Author",
34
+ fields=[
35
+ (
36
+ "id",
37
+ models.BigAutoField(
38
+ auto_created=True,
39
+ primary_key=True,
40
+ serialize=False,
41
+ verbose_name="ID",
42
+ ),
43
+ ),
44
+ ("h_card", models.JSONField()),
45
+ (
46
+ "user",
47
+ models.OneToOneField(
48
+ on_delete=django.db.models.deletion.CASCADE,
49
+ to=settings.AUTH_USER_MODEL,
50
+ ),
51
+ ),
52
+ ],
53
+ ),
54
+ migrations.CreateModel(
55
+ name="Post",
56
+ fields=[
57
+ (
58
+ "id",
59
+ models.BigAutoField(
60
+ auto_created=True,
61
+ primary_key=True,
62
+ serialize=False,
63
+ verbose_name="ID",
64
+ ),
65
+ ),
66
+ ("title", models.CharField(max_length=512, unique=True)),
67
+ ("content", models.TextField()),
68
+ ("slug", models.SlugField(blank=True, max_length=256, unique=True)),
69
+ ("summary", models.CharField(blank=True, max_length=1024)),
70
+ ("is_published", models.BooleanField(default=False)),
71
+ ("created_at", models.DateTimeField(auto_now_add=True)),
72
+ ("published_at", models.DateTimeField(blank=True, null=True)),
73
+ ("changed_at", models.DateTimeField(auto_now=True)),
74
+ (
75
+ "author",
76
+ models.ForeignKey(
77
+ on_delete=django.db.models.deletion.PROTECT,
78
+ to="django_mosaic.author",
79
+ ),
80
+ ),
81
+ (
82
+ "namespace",
83
+ models.ForeignKey(
84
+ on_delete=django.db.models.deletion.PROTECT,
85
+ to="django_mosaic.namespace",
86
+ ),
87
+ ),
88
+ ],
89
+ options={
90
+ "ordering": ["-published_at"],
91
+ },
92
+ ),
93
+ migrations.CreateModel(
94
+ name="ContentImage",
95
+ fields=[
96
+ (
97
+ "id",
98
+ models.BigAutoField(
99
+ auto_created=True,
100
+ primary_key=True,
101
+ serialize=False,
102
+ verbose_name="ID",
103
+ ),
104
+ ),
105
+ ("image", models.ImageField(upload_to="content/images/")),
106
+ (
107
+ "thumb",
108
+ models.ImageField(
109
+ blank=True,
110
+ editable=False,
111
+ null=True,
112
+ upload_to="content/images/",
113
+ ),
114
+ ),
115
+ ("caption", models.CharField(blank=True, default="", max_length=2048)),
116
+ ("alt", models.CharField(blank=True, default="", max_length=2048)),
117
+ (
118
+ "post",
119
+ models.ForeignKey(
120
+ on_delete=django.db.models.deletion.CASCADE,
121
+ to="django_mosaic.post",
122
+ ),
123
+ ),
124
+ ],
125
+ ),
126
+ migrations.CreateModel(
127
+ name="Tag",
128
+ fields=[
129
+ (
130
+ "id",
131
+ models.BigAutoField(
132
+ auto_created=True,
133
+ primary_key=True,
134
+ serialize=False,
135
+ verbose_name="ID",
136
+ ),
137
+ ),
138
+ ("name", models.CharField(max_length=256)),
139
+ (
140
+ "namespace",
141
+ models.ForeignKey(
142
+ on_delete=django.db.models.deletion.PROTECT,
143
+ to="django_mosaic.namespace",
144
+ ),
145
+ ),
146
+ ],
147
+ options={
148
+ "unique_together": {("name", "namespace")},
149
+ },
150
+ ),
151
+ migrations.AddField(
152
+ model_name="post",
153
+ name="tags",
154
+ field=models.ManyToManyField(blank=True, to="django_mosaic.tag"),
155
+ ),
156
+ ]
@@ -13,7 +13,7 @@ from django.db import models
13
13
  from django.contrib.auth.models import User
14
14
  from django.core.files.base import ContentFile
15
15
 
16
- logger = logging.getLogger("mosaic")
16
+ logger = logging.getLogger("django_mosaic")
17
17
 
18
18
 
19
19
  class Namespace(models.Model):
@@ -3,8 +3,8 @@ from django_magic_authorization.urls import protected_path
3
3
  from django.conf import settings
4
4
  from django.conf.urls.static import static
5
5
 
6
- from mosaic.views import post_list, post_detail, home, about, tag_detail
7
- from mosaic.feeds import PostFeed
6
+ from django_mosaic.views import post_list, post_detail, home, about, tag_detail
7
+ from django_mosaic.feeds import PostFeed
8
8
 
9
9
  mosaic_patterns = [
10
10
  path("tag/<str:name>", tag_detail, name="tag-detail"),
@@ -1,6 +1,6 @@
1
1
  from django.shortcuts import render, get_object_or_404
2
2
  from django.conf import settings
3
- from mosaic.models import Post, Tag
3
+ from django_mosaic.models import Post, Tag
4
4
 
5
5
 
6
6
  def _get_posts(namespace="public"):
@@ -1,124 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-01-22 13:17
2
-
3
- import django.db.models.deletion
4
- import django.utils.timezone
5
- from django.db import migrations, models
6
-
7
-
8
- def add_default_namespace(apps, schema_editor):
9
- Namespace = apps.get_model("mosaic", "Namespace")
10
- Namespace.objects.create(name="public")
11
- Namespace.objects.create(name="private")
12
-
13
-
14
- class Migration(migrations.Migration):
15
-
16
- replaces = [
17
- ("mosaic", "0001_initial"),
18
- ("mosaic", "0002_remove_post_category_alter_post_options_and_more"),
19
- ("mosaic", "0003_post__summary"),
20
- ("mosaic", "0004_alter_post__summary"),
21
- ("mosaic", "0005_tag_is_public"),
22
- (
23
- "mosaic",
24
- "0006_namespace_remove_post__summary_remove_post_is_public_and_more",
25
- ),
26
- ("mosaic", "0007_post_namespace_tag_namespace"),
27
- ("mosaic", "0008_alter_tag_name_alter_tag_unique_together"),
28
- ]
29
-
30
- dependencies = []
31
-
32
- operations = [
33
- migrations.CreateModel(
34
- name="Tag",
35
- fields=[
36
- (
37
- "id",
38
- models.BigAutoField(
39
- auto_created=True,
40
- primary_key=True,
41
- serialize=False,
42
- verbose_name="ID",
43
- ),
44
- ),
45
- ("name", models.CharField(max_length=256, unique=True)),
46
- ],
47
- ),
48
- migrations.CreateModel(
49
- name="Namespace",
50
- fields=[
51
- (
52
- "id",
53
- models.BigAutoField(
54
- auto_created=True,
55
- primary_key=True,
56
- serialize=False,
57
- verbose_name="ID",
58
- ),
59
- ),
60
- ("name", models.SlugField(max_length=256, unique=True)),
61
- ],
62
- ),
63
- migrations.RunPython(
64
- code=add_default_namespace,
65
- ),
66
- migrations.CreateModel(
67
- name="Post",
68
- fields=[
69
- (
70
- "id",
71
- models.BigAutoField(
72
- auto_created=True,
73
- primary_key=True,
74
- serialize=False,
75
- verbose_name="ID",
76
- ),
77
- ),
78
- ("title", models.CharField(max_length=512, unique=True)),
79
- ("content", models.TextField()),
80
- ("slug", models.SlugField(max_length=256, unique=True)),
81
- ("is_draft", models.BooleanField(default=True)),
82
- ("created_at", models.DateTimeField(auto_now_add=True)),
83
- ("changed_at", models.DateTimeField(auto_now=True)),
84
- ("tags", models.ManyToManyField(to="mosaic.tag")),
85
- (
86
- "published_at",
87
- models.DateTimeField(blank=True, default=django.utils.timezone.now),
88
- ),
89
- ("summary", models.CharField(blank=True, max_length=1024)),
90
- ],
91
- options={
92
- "ordering": ["-published_at"],
93
- },
94
- ),
95
- migrations.AddField(
96
- model_name="post",
97
- name="namespace",
98
- field=models.ForeignKey(
99
- default=1,
100
- on_delete=django.db.models.deletion.PROTECT,
101
- to="mosaic.namespace",
102
- ),
103
- preserve_default=False,
104
- ),
105
- migrations.AddField(
106
- model_name="tag",
107
- name="namespace",
108
- field=models.ForeignKey(
109
- default=1,
110
- on_delete=django.db.models.deletion.PROTECT,
111
- to="mosaic.namespace",
112
- ),
113
- preserve_default=False,
114
- ),
115
- migrations.AlterField(
116
- model_name="tag",
117
- name="name",
118
- field=models.CharField(max_length=256),
119
- ),
120
- migrations.AlterUniqueTogether(
121
- name="tag",
122
- unique_together={("name", "namespace")},
123
- ),
124
- ]
@@ -1,21 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-01-22 13:20
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- (
10
- "mosaic",
11
- "0001_initial_squashed_0008_alter_tag_name_alter_tag_unique_together",
12
- ),
13
- ]
14
-
15
- operations = [
16
- migrations.AlterField(
17
- model_name="post",
18
- name="published_at",
19
- field=models.DateTimeField(blank=True),
20
- ),
21
- ]
@@ -1,28 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-01-22 18:00
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- ("mosaic", "0009_alter_post_published_at"),
10
- ]
11
-
12
- operations = [
13
- migrations.AlterField(
14
- model_name="post",
15
- name="published_at",
16
- field=models.DateTimeField(blank=True, null=True),
17
- ),
18
- migrations.AlterField(
19
- model_name="post",
20
- name="slug",
21
- field=models.SlugField(blank=True, max_length=256, unique=True),
22
- ),
23
- migrations.AlterField(
24
- model_name="post",
25
- name="tags",
26
- field=models.ManyToManyField(blank=True, null=True, to="mosaic.tag"),
27
- ),
28
- ]
@@ -1,37 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-01-26 08:51
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- def invert_is_draft(apps, schema):
7
- Post = apps.get_model("mosaic", "Post")
8
- drafts = Post.objects.filter(is_published=True)
9
- public = Post.objects.filter(is_published=False)
10
- drafts.update(is_published=False)
11
- public.update(is_published=True)
12
-
13
-
14
- class Migration(migrations.Migration):
15
-
16
- dependencies = [
17
- ("mosaic", "0010_alter_post_published_at_alter_post_slug_and_more"),
18
- ]
19
-
20
- operations = [
21
- migrations.RenameField(
22
- model_name="post",
23
- old_name="is_draft",
24
- new_name="is_published"
25
- ),
26
- migrations.AlterField(
27
- model_name="post",
28
- name="is_published",
29
- field=models.BooleanField(default=False),
30
- ),
31
- migrations.AlterField(
32
- model_name="post",
33
- name="tags",
34
- field=models.ManyToManyField(blank=True, to="mosaic.tag"),
35
- ),
36
- migrations.RunPython(invert_is_draft),
37
- ]
@@ -1,38 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-02-03 10:48
2
-
3
- import django.db.models.deletion
4
- from django.conf import settings
5
- from django.db import migrations, models
6
-
7
-
8
- class Migration(migrations.Migration):
9
-
10
- dependencies = [
11
- ("mosaic", "0011_remove_post_is_draft_post_is_published_and_more"),
12
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13
- ]
14
-
15
- operations = [
16
- migrations.CreateModel(
17
- name="Author",
18
- fields=[
19
- (
20
- "id",
21
- models.BigAutoField(
22
- auto_created=True,
23
- primary_key=True,
24
- serialize=False,
25
- verbose_name="ID",
26
- ),
27
- ),
28
- ("h_card", models.JSONField()),
29
- (
30
- "user",
31
- models.OneToOneField(
32
- on_delete=django.db.models.deletion.CASCADE,
33
- to=settings.AUTH_USER_MODEL,
34
- ),
35
- ),
36
- ],
37
- ),
38
- ]
@@ -1,26 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-02-03 10:48
2
-
3
- import django.db.models.deletion
4
- from django.conf import settings
5
- from django.db import migrations, models
6
-
7
-
8
- class Migration(migrations.Migration):
9
-
10
- dependencies = [
11
- ("mosaic", "0012_author_post_author"),
12
- migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13
- ]
14
-
15
- operations = [
16
- migrations.AddField(
17
- model_name="post",
18
- name="author",
19
- field=models.ForeignKey(
20
- default=1,
21
- on_delete=django.db.models.deletion.PROTECT,
22
- to="mosaic.author",
23
- ),
24
- preserve_default=False,
25
- ),
26
- ]
@@ -1,43 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-02-03 15:39
2
-
3
- import mosaic.models
4
- from django.db import migrations, models
5
-
6
-
7
- class Migration(migrations.Migration):
8
-
9
- dependencies = [
10
- ("mosaic", "0013_add_author_to_post"),
11
- ]
12
-
13
- operations = [
14
- migrations.CreateModel(
15
- name="ContentImage",
16
- fields=[
17
- (
18
- "id",
19
- models.BigAutoField(
20
- auto_created=True,
21
- primary_key=True,
22
- serialize=False,
23
- verbose_name="ID",
24
- ),
25
- ),
26
- (
27
- "image",
28
- models.ImageField(upload_to="static/images"),
29
- ),
30
- (
31
- "thumb",
32
- models.ImageField(
33
- blank=True,
34
- editable=False,
35
- null=True,
36
- upload_to="static/images",
37
- ),
38
- ),
39
- ("caption", models.CharField(blank=True, default="", max_length=2048)),
40
- ("alt", models.CharField(blank=True, default="", max_length=2048)),
41
- ],
42
- ),
43
- ]
@@ -1,22 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-02-03 15:45
2
-
3
- import django.db.models.deletion
4
- from django.db import migrations, models
5
-
6
-
7
- class Migration(migrations.Migration):
8
-
9
- dependencies = [
10
- ("mosaic", "0014_contentimage"),
11
- ]
12
-
13
- operations = [
14
- migrations.AddField(
15
- model_name="contentimage",
16
- name="post",
17
- field=models.ForeignKey(
18
- default=1, on_delete=django.db.models.deletion.CASCADE, to="mosaic.post"
19
- ),
20
- preserve_default=False,
21
- ),
22
- ]
@@ -1,25 +0,0 @@
1
- # Generated by Django 6.0.1 on 2026-02-03 16:10
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
-
8
- dependencies = [
9
- ("mosaic", "0015_contentimage_post"),
10
- ]
11
-
12
- operations = [
13
- migrations.AlterField(
14
- model_name="contentimage",
15
- name="image",
16
- field=models.ImageField(upload_to="content/images/"),
17
- ),
18
- migrations.AlterField(
19
- model_name="contentimage",
20
- name="thumb",
21
- field=models.ImageField(
22
- blank=True, editable=False, null=True, upload_to="content/images/"
23
- ),
24
- ),
25
- ]
File without changes
File without changes