squash migrations
This commit is contained in:
parent
c0802c9c04
commit
bf1f700e6c
8 changed files with 2254 additions and 169 deletions
|
@ -147,14 +147,12 @@ class DiscoverGenerator(BaseJob):
|
|||
"pk", flat=True
|
||||
)[:20]
|
||||
)
|
||||
print(post_ids)
|
||||
if len(post_ids) < 30:
|
||||
post_ids |= set(
|
||||
Comment.objects.filter(visibility=0)
|
||||
.order_by("-created_time")
|
||||
.values_list("posts", flat=True)[:2]
|
||||
)
|
||||
print(post_ids)
|
||||
cache.set("public_gallery", gallery_list, timeout=None)
|
||||
cache.set("trends_links", trends, timeout=None)
|
||||
cache.set("featured_collections", collection_ids, timeout=None)
|
||||
|
|
670
catalog/migrations/0001_initial_0_10.py
Normal file
670
catalog/migrations/0001_initial_0_10.py
Normal file
|
@ -0,0 +1,670 @@
|
|||
# Generated by Django 4.2.13 on 2024-06-08 17:40
|
||||
|
||||
import uuid
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
import catalog.common.utils
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
This migration is a combination of all the migrations til 0.10.0
|
||||
"""
|
||||
|
||||
replaces = [
|
||||
("catalog", "0001_initial"),
|
||||
("catalog", "0002_initial"),
|
||||
("catalog", "0003_podcast"),
|
||||
("catalog", "0004_podcast_no_real_change"),
|
||||
("catalog", "0005_bookstw"),
|
||||
("catalog", "0006_auto_20230602_0258"),
|
||||
("catalog", "0007_performance"),
|
||||
("catalog", "0008_delete_historicalitem"),
|
||||
("catalog", "0009_remove_tvepisode_show"),
|
||||
("catalog", "0010_alter_item_polymorphic_ctype"),
|
||||
("catalog", "0011_remove_item_last_editor"),
|
||||
("catalog", "0011_alter_externalresource_id_type_and_more"),
|
||||
("catalog", "0012_alter_model_i18n"),
|
||||
]
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Item",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"uid",
|
||||
models.UUIDField(db_index=True, default=uuid.uuid4, editable=False),
|
||||
),
|
||||
(
|
||||
"title",
|
||||
models.CharField(default="", max_length=1000, verbose_name="title"),
|
||||
),
|
||||
(
|
||||
"brief",
|
||||
models.TextField(
|
||||
blank=True, default="", verbose_name="description"
|
||||
),
|
||||
),
|
||||
(
|
||||
"primary_lookup_id_type",
|
||||
models.CharField(
|
||||
max_length=50, null=True, verbose_name="Primary ID Type"
|
||||
),
|
||||
),
|
||||
(
|
||||
"primary_lookup_id_value",
|
||||
models.CharField(
|
||||
help_text="automatically detected, usually no change necessary, left empty if unsure",
|
||||
max_length=1000,
|
||||
null=True,
|
||||
verbose_name="Primary ID Value",
|
||||
),
|
||||
),
|
||||
(
|
||||
"metadata",
|
||||
models.JSONField(
|
||||
blank=True, default=dict, null=True, verbose_name="metadata"
|
||||
),
|
||||
),
|
||||
(
|
||||
"cover",
|
||||
models.ImageField(
|
||||
blank=True,
|
||||
default="item/default.svg",
|
||||
upload_to=catalog.common.utils.item_cover_path,
|
||||
verbose_name="cover",
|
||||
),
|
||||
),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("is_deleted", models.BooleanField(db_index=True, default=False)),
|
||||
(
|
||||
"merged_to_item",
|
||||
models.ForeignKey(
|
||||
default=None,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="merged_from_items",
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
(
|
||||
"polymorphic_ctype",
|
||||
models.ForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"index_together": {
|
||||
("primary_lookup_id_type", "primary_lookup_id_value")
|
||||
},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Album",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Collection",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Edition",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Game",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Movie",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Podcast",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="TVShow",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
(
|
||||
"season_count",
|
||||
models.IntegerField(
|
||||
blank=True, null=True, verbose_name="number of seasons"
|
||||
),
|
||||
),
|
||||
(
|
||||
"episode_count",
|
||||
models.PositiveIntegerField(
|
||||
blank=True, null=True, verbose_name="number of episodes"
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Series",
|
||||
fields=[],
|
||||
options={
|
||||
"proxy": True,
|
||||
"indexes": [],
|
||||
"constraints": [],
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Work",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
(
|
||||
"editions",
|
||||
models.ManyToManyField(related_name="works", to="catalog.edition"),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="TVSeason",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
(
|
||||
"season_number",
|
||||
models.PositiveIntegerField(
|
||||
null=True, verbose_name="season number"
|
||||
),
|
||||
),
|
||||
(
|
||||
"episode_count",
|
||||
models.PositiveIntegerField(
|
||||
null=True, verbose_name="number of episodes"
|
||||
),
|
||||
),
|
||||
(
|
||||
"show",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="seasons",
|
||||
to="catalog.tvshow",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="TVEpisode",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
("episode_number", models.PositiveIntegerField(null=True)),
|
||||
(
|
||||
"season",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="episodes",
|
||||
to="catalog.tvseason",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PodcastEpisode",
|
||||
fields=[
|
||||
("description_html", models.TextField(null=True)),
|
||||
("cover_url", models.CharField(max_length=1000, null=True)),
|
||||
("media_url", models.CharField(max_length=1000, null=True)),
|
||||
("guid", models.CharField(max_length=1000, null=True)),
|
||||
(
|
||||
"pub_date",
|
||||
models.DateTimeField(
|
||||
help_text="yyyy/mm/dd hh:mm", verbose_name="date of publication"
|
||||
),
|
||||
),
|
||||
("duration", models.PositiveIntegerField(null=True)),
|
||||
(
|
||||
"program",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="episodes",
|
||||
to="catalog.podcast",
|
||||
),
|
||||
),
|
||||
("link", models.CharField(max_length=1000, null=True)),
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"unique_together": {("program", "guid")},
|
||||
"index_together": {("program", "pub_date")},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ExternalResource",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"id_type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("wikidata", "WikiData"),
|
||||
("isbn10", "ISBN10"),
|
||||
("isbn", "ISBN"),
|
||||
("asin", "ASIN"),
|
||||
("issn", "ISSN"),
|
||||
("cubn", "CUBN"),
|
||||
("isrc", "ISRC"),
|
||||
("gtin", "GTIN UPC EAN"),
|
||||
("rss", "RSS Feed URL"),
|
||||
("imdb", "IMDb"),
|
||||
("tmdb_tv", "TMDB TV Serie"),
|
||||
("tmdb_tvseason", "TMDB TV Season"),
|
||||
("tmdb_tvepisode", "TMDB TV Episode"),
|
||||
("tmdb_movie", "TMDB Movie"),
|
||||
("goodreads", "Goodreads"),
|
||||
("goodreads_work", "Goodreads Work"),
|
||||
("googlebooks", "Google Books"),
|
||||
("doubanbook", "Douban Book"),
|
||||
("doubanbook_work", "Douban Book Work"),
|
||||
("doubanmovie", "Douban Movie"),
|
||||
("doubanmusic", "Douban Music"),
|
||||
("doubangame", "Douban Game"),
|
||||
("doubandrama", "Douban Drama"),
|
||||
("doubandrama_version", "Douban Drama Version"),
|
||||
("bookstw", "BooksTW Book"),
|
||||
("bandcamp", "Bandcamp"),
|
||||
("spotify_album", "Spotify Album"),
|
||||
("spotify_show", "Spotify Podcast"),
|
||||
("discogs_release", "Discogs Release"),
|
||||
("discogs_master", "Discogs Master"),
|
||||
("musicbrainz", "MusicBrainz ID"),
|
||||
("igdb", "IGDB Game"),
|
||||
("bgg", "BGG Boardgame"),
|
||||
("steam", "Steam Game"),
|
||||
("bangumi", "Bangumi"),
|
||||
("apple_podcast", "Apple Podcast"),
|
||||
("apple_music", "Apple Music"),
|
||||
("fedi", "Fediverse"),
|
||||
],
|
||||
max_length=50,
|
||||
verbose_name="IdType of the source site",
|
||||
),
|
||||
),
|
||||
(
|
||||
"id_value",
|
||||
models.CharField(
|
||||
max_length=1000, verbose_name="Primary Id on the source site"
|
||||
),
|
||||
),
|
||||
(
|
||||
"url",
|
||||
models.CharField(
|
||||
max_length=1000, unique=True, verbose_name="url to the resource"
|
||||
),
|
||||
),
|
||||
(
|
||||
"cover",
|
||||
models.ImageField(
|
||||
blank=True,
|
||||
default="item/default.svg",
|
||||
upload_to=catalog.common.utils.resource_cover_path,
|
||||
),
|
||||
),
|
||||
("other_lookup_ids", models.JSONField(default=dict)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
("scraped_time", models.DateTimeField(null=True)),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"item",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="external_resources",
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"unique_together": {("id_type", "id_value")},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ItemLookupId",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"id_type",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
choices=[
|
||||
("wikidata", "WikiData"),
|
||||
("isbn10", "ISBN10"),
|
||||
("isbn", "ISBN"),
|
||||
("asin", "ASIN"),
|
||||
("issn", "ISSN"),
|
||||
("cubn", "CUBN"),
|
||||
("isrc", "ISRC"),
|
||||
("gtin", "GTIN UPC EAN"),
|
||||
("rss", "RSS Feed URL"),
|
||||
("imdb", "IMDb"),
|
||||
("tmdb_tv", "TMDB TV Serie"),
|
||||
("tmdb_tvseason", "TMDB TV Season"),
|
||||
("tmdb_tvepisode", "TMDB TV Episode"),
|
||||
("tmdb_movie", "TMDB Movie"),
|
||||
("goodreads", "Goodreads"),
|
||||
("goodreads_work", "Goodreads Work"),
|
||||
("googlebooks", "Google Books"),
|
||||
("doubanbook", "Douban Book"),
|
||||
("doubanbook_work", "Douban Book Work"),
|
||||
("doubanmovie", "Douban Movie"),
|
||||
("doubanmusic", "Douban Music"),
|
||||
("doubangame", "Douban Game"),
|
||||
("doubandrama", "Douban Drama"),
|
||||
("doubandrama_version", "Douban Drama Version"),
|
||||
("bookstw", "BooksTW Book"),
|
||||
("bandcamp", "Bandcamp"),
|
||||
("spotify_album", "Spotify Album"),
|
||||
("spotify_show", "Spotify Podcast"),
|
||||
("discogs_release", "Discogs Release"),
|
||||
("discogs_master", "Discogs Master"),
|
||||
("musicbrainz", "MusicBrainz ID"),
|
||||
("igdb", "IGDB Game"),
|
||||
("bgg", "BGG Boardgame"),
|
||||
("steam", "Steam Game"),
|
||||
("bangumi", "Bangumi"),
|
||||
("apple_podcast", "Apple Podcast"),
|
||||
("apple_music", "Apple Music"),
|
||||
("fedi", "Fediverse"),
|
||||
],
|
||||
max_length=50,
|
||||
verbose_name="source site",
|
||||
),
|
||||
),
|
||||
(
|
||||
"id_value",
|
||||
models.CharField(
|
||||
blank=True, max_length=1000, verbose_name="ID on source site"
|
||||
),
|
||||
),
|
||||
(
|
||||
"raw_url",
|
||||
models.CharField(
|
||||
blank=True,
|
||||
max_length=1000,
|
||||
unique=True,
|
||||
verbose_name="source url",
|
||||
),
|
||||
),
|
||||
(
|
||||
"item",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="lookup_ids",
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"unique_together": {("id_type", "id_value")},
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Performance",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PerformanceProduction",
|
||||
fields=[
|
||||
(
|
||||
"item_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
(
|
||||
"show",
|
||||
models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="productions",
|
||||
to="catalog.performance",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("catalog.item",),
|
||||
),
|
||||
]
|
925
journal/migrations/0001_initial_0_10.py
Normal file
925
journal/migrations/0001_initial_0_10.py
Normal file
|
@ -0,0 +1,925 @@
|
|||
# Generated by Django 4.2.13 on 2024-06-08 19:21
|
||||
|
||||
import uuid
|
||||
|
||||
import django.core.validators
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import markdownx.models
|
||||
from django.db import migrations, models
|
||||
|
||||
import catalog.common.utils
|
||||
import journal.models.mixins
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
This migration is a combination of all the migrations til 0.10.0
|
||||
"""
|
||||
|
||||
replaces = [
|
||||
("journal", "0001_initial"),
|
||||
("journal", "0002_initial"),
|
||||
("journal", "0003_auto_20230113_0506"),
|
||||
("journal", "0004_alter_shelflogentry_timestamp"),
|
||||
("journal", "0005_auto_20230114_1134"),
|
||||
("journal", "0006_auto_20230114_2139"),
|
||||
("journal", "0007_alter_collection_catalog_item"),
|
||||
("journal", "0008_alter_shelfmember_unique_together"),
|
||||
("journal", "0009_comment_focus_item"),
|
||||
("journal", "0010_shelfmember_journal_she_parent__9da946_idx"),
|
||||
("journal", "0011_performance"),
|
||||
("journal", "0012_alter_piece_polymorphic_ctype_alter_shelf_items"),
|
||||
("journal", "0013_remove_comment_focus_item"),
|
||||
(
|
||||
"journal",
|
||||
"0014_remove_reply_piece_ptr_remove_reply_reply_to_content_and_more",
|
||||
),
|
||||
("journal", "0015_use_identity_support_remote_piece"),
|
||||
("journal", "0016_piecepost_piece_posts_piecepost_unique_piece_post"),
|
||||
("journal", "0017_alter_piece_options_and_more"),
|
||||
("journal", "0018_shelflogentrypost_shelflogentry_posts_and_more"),
|
||||
("journal", "0019_alter_collection_edited_time_and_more"),
|
||||
("journal", "0020_shelflogentry_unique_shelf_log_entry"),
|
||||
("journal", "0021_pieceinteraction_pieceinteraction_unique_interaction"),
|
||||
("journal", "0022_letterboxdimporter"),
|
||||
("journal", "0023_debris"),
|
||||
("journal", "0024_i18n"),
|
||||
("journal", "0025_pin_tags"),
|
||||
("journal", "0026_pinned_tag_index"),
|
||||
]
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("contenttypes", "0002_remove_content_type_name"),
|
||||
("users", "0001_initial_0_10"),
|
||||
("catalog", "0001_initial_0_10"),
|
||||
("takahe", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="Piece",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"uid",
|
||||
models.UUIDField(db_index=True, default=uuid.uuid4, editable=False),
|
||||
),
|
||||
("local", models.BooleanField(default=True)),
|
||||
(
|
||||
"polymorphic_ctype",
|
||||
models.ForeignKey(
|
||||
editable=False,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="polymorphic_%(app_label)s.%(class)s_set+",
|
||||
to="contenttypes.contenttype",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=(models.Model, journal.models.mixins.UserOwnedObjectMixin),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ShelfLogEntry",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"shelf_type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("wishlist", "WISHLIST"),
|
||||
("progress", "PROGRESS"),
|
||||
("complete", "COMPLETE"),
|
||||
("dropped", "DROPPED"),
|
||||
],
|
||||
max_length=100,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
("timestamp", models.DateTimeField()),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"item",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="LetterboxdImporter",
|
||||
fields=[],
|
||||
options={
|
||||
"proxy": True,
|
||||
"indexes": [],
|
||||
"constraints": [],
|
||||
},
|
||||
bases=("users.task",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Collection",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"title",
|
||||
models.CharField(default="", max_length=1000, verbose_name="title"),
|
||||
),
|
||||
(
|
||||
"brief",
|
||||
models.TextField(
|
||||
blank=True, default="", verbose_name="description"
|
||||
),
|
||||
),
|
||||
(
|
||||
"cover",
|
||||
models.ImageField(
|
||||
blank=True,
|
||||
default="item/default.svg",
|
||||
upload_to=catalog.common.utils.piece_cover_path,
|
||||
),
|
||||
),
|
||||
("collaborative", models.PositiveSmallIntegerField(default=0)),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="CollectionMember",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
("position", models.PositiveIntegerField()),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Comment",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"remote_id",
|
||||
models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
("text", models.TextField()),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Debris",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"remote_id",
|
||||
models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
("class_name", models.CharField(max_length=50)),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="FeaturedCollection",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Like",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
"base_manager_name": "objects",
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Rating",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"remote_id",
|
||||
models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
(
|
||||
"grade",
|
||||
models.PositiveSmallIntegerField(
|
||||
default=0,
|
||||
null=True,
|
||||
validators=[
|
||||
django.core.validators.MaxValueValidator(10),
|
||||
django.core.validators.MinValueValidator(1),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Review",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"remote_id",
|
||||
models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
("title", models.CharField(max_length=500)),
|
||||
("body", markdownx.models.MarkdownxField()),
|
||||
],
|
||||
options={
|
||||
"abstract": False,
|
||||
},
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Shelf",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"shelf_type",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("wishlist", "WISHLIST"),
|
||||
("progress", "PROGRESS"),
|
||||
("complete", "COMPLETE"),
|
||||
("dropped", "DROPPED"),
|
||||
],
|
||||
max_length=100,
|
||||
),
|
||||
),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Tag",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
(
|
||||
"title",
|
||||
models.CharField(
|
||||
max_length=100,
|
||||
validators=[
|
||||
django.core.validators.RegexValidator(
|
||||
inverse_match=True, regex="\\s+"
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
("pinned", models.BooleanField(default=False, null=True)),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ShelfLogEntryPost",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"log_entry",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="journal.shelflogentry",
|
||||
),
|
||||
),
|
||||
(
|
||||
"post",
|
||||
models.ForeignKey(
|
||||
db_constraint=False,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="takahe.post",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="shelflogentry",
|
||||
name="posts",
|
||||
field=models.ManyToManyField(
|
||||
related_name="log_entries",
|
||||
through="journal.ShelfLogEntryPost",
|
||||
to="takahe.post",
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PiecePost",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
(
|
||||
"piece",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="journal.piece"
|
||||
),
|
||||
),
|
||||
(
|
||||
"post",
|
||||
models.ForeignKey(
|
||||
db_constraint=False,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="takahe.post",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="PieceInteraction",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("target_type", models.CharField(max_length=50)),
|
||||
("interaction_type", models.CharField(max_length=50)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
(
|
||||
"identity",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="interactions",
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
(
|
||||
"target",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="interactions",
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="piece",
|
||||
name="posts",
|
||||
field=models.ManyToManyField(
|
||||
related_name="pieces", through="journal.PiecePost", to="takahe.post"
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="TagMember",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
("position", models.PositiveIntegerField()),
|
||||
(
|
||||
"item",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
(
|
||||
"parent",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="members",
|
||||
to="journal.tag",
|
||||
),
|
||||
),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="tag",
|
||||
name="items",
|
||||
field=models.ManyToManyField(
|
||||
through="journal.TagMember", to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="tag",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="ShelfMember",
|
||||
fields=[
|
||||
(
|
||||
"piece_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
("position", models.PositiveIntegerField()),
|
||||
(
|
||||
"item",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
(
|
||||
"parent",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="members",
|
||||
to="journal.shelf",
|
||||
),
|
||||
),
|
||||
],
|
||||
bases=("journal.piece",),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="shelflogentrypost",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("log_entry", "post"), name="unique_log_entry_post"
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="shelflogentry",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("owner", "item", "timestamp", "shelf_type"),
|
||||
name="unique_shelf_log_entry",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="shelf",
|
||||
name="items",
|
||||
field=models.ManyToManyField(
|
||||
related_name="+", through="journal.ShelfMember", to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="shelf",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="review",
|
||||
name="item",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="review",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="rating",
|
||||
name="item",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="rating",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="piecepost",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("piece", "post"), name="unique_piece_post"
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="pieceinteraction",
|
||||
index=models.Index(
|
||||
fields=["identity", "interaction_type", "created_time"],
|
||||
name="journal_pie_identit_bd12d3_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="pieceinteraction",
|
||||
index=models.Index(
|
||||
fields=["target", "interaction_type", "created_time"],
|
||||
name="journal_pie_target__f943ca_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="pieceinteraction",
|
||||
constraint=models.UniqueConstraint(
|
||||
fields=("identity", "interaction_type", "target"),
|
||||
name="unique_interaction",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="like",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="like",
|
||||
name="target",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="likes",
|
||||
to="journal.piece",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="featuredcollection",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="featuredcollection",
|
||||
name="target",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="journal.collection"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="debris",
|
||||
name="item",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="debris",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="comment",
|
||||
name="item",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="comment",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collectionmember",
|
||||
name="item",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="catalog.item"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collectionmember",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collectionmember",
|
||||
name="parent",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="members",
|
||||
to="journal.collection",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collection",
|
||||
name="catalog_item",
|
||||
field=models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="journal_item",
|
||||
to="catalog.collection",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collection",
|
||||
name="featured_by",
|
||||
field=models.ManyToManyField(
|
||||
related_name="featured_collections",
|
||||
through="journal.FeaturedCollection",
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collection",
|
||||
name="items",
|
||||
field=models.ManyToManyField(
|
||||
related_name="collections",
|
||||
through="journal.CollectionMember",
|
||||
to="catalog.item",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collection",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="tagmember",
|
||||
unique_together={("parent", "item")},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="tag",
|
||||
index=models.Index(
|
||||
fields=["owner", "pinned"], name="journal_tag_owner_i_068598_idx"
|
||||
),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="tag",
|
||||
unique_together={("owner", "title")},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="shelfmember",
|
||||
index=models.Index(
|
||||
fields=["parent_id", "visibility", "created_time"],
|
||||
name="journal_she_parent__9da946_idx",
|
||||
),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="shelfmember",
|
||||
unique_together={("owner", "item")},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="shelf",
|
||||
unique_together={("owner", "shelf_type")},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="rating",
|
||||
unique_together={("owner", "item")},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name="featuredcollection",
|
||||
unique_together={("owner", "target")},
|
||||
),
|
||||
]
|
|
@ -1,50 +0,0 @@
|
|||
# Generated by Django 4.2.3 on 2023-08-06 02:01
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
(
|
||||
"journal",
|
||||
"0014_remove_reply_piece_ptr_remove_reply_reply_to_content_and_more",
|
||||
),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name="piece",
|
||||
options={},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="piece",
|
||||
name="local",
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="piece",
|
||||
name="post_id",
|
||||
field=models.BigIntegerField(default=None, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="comment",
|
||||
name="remote_id",
|
||||
field=models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="rating",
|
||||
name="remote_id",
|
||||
field=models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="review",
|
||||
name="remote_id",
|
||||
field=models.CharField(default=None, max_length=200, null=True),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="piece",
|
||||
index=models.Index(
|
||||
fields=["post_id"], name="journal_pie_post_id_6a74ff_idx"
|
||||
),
|
||||
),
|
||||
]
|
|
@ -1,111 +0,0 @@
|
|||
# Generated by Django 4.2.4 on 2023-08-09 13:26
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("users", "0013_init_identity"),
|
||||
("journal", "0014_alter_piece_options_piece_local_piece_post_id_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="collection",
|
||||
name="featured_by_users",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="collection",
|
||||
name="featured_by",
|
||||
field=models.ManyToManyField(
|
||||
related_name="featured_collections",
|
||||
through="journal.FeaturedCollection",
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="collection",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="collectionmember",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="comment",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="featuredcollection",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="like",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="rating",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="review",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="shelf",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="shelflogentry",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="shelfmember",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="tag",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="tagmember",
|
||||
name="owner",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT, to="users.apidentity"
|
||||
),
|
||||
),
|
||||
]
|
|
@ -5,12 +5,6 @@ from django.db import migrations, models
|
|||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
replaces = [
|
||||
("journal", "0014_alter_piece_options_piece_local_piece_post_id_and_more"),
|
||||
("journal", "0015_alter_collection_featured_by_users_and_more"),
|
||||
]
|
||||
|
||||
dependencies = [
|
||||
(
|
||||
"journal",
|
||||
|
|
86
social/migrations/0001_initial_0_10.py
Normal file
86
social/migrations/0001_initial_0_10.py
Normal file
|
@ -0,0 +1,86 @@
|
|||
# Generated by Django 4.2.13 on 2024-06-08 18:14
|
||||
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
import journal.models.mixins
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
This migration is a combination of all the migrations til 0.10.0
|
||||
"""
|
||||
|
||||
replaces = [
|
||||
("social", "0001_initial"),
|
||||
("social", "0002_initial"),
|
||||
("social", "0003_alter_localactivity_template"),
|
||||
("social", "0004_alter_localactivity_template"),
|
||||
("social", "0005_alter_localactivity_template"),
|
||||
("social", "0006_alter_localactivity_template"),
|
||||
("social", "0007_alter_localactivity_owner"),
|
||||
]
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("users", "0001_initial_0_10"),
|
||||
("journal", "0001_initial_0_10"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="LocalActivity",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
(
|
||||
"template",
|
||||
models.CharField(
|
||||
choices=[
|
||||
("mark_item", "Markitem"),
|
||||
("review_item", "Reviewitem"),
|
||||
("create_collection", "Createcollection"),
|
||||
("like_collection", "Likecollection"),
|
||||
("feature_collection", "Featurecollection"),
|
||||
("comment_child_item", "Commentchilditem"),
|
||||
],
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
(
|
||||
"created_time",
|
||||
models.DateTimeField(
|
||||
db_index=True, default=django.utils.timezone.now
|
||||
),
|
||||
),
|
||||
(
|
||||
"action_object",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE, to="journal.piece"
|
||||
),
|
||||
),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="users.apidentity",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"index_together": {("owner", "created_time")},
|
||||
},
|
||||
bases=(models.Model, journal.models.mixins.UserOwnedObjectMixin),
|
||||
),
|
||||
]
|
573
users/migrations/0001_initial_0_10.py
Normal file
573
users/migrations/0001_initial_0_10.py
Normal file
|
@ -0,0 +1,573 @@
|
|||
# Generated by Django 4.2.13 on 2024-06-08 17:50
|
||||
|
||||
import django.core.serializers.json
|
||||
import django.db.models.deletion
|
||||
import django.db.models.functions.text
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
import users.models.user
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
This migration is a combination of all the migrations til 0.10.0
|
||||
"""
|
||||
|
||||
replaces = [
|
||||
("users", "0001_initial"),
|
||||
("users", "0002_preference_default_no_share"),
|
||||
("users", "0003_preference_discover_layout"),
|
||||
("users", "0004_alter_preference_classic_homepage"),
|
||||
("users", "0005_add_dedicated_username"),
|
||||
("users", "0006_unique_email"),
|
||||
("users", "0007_user_pending_email"),
|
||||
("users", "0008_user_at_least_one_login_method"),
|
||||
("users", "0007_username_case_insensitive"),
|
||||
("users", "0009_add_local_follow"),
|
||||
("users", "0010_add_local_mute_block"),
|
||||
("users", "0011_preference_hidden_categories"),
|
||||
("users", "0015_user_mastodon_last_reachable"),
|
||||
("users", "0012_apidentity"),
|
||||
("users", "0013_init_identity"),
|
||||
("users", "0014_preference_mastodon_skip_relationship_and_more"),
|
||||
("users", "0015_remove_preference_mastodon_publish_public_and_more"),
|
||||
("users", "0016_rename_preference_default_no_share"),
|
||||
("users", "0017_mastodon_site_username_bd2db5_idx"),
|
||||
("users", "0018_apidentity_anonymous_viewable"),
|
||||
("users", "0019_task"),
|
||||
("users", "0020_user_language"),
|
||||
("users", "0021_alter_user_language"),
|
||||
]
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
("takahe", "0001_initial"),
|
||||
("auth", "0012_alter_user_first_name_max_length"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
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"
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_superuser",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text="Designates that this user has all permissions without explicitly assigning them.",
|
||||
verbose_name="superuser status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"first_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="first name"
|
||||
),
|
||||
),
|
||||
(
|
||||
"last_name",
|
||||
models.CharField(
|
||||
blank=True, max_length=150, verbose_name="last name"
|
||||
),
|
||||
),
|
||||
(
|
||||
"email",
|
||||
models.EmailField(
|
||||
default=None,
|
||||
max_length=254,
|
||||
null=True,
|
||||
unique=True,
|
||||
verbose_name="email address",
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_staff",
|
||||
models.BooleanField(
|
||||
default=False,
|
||||
help_text="Designates whether the user can log into this admin site.",
|
||||
verbose_name="staff status",
|
||||
),
|
||||
),
|
||||
(
|
||||
"is_active",
|
||||
models.BooleanField(
|
||||
default=True,
|
||||
help_text="Designates whether this user should be treated as active. Unselect this instead of deleting accounts.",
|
||||
verbose_name="active",
|
||||
),
|
||||
),
|
||||
(
|
||||
"date_joined",
|
||||
models.DateTimeField(
|
||||
default=django.utils.timezone.now, verbose_name="date joined"
|
||||
),
|
||||
),
|
||||
(
|
||||
"username",
|
||||
models.CharField(
|
||||
error_messages={
|
||||
"unique": "A user with that username already exists."
|
||||
},
|
||||
help_text="Required. 50 characters or fewer. Letters, digits and _ only.",
|
||||
max_length=100,
|
||||
null=True,
|
||||
unique=True,
|
||||
validators=[users.models.user.UsernameValidator()],
|
||||
verbose_name="username",
|
||||
),
|
||||
),
|
||||
("following", models.JSONField(default=list)),
|
||||
(
|
||||
"mastodon_id",
|
||||
models.CharField(default=None, max_length=100, null=True),
|
||||
),
|
||||
(
|
||||
"mastodon_site",
|
||||
models.CharField(default=None, max_length=100, null=True),
|
||||
),
|
||||
("mastodon_token", models.CharField(default="", max_length=2048)),
|
||||
(
|
||||
"mastodon_refresh_token",
|
||||
models.CharField(default="", max_length=2048),
|
||||
),
|
||||
("mastodon_locked", models.BooleanField(default=False)),
|
||||
("mastodon_followers", models.JSONField(default=list)),
|
||||
("mastodon_following", models.JSONField(default=list)),
|
||||
("mastodon_mutes", models.JSONField(default=list)),
|
||||
("mastodon_blocks", models.JSONField(default=list)),
|
||||
("mastodon_domain_blocks", models.JSONField(default=list)),
|
||||
("mastodon_account", models.JSONField(default=dict)),
|
||||
(
|
||||
"mastodon_last_refresh",
|
||||
models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
("read_announcement_index", models.PositiveIntegerField(default=0)),
|
||||
(
|
||||
"groups",
|
||||
models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="The groups this user belongs to. A user will get all permissions granted to each of their groups.",
|
||||
related_name="user_set",
|
||||
related_query_name="user",
|
||||
to="auth.group",
|
||||
verbose_name="groups",
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_permissions",
|
||||
models.ManyToManyField(
|
||||
blank=True,
|
||||
help_text="Specific permissions for this user.",
|
||||
related_name="user_set",
|
||||
related_query_name="user",
|
||||
to="auth.permission",
|
||||
verbose_name="user permissions",
|
||||
),
|
||||
),
|
||||
(
|
||||
"mastodon_username",
|
||||
models.CharField(default=None, max_length=100, null=True),
|
||||
),
|
||||
(
|
||||
"pending_email",
|
||||
models.EmailField(
|
||||
default=None,
|
||||
max_length=254,
|
||||
null=True,
|
||||
verbose_name="email address pending verification",
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Preference",
|
||||
fields=[
|
||||
(
|
||||
"user",
|
||||
models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
("profile_layout", models.JSONField(blank=True, default=list)),
|
||||
(
|
||||
"export_status",
|
||||
models.JSONField(
|
||||
blank=True,
|
||||
default=dict,
|
||||
encoder=django.core.serializers.json.DjangoJSONEncoder,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
(
|
||||
"import_status",
|
||||
models.JSONField(
|
||||
blank=True,
|
||||
default=dict,
|
||||
encoder=django.core.serializers.json.DjangoJSONEncoder,
|
||||
null=True,
|
||||
),
|
||||
),
|
||||
("default_visibility", models.PositiveSmallIntegerField(default=0)),
|
||||
("classic_homepage", models.PositiveSmallIntegerField(default=0)),
|
||||
("mastodon_publish_public", models.BooleanField(default=False)),
|
||||
("mastodon_append_tag", models.CharField(default="", max_length=2048)),
|
||||
("show_last_edit", models.PositiveSmallIntegerField(default=0)),
|
||||
("no_anonymous_view", models.PositiveSmallIntegerField(default=0)),
|
||||
("default_no_share", models.BooleanField(default=False)),
|
||||
("discover_layout", models.JSONField(blank=True, default=list)),
|
||||
],
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="user",
|
||||
constraint=models.CheckConstraint(
|
||||
check=models.Q(
|
||||
("is_active", False),
|
||||
("mastodon_username__isnull", False),
|
||||
("email__isnull", False),
|
||||
_connector="OR",
|
||||
),
|
||||
name="at_least_one_login_method",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="user",
|
||||
constraint=models.UniqueConstraint(
|
||||
django.db.models.functions.text.Lower("email"), name="unique_email"
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="user",
|
||||
constraint=models.UniqueConstraint(
|
||||
django.db.models.functions.text.Lower("username"),
|
||||
name="unique_username",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="user",
|
||||
constraint=models.UniqueConstraint(
|
||||
django.db.models.functions.text.Lower("mastodon_username"),
|
||||
django.db.models.functions.text.Lower("mastodon_site"),
|
||||
name="unique_mastodon_username",
|
||||
),
|
||||
),
|
||||
migrations.AddConstraint(
|
||||
model_name="user",
|
||||
constraint=models.UniqueConstraint(
|
||||
django.db.models.functions.text.Lower("mastodon_id"),
|
||||
django.db.models.functions.text.Lower("mastodon_site"),
|
||||
name="unique_mastodon_id",
|
||||
),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Follow",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"target",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="local_following",
|
||||
field=models.ManyToManyField(
|
||||
related_name="local_followers",
|
||||
through="users.Follow",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="muting",
|
||||
field=models.JSONField(default=list),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="rejecting",
|
||||
field=models.JSONField(default=list),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Mute",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"target",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Block",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"owner",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
(
|
||||
"target",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="local_blocking",
|
||||
field=models.ManyToManyField(
|
||||
related_name="local_blocked_by",
|
||||
through="users.Block",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="local_muting",
|
||||
field=models.ManyToManyField(
|
||||
related_name="+", through="users.Mute", to=settings.AUTH_USER_MODEL
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="hidden_categories",
|
||||
field=models.JSONField(default=list),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="mastodon_last_reachable",
|
||||
field=models.DateTimeField(default=django.utils.timezone.now),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="APIdentity",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("local", models.BooleanField()),
|
||||
("username", models.CharField(blank=True, max_length=500, null=True)),
|
||||
(
|
||||
"domain_name",
|
||||
models.CharField(blank=True, max_length=500, null=True),
|
||||
),
|
||||
("deleted", models.DateTimeField(blank=True, null=True)),
|
||||
(
|
||||
"user",
|
||||
models.OneToOneField(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="identity",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"indexes": [
|
||||
models.Index(
|
||||
fields=["local", "username"],
|
||||
name="users_apide_local_2d8170_idx",
|
||||
),
|
||||
models.Index(
|
||||
fields=["domain_name", "username"],
|
||||
name="users_apide_domain__53ffa5_idx",
|
||||
),
|
||||
],
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="mastodon_skip_relationship",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="mastodon_skip_userinfo",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="mastodon_repost_mode",
|
||||
field=models.PositiveSmallIntegerField(default=0),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="post_public_mode",
|
||||
field=models.PositiveSmallIntegerField(default=0),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="preference",
|
||||
name="show_last_edit",
|
||||
field=models.PositiveSmallIntegerField(default=1),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="preference",
|
||||
name="mastodon_publish_public",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="preference",
|
||||
name="mastodon_default_repost",
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name="preference",
|
||||
name="default_no_share",
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name="user",
|
||||
index=models.Index(
|
||||
fields=["mastodon_site", "mastodon_username"],
|
||||
name="users_user_mastodo_bd2db5_idx",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="apidentity",
|
||||
name="anonymous_viewable",
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="Task",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("type", models.CharField(max_length=20)),
|
||||
(
|
||||
"state",
|
||||
models.IntegerField(
|
||||
choices=[
|
||||
(0, "Pending"),
|
||||
(1, "Started"),
|
||||
(2, "Complete"),
|
||||
(3, "Failed"),
|
||||
],
|
||||
default=0,
|
||||
),
|
||||
),
|
||||
("metadata", models.JSONField(default=dict)),
|
||||
("message", models.TextField(default="")),
|
||||
("created_time", models.DateTimeField(auto_now_add=True)),
|
||||
("edited_time", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"user",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"indexes": [
|
||||
models.Index(
|
||||
fields=["user", "type"], name="users_task_user_id_e29f34_idx"
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="user",
|
||||
name="language",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("en", "English"),
|
||||
("zh-hans", "Simplified Chinese"),
|
||||
("zh-hant", "Traditional Chinese"),
|
||||
],
|
||||
default="en",
|
||||
max_length=10,
|
||||
verbose_name="language",
|
||||
),
|
||||
),
|
||||
]
|
Loading…
Add table
Reference in a new issue