Files
org-social-relay/app/feeds/migrations/0001_initial.py
Andros Fenollosa d3f5e38a54 Feeds endpoints
2025-09-16 15:28:21 +02:00

312 lines
10 KiB
Python

# Generated by Django 5.2.6 on 2025-09-12 08:59
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="Profile",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"url",
models.URLField(
help_text="URL to the social.org file", unique=True
),
),
(
"title",
models.CharField(
help_text="Title of the social feed", max_length=200
),
),
(
"nick",
models.CharField(
help_text="Nickname (no spaces allowed)", max_length=100
),
),
(
"description",
models.TextField(
blank=True, help_text="Short description about the profile"
),
),
(
"avatar",
models.URLField(
blank=True, help_text="URL to avatar image (128x128px JPG/PNG)"
),
),
("last_updated", models.DateTimeField(auto_now=True)),
("created_at", models.DateTimeField(auto_now_add=True)),
],
options={
"ordering": ["-last_updated"],
},
),
migrations.CreateModel(
name="Post",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"post_id",
models.CharField(
help_text="Unique timestamp identifier (RFC 3339 format)",
max_length=50,
),
),
("content", models.TextField(help_text="Post content")),
(
"language",
models.CharField(
blank=True,
help_text="Language code (LANG property)",
max_length=10,
),
),
(
"tags",
models.CharField(
blank=True, help_text="Space-separated tags", max_length=500
),
),
(
"client",
models.CharField(
blank=True, help_text="Client application used", max_length=100
),
),
(
"reply_to",
models.CharField(
blank=True,
help_text="ID of post being replied to (URL#ID format)",
max_length=300,
),
),
(
"mood",
models.CharField(
blank=True, help_text="Mood indicator (emoji)", max_length=10
),
),
(
"poll_end",
models.DateTimeField(
blank=True, help_text="End time for polls", null=True
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
("updated_at", models.DateTimeField(auto_now=True)),
(
"profile",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="posts",
to="feeds.profile",
),
),
],
options={
"ordering": ["-created_at"],
"unique_together": {("profile", "post_id")},
},
),
migrations.CreateModel(
name="PollVote",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"poll_option",
models.CharField(help_text="Selected poll option", max_length=200),
),
("created_at", models.DateTimeField(auto_now_add=True)),
(
"poll_post",
models.ForeignKey(
help_text="The original poll post",
on_delete=django.db.models.deletion.CASCADE,
related_name="votes_received",
to="feeds.post",
),
),
(
"post",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="poll_votes",
to="feeds.post",
),
),
],
options={
"unique_together": {("post", "poll_post")},
},
),
migrations.CreateModel(
name="PollOption",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("option_text", models.CharField(max_length=200)),
("order", models.PositiveIntegerField(default=0)),
(
"post",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="poll_options",
to="feeds.post",
),
),
],
options={
"ordering": ["order"],
"unique_together": {("post", "option_text")},
},
),
migrations.CreateModel(
name="Follow",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"nickname",
models.CharField(
blank=True,
help_text="Optional nickname for the followed profile",
max_length=100,
),
),
("created_at", models.DateTimeField(auto_now_add=True)),
(
"followed",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="followers",
to="feeds.profile",
),
),
(
"follower",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="following",
to="feeds.profile",
),
),
],
options={
"unique_together": {("follower", "followed")},
},
),
migrations.CreateModel(
name="ProfileContact",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"contact_type",
models.CharField(
help_text="Type of contact (email, xmpp, matrix, etc.)",
max_length=50,
),
),
(
"contact_value",
models.CharField(help_text="Contact information", max_length=200),
),
("created_at", models.DateTimeField(auto_now_add=True)),
(
"profile",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="contacts",
to="feeds.profile",
),
),
],
options={
"unique_together": {("profile", "contact_type", "contact_value")},
},
),
migrations.CreateModel(
name="ProfileLink",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("url", models.URLField()),
("created_at", models.DateTimeField(auto_now_add=True)),
(
"profile",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="links",
to="feeds.profile",
),
),
],
options={
"unique_together": {("profile", "url")},
},
),
]