lib.itmens/takahe/migrations/0001_initial.py
2023-10-22 17:46:34 -04:00

560 lines
22 KiB
Python

# Generated by Django 4.2.4 on 2023-08-12 16:48
import django.db.models.deletion
import django.utils.timezone
from django.db import migrations, models
import takahe.models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="Domain",
fields=[
(
"domain",
models.CharField(max_length=250, primary_key=True, serialize=False),
),
(
"service_domain",
models.CharField(
blank=True,
db_index=True,
max_length=250,
null=True,
unique=True,
),
),
("state", models.CharField(default="outdated", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("nodeinfo", models.JSONField(blank=True, null=True)),
("local", models.BooleanField()),
("blocked", models.BooleanField(default=False)),
("public", models.BooleanField(default=False)),
("default", models.BooleanField(default=False)),
("notes", models.TextField(blank=True, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
],
options={
"db_table": "users_domain",
},
),
migrations.CreateModel(
name="Emoji",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("shortcode", models.SlugField(max_length=100)),
("local", models.BooleanField(default=True)),
("public", models.BooleanField(null=True)),
(
"object_uri",
models.CharField(
blank=True, max_length=500, null=True, unique=True
),
),
("mimetype", models.CharField(max_length=200)),
("file", models.ImageField(blank=True, null=True, upload_to="")),
("remote_url", models.CharField(blank=True, max_length=500, null=True)),
("category", models.CharField(blank=True, max_length=100, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
(
"domain",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="takahe.domain",
),
),
],
options={
"db_table": "activities_emoji",
},
),
migrations.CreateModel(
name="Hashtag",
fields=[
(
"hashtag",
models.SlugField(max_length=100, primary_key=True, serialize=False),
),
(
"name_override",
models.CharField(blank=True, max_length=100, null=True),
),
("public", models.BooleanField(null=True)),
("state", models.CharField(default="outdated", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("stats", models.JSONField(blank=True, null=True)),
("stats_updated", models.DateTimeField(blank=True, null=True)),
("aliases", models.JSONField(blank=True, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
],
options={
"db_table": "activities_hashtag",
},
),
migrations.CreateModel(
name="Identity",
fields=[
(
"id",
models.BigIntegerField(
default=takahe.models.Snowflake.generate_identity,
primary_key=True,
serialize=False,
),
),
("actor_uri", models.CharField(max_length=500, unique=True)),
("state", models.CharField(default="outdated", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("local", models.BooleanField(db_index=True)),
("username", models.CharField(blank=True, max_length=500, null=True)),
("name", models.CharField(blank=True, max_length=500, null=True)),
("summary", models.TextField(blank=True, null=True)),
(
"manually_approves_followers",
models.BooleanField(blank=True, null=True),
),
("discoverable", models.BooleanField(default=True)),
(
"profile_uri",
models.CharField(blank=True, max_length=500, null=True),
),
("inbox_uri", models.CharField(blank=True, max_length=500, null=True)),
(
"shared_inbox_uri",
models.CharField(blank=True, max_length=500, null=True),
),
("outbox_uri", models.CharField(blank=True, max_length=500, null=True)),
("icon_uri", models.CharField(blank=True, max_length=500, null=True)),
("image_uri", models.CharField(blank=True, max_length=500, null=True)),
(
"followers_uri",
models.CharField(blank=True, max_length=500, null=True),
),
(
"following_uri",
models.CharField(blank=True, max_length=500, null=True),
),
(
"featured_collection_uri",
models.CharField(blank=True, max_length=500, null=True),
),
("actor_type", models.CharField(default="person", max_length=100)),
("metadata", models.JSONField(blank=True, null=True)),
("pinned", models.JSONField(blank=True, null=True)),
("sensitive", models.BooleanField(default=False)),
(
"restriction",
models.IntegerField(
choices=[(0, "None"), (1, "Limited"), (2, "Blocked")],
db_index=True,
default=0,
),
),
("admin_notes", models.TextField(blank=True, null=True)),
("private_key", models.TextField(blank=True, null=True)),
("public_key", models.TextField(blank=True, null=True)),
("public_key_id", models.TextField(blank=True, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
("fetched", models.DateTimeField(blank=True, null=True)),
("deleted", models.DateTimeField(blank=True, null=True)),
(
"domain",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
related_name="identities",
to="takahe.domain",
),
),
],
options={
"verbose_name_plural": "identities",
"db_table": "users_identity",
},
),
migrations.CreateModel(
name="Post",
fields=[
(
"id",
models.BigIntegerField(
default=takahe.models.Snowflake.generate_post,
primary_key=True,
serialize=False,
),
),
("state", models.CharField(default="new", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("local", models.BooleanField()),
(
"object_uri",
models.CharField(
blank=True, max_length=2048, null=True, unique=True
),
),
(
"visibility",
models.IntegerField(
choices=[
(0, "Public"),
(4, "Local Only"),
(1, "Unlisted"),
(2, "Followers"),
(3, "Mentioned"),
],
default=0,
),
),
("content", models.TextField()),
(
"type",
models.CharField(
choices=[
("Article", "Article"),
("Audio", "Audio"),
("Event", "Event"),
("Image", "Image"),
("Note", "Note"),
("Page", "Page"),
("Question", "Question"),
("Video", "Video"),
],
default="Note",
max_length=20,
),
),
("type_data", models.JSONField(blank=True, null=True)),
("sensitive", models.BooleanField(default=False)),
("summary", models.TextField(blank=True, null=True)),
("url", models.CharField(blank=True, max_length=2048, null=True)),
(
"in_reply_to",
models.CharField(
blank=True, db_index=True, max_length=500, null=True
),
),
("hashtags", models.JSONField(blank=True, null=True)),
("stats", 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.CASCADE,
related_name="posts",
to="takahe.identity",
),
),
(
"emojis",
models.ManyToManyField(
blank=True, related_name="posts_using_emoji", to="takahe.emoji"
),
),
(
"mentions",
models.ManyToManyField(
blank=True,
related_name="posts_mentioning",
to="takahe.identity",
),
),
(
"to",
models.ManyToManyField(
blank=True, related_name="posts_to", to="takahe.identity"
),
),
],
options={
"db_table": "activities_post",
},
),
migrations.CreateModel(
name="User",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("password", models.CharField(max_length=128, verbose_name="password")),
(
"last_login",
models.DateTimeField(
blank=True, null=True, verbose_name="last login"
),
),
("email", models.EmailField(max_length=254, unique=True)),
("admin", models.BooleanField(default=False)),
("moderator", models.BooleanField(default=False)),
("banned", models.BooleanField(default=False)),
("deleted", models.BooleanField(default=False)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
("last_seen", models.DateTimeField(auto_now_add=True)),
],
options={
"db_table": "users_user",
},
),
migrations.CreateModel(
name="PostInteraction",
fields=[
(
"id",
models.BigIntegerField(
default=takahe.models.Snowflake.generate_post_interaction,
primary_key=True,
serialize=False,
),
),
("state", models.CharField(default="new", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
(
"object_uri",
models.CharField(
blank=True, max_length=500, null=True, unique=True
),
),
(
"type",
models.CharField(
choices=[
("like", "Like"),
("boost", "Boost"),
("vote", "Vote"),
("pin", "Pin"),
],
max_length=100,
),
),
("value", models.CharField(blank=True, max_length=50, null=True)),
("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="takahe.identity",
),
),
(
"post",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="interactions",
to="takahe.post",
),
),
],
options={
"db_table": "activities_postinteraction",
},
),
migrations.AddField(
model_name="identity",
name="users",
field=models.ManyToManyField(
blank=True, related_name="identities", to="takahe.user"
),
),
migrations.AddField(
model_name="domain",
name="users",
field=models.ManyToManyField(
blank=True, related_name="domains", to="takahe.user"
),
),
migrations.CreateModel(
name="Block",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("state", models.CharField(default="new", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("uri", models.CharField(blank=True, max_length=500, null=True)),
("mute", models.BooleanField()),
("include_notifications", models.BooleanField(default=False)),
("expires", models.DateTimeField(blank=True, null=True)),
("note", models.TextField(blank=True, null=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
(
"source",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="outbound_blocks",
to="takahe.identity",
),
),
(
"target",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="inbound_blocks",
to="takahe.identity",
),
),
],
options={
"db_table": "users_block",
},
),
migrations.AlterUniqueTogether(
name="identity",
unique_together={("username", "domain")},
),
migrations.CreateModel(
name="Follow",
fields=[
(
"id",
models.BigIntegerField(
default=takahe.models.Snowflake.generate_follow,
primary_key=True,
serialize=False,
),
),
(
"boosts",
models.BooleanField(
default=True, help_text="Also follow boosts from this user"
),
),
("uri", models.CharField(blank=True, max_length=500, null=True)),
("note", models.TextField(blank=True, null=True)),
("state", models.CharField(default="unrequested", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
("created", models.DateTimeField(auto_now_add=True)),
("updated", models.DateTimeField(auto_now=True)),
(
"source",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="outbound_follows",
to="takahe.identity",
),
),
(
"target",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="inbound_follows",
to="takahe.identity",
),
),
],
options={
"db_table": "users_follow",
"unique_together": {("source", "target")},
},
),
migrations.CreateModel(
name="InboxMessage",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("message", models.JSONField()),
("state", models.CharField(default="received", max_length=100)),
("state_changed", models.DateTimeField(auto_now_add=True)),
],
options={
"db_table": "users_inboxmessage",
},
),
migrations.CreateModel(
name="Config",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("key", models.CharField(max_length=500)),
("json", models.JSONField(blank=True, null=True)),
("image", models.ImageField(blank=True, null=True, upload_to="")),
(
"domain",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="configs",
to="takahe.domain",
),
),
(
"identity",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="configs",
to="takahe.identity",
),
),
(
"user",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="configs",
to="takahe.user",
),
),
],
options={
"db_table": "core_config",
"unique_together": {("key", "user", "identity", "domain")},
},
),
]