summaryrefslogtreecommitdiffstats
path: root/activities/migrations/0001_initial.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/migrations/0001_initial.py')
-rw-r--r--activities/migrations/0001_initial.py239
1 files changed, 229 insertions, 10 deletions
diff --git a/activities/migrations/0001_initial.py b/activities/migrations/0001_initial.py
index 0b350ef..19f3026 100644
--- a/activities/migrations/0001_initial.py
+++ b/activities/migrations/0001_initial.py
@@ -1,9 +1,16 @@
-# Generated by Django 4.1.3 on 2022-11-11 20:02
+# Generated by Django 4.1.3 on 2022-11-18 17:49
+
+import functools
import django.db.models.deletion
+import django.utils.timezone
from django.db import migrations, models
+import activities.models.fan_out
import activities.models.post
+import activities.models.post_attachment
+import activities.models.post_interaction
+import core.uploads
import stator.models
@@ -42,7 +49,12 @@ class Migration(migrations.Migration):
),
),
("local", models.BooleanField()),
- ("object_uri", models.CharField(blank=True, max_length=500, null=True)),
+ (
+ "object_uri",
+ models.CharField(
+ blank=True, max_length=500, null=True, unique=True
+ ),
+ ),
(
"visibility",
models.IntegerField(
@@ -63,26 +75,222 @@ class Migration(migrations.Migration):
"in_reply_to",
models.CharField(blank=True, max_length=500, null=True),
),
+ ("hashtags", models.JSONField(blank=True, null=True)),
+ ("published", models.DateTimeField(default=django.utils.timezone.now)),
+ ("edited", models.DateTimeField(blank=True, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
(
"author",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
- related_name="statuses",
+ related_name="posts",
to="users.identity",
),
),
(
"mentions",
models.ManyToManyField(
- related_name="posts_mentioning", to="users.identity"
+ blank=True, related_name="posts_mentioning", to="users.identity"
),
),
(
"to",
models.ManyToManyField(
- related_name="posts_to", to="users.identity"
+ blank=True, related_name="posts_to", to="users.identity"
+ ),
+ ),
+ ],
+ options={
+ "abstract": False,
+ },
+ ),
+ migrations.CreateModel(
+ name="PostInteraction",
+ fields=[
+ (
+ "id",
+ models.BigAutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("state_ready", models.BooleanField(default=True)),
+ ("state_changed", models.DateTimeField(auto_now_add=True)),
+ ("state_attempted", models.DateTimeField(blank=True, null=True)),
+ ("state_locked_until", models.DateTimeField(blank=True, null=True)),
+ (
+ "state",
+ stator.models.StateField(
+ choices=[
+ ("new", "new"),
+ ("fanned_out", "fanned_out"),
+ ("undone", "undone"),
+ ("undone_fanned_out", "undone_fanned_out"),
+ ],
+ default="new",
+ graph=activities.models.post_interaction.PostInteractionStates,
+ max_length=100,
+ ),
+ ),
+ (
+ "object_uri",
+ models.CharField(
+ blank=True, max_length=500, null=True, unique=True
+ ),
+ ),
+ (
+ "type",
+ models.CharField(
+ choices=[("like", "Like"), ("boost", "Boost")], max_length=100
+ ),
+ ),
+ ("published", models.DateTimeField(default=django.utils.timezone.now)),
+ ("created", models.DateTimeField(auto_now_add=True)),
+ ("updated", models.DateTimeField(auto_now=True)),
+ (
+ "identity",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="interactions",
+ to="users.identity",
+ ),
+ ),
+ (
+ "post",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="interactions",
+ to="activities.post",
+ ),
+ ),
+ ],
+ options={
+ "index_together": {("type", "identity", "post")},
+ },
+ ),
+ migrations.CreateModel(
+ name="PostAttachment",
+ fields=[
+ (
+ "id",
+ models.BigAutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("state_ready", models.BooleanField(default=True)),
+ ("state_changed", models.DateTimeField(auto_now_add=True)),
+ ("state_attempted", models.DateTimeField(blank=True, null=True)),
+ ("state_locked_until", models.DateTimeField(blank=True, null=True)),
+ (
+ "state",
+ stator.models.StateField(
+ choices=[("new", "new"), ("fetched", "fetched")],
+ default="new",
+ graph=activities.models.post_attachment.PostAttachmentStates,
+ max_length=100,
+ ),
+ ),
+ ("mimetype", models.CharField(max_length=200)),
+ (
+ "file",
+ models.FileField(
+ blank=True,
+ null=True,
+ upload_to=functools.partial(
+ core.uploads.upload_namer, *("attachments",), **{}
+ ),
+ ),
+ ),
+ ("remote_url", models.CharField(blank=True, max_length=500, null=True)),
+ ("name", models.TextField(blank=True, null=True)),
+ ("width", models.IntegerField(blank=True, null=True)),
+ ("height", models.IntegerField(blank=True, null=True)),
+ ("focal_x", models.IntegerField(blank=True, null=True)),
+ ("focal_y", models.IntegerField(blank=True, null=True)),
+ ("blurhash", models.TextField(blank=True, null=True)),
+ (
+ "post",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="attachments",
+ to="activities.post",
+ ),
+ ),
+ ],
+ options={
+ "abstract": False,
+ },
+ ),
+ migrations.CreateModel(
+ name="FanOut",
+ fields=[
+ (
+ "id",
+ models.BigAutoField(
+ auto_created=True,
+ primary_key=True,
+ serialize=False,
+ verbose_name="ID",
+ ),
+ ),
+ ("state_ready", models.BooleanField(default=True)),
+ ("state_changed", models.DateTimeField(auto_now_add=True)),
+ ("state_attempted", models.DateTimeField(blank=True, null=True)),
+ ("state_locked_until", models.DateTimeField(blank=True, null=True)),
+ (
+ "state",
+ stator.models.StateField(
+ choices=[("new", "new"), ("sent", "sent")],
+ default="new",
+ graph=activities.models.fan_out.FanOutStates,
+ max_length=100,
+ ),
+ ),
+ (
+ "type",
+ models.CharField(
+ choices=[
+ ("post", "Post"),
+ ("interaction", "Interaction"),
+ ("undo_interaction", "Undo Interaction"),
+ ],
+ max_length=100,
+ ),
+ ),
+ ("created", models.DateTimeField(auto_now_add=True)),
+ ("updated", models.DateTimeField(auto_now=True)),
+ (
+ "identity",
+ models.ForeignKey(
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="fan_outs",
+ to="users.identity",
+ ),
+ ),
+ (
+ "subject_post",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="fan_outs",
+ to="activities.post",
+ ),
+ ),
+ (
+ "subject_post_interaction",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="fan_outs",
+ to="activities.postinteraction",
),
),
],
@@ -107,10 +315,11 @@ class Migration(migrations.Migration):
models.CharField(
choices=[
("post", "Post"),
- ("mention", "Mention"),
- ("like", "Like"),
- ("follow", "Follow"),
("boost", "Boost"),
+ ("mentioned", "Mentioned"),
+ ("liked", "Liked"),
+ ("followed", "Followed"),
+ ("boosted", "Boosted"),
],
max_length=100,
),
@@ -140,15 +349,25 @@ class Migration(migrations.Migration):
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
- related_name="timeline_events_about_us",
+ related_name="timeline_events",
to="activities.post",
),
),
+ (
+ "subject_post_interaction",
+ models.ForeignKey(
+ blank=True,
+ null=True,
+ on_delete=django.db.models.deletion.CASCADE,
+ related_name="timeline_events",
+ to="activities.postinteraction",
+ ),
+ ),
],
options={
"index_together": {
- ("identity", "type", "subject_post", "subject_identity"),
("identity", "type", "subject_identity"),
+ ("identity", "type", "subject_post", "subject_identity"),
},
},
),