# Generated by Django 5.0.6 on 2024-06-08 10:13

import datetime
import django.contrib.auth.models
import django.contrib.auth.validators
import django.db.models.deletion
import django.utils.timezone
import uuid
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ("auth", "0012_alter_user_first_name_max_length"),
    ]

    operations = [
        migrations.CreateModel(
            name="Text",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(max_length=100)),
                ("content", models.TextField(verbose_name="Inhalt")),
                (
                    "text_code",
                    models.CharField(
                        blank=True, max_length=24, verbose_name="Text code"
                    ),
                ),
            ],
            options={
                "verbose_name": "Text",
                "verbose_name_plural": "Texte",
            },
        ),
        migrations.CreateModel(
            name="Image",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("image", models.ImageField(upload_to="images")),
                ("alt_text", models.TextField(max_length=2000)),
            ],
        ),
        migrations.CreateModel(
            name="Language",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        help_text="Der Name einer natürliche Sprache wie Deutsch, Englisch oder Arabisch.",
                        max_length=200,
                        unique=True,
                    ),
                ),
                (
                    "languagecode",
                    models.CharField(
                        help_text="Der standartisierte Sprachcode. Mehr Informationen: http://www.i18nguy.com/unicode/language-identifiers.html",
                        max_length=10,
                        verbose_name="Sprachcode",
                    ),
                ),
            ],
            options={
                "verbose_name": "Sprache",
                "verbose_name_plural": "Sprachen",
            },
        ),
        migrations.CreateModel(
            name="Location",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("place_id", models.IntegerField()),
                ("latitude", models.FloatField()),
                ("longitude", models.FloatField()),
                ("name", models.CharField(max_length=2000)),
            ],
        ),
        migrations.CreateModel(
            name="Report",
            fields=[
                (
                    "id",
                    models.UUIDField(
                        default=uuid.uuid4,
                        help_text="ID dieses reports",
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("action taken", "Action was taken"),
                            ("no action taken", "No action was taken"),
                            ("waiting", "Waiting for moderator action"),
                        ],
                        max_length=30,
                    ),
                ),
                ("user_comment", models.TextField(blank=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
            ],
            options={
                "permissions": [],
            },
        ),
        migrations.CreateModel(
            name="Species",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        help_text="Name der Tierart",
                        max_length=200,
                        verbose_name="Name",
                    ),
                ),
            ],
            options={
                "verbose_name": "Tierart",
                "verbose_name_plural": "Tierarten",
            },
        ),
        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",
                    ),
                ),
                (
                    "username",
                    models.CharField(
                        error_messages={
                            "unique": "A user with that username already exists."
                        },
                        help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
                        max_length=150,
                        unique=True,
                        validators=[
                            django.contrib.auth.validators.UnicodeUsernameValidator()
                        ],
                        verbose_name="username",
                    ),
                ),
                (
                    "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(
                        blank=True, max_length=254, 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"
                    ),
                ),
                (
                    "trust_level",
                    models.IntegerField(
                        choices=[
                            ("admin", 4),
                            ("Moderator", 3),
                            ("Koordinator*in", 2),
                            ("Mitglied", 1),
                        ],
                        default=1,
                    ),
                ),
                (
                    "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",
                    ),
                ),
                (
                    "preferred_language",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.PROTECT,
                        to="fellchensammlung.language",
                        verbose_name="Bevorzugte Sprache",
                    ),
                ),
            ],
            options={
                "verbose_name": "Nutzer*in",
                "verbose_name_plural": "Nutzer*innen",
            },
            managers=[
                ("objects", django.contrib.auth.models.UserManager()),
            ],
        ),
        migrations.CreateModel(
            name="AdoptionNotice",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "created_at",
                    models.DateField(
                        default=datetime.datetime.now, verbose_name="Erstellt am"
                    ),
                ),
                (
                    "searching_since",
                    models.DateField(verbose_name="Sucht nach einem Zuhause seit"),
                ),
                ("name", models.CharField(max_length=200)),
                (
                    "description",
                    models.TextField(
                        blank=True, null=True, verbose_name="Beschreibung"
                    ),
                ),
                (
                    "further_information",
                    models.URLField(
                        blank=True, null=True, verbose_name="Link zu mehr Informationen"
                    ),
                ),
                (
                    "group_only",
                    models.BooleanField(
                        default=False, verbose_name="Ausschließlich Gruppenadoption"
                    ),
                ),
                (
                    "location_string",
                    models.CharField(max_length=200, verbose_name="Ortsangabe"),
                ),
                (
                    "created_by",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Creator",
                    ),
                ),
                (
                    "photos",
                    models.ManyToManyField(blank=True, to="fellchensammlung.image"),
                ),
                (
                    "location",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        to="fellchensammlung.location",
                    ),
                ),
            ],
            options={
                "permissions": [
                    (
                        "create_active_adoption_notice",
                        "Can create an active adoption notice",
                    )
                ],
            },
        ),
        migrations.CreateModel(
            name="AdoptionNoticeStatus",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "major_status",
                    models.CharField(
                        choices=[
                            ("active", "active"),
                            ("awaiting_action", "in review"),
                            ("closed", "closed"),
                            ("disabled", "disabled"),
                        ],
                        max_length=200,
                    ),
                ),
                (
                    "minor_status",
                    models.CharField(
                        choices=[
                            ("searching", "searching"),
                            ("interested", "interested"),
                            ("waiting_for_review", "waiting_for_review"),
                            ("needs_additional_info", "needs_additional_info"),
                            (
                                "successful_with_notfellchen",
                                "successful_with_notfellchen",
                            ),
                            (
                                "successful_without_notfellchen",
                                "successful_without_notfellchen",
                            ),
                            ("animal_died", "animal_died"),
                            (
                                "closed_for_other_adoption_notice",
                                "closed_for_other_adoption_notice",
                            ),
                            (
                                "not_open_for_adoption_anymore",
                                "not_open_for_adoption_anymore",
                            ),
                            ("other", "other"),
                            ("against_the_rules", "against_the_rules"),
                            ("missing_information", "missing_information"),
                            ("technical_error", "technical_error"),
                        ],
                        max_length=200,
                    ),
                ),
                (
                    "adoption_notice",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.adoptionnotice",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="Announcement",
            fields=[
                (
                    "text_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="fellchensammlung.text",
                    ),
                ),
                ("logged_in_only", models.BooleanField(default=False)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "publish_start_time",
                    models.DateTimeField(verbose_name="Veröffentlichungszeitpunk"),
                ),
                (
                    "publish_end_time",
                    models.DateTimeField(verbose_name="Veröffentlichungsende"),
                ),
                (
                    "type",
                    models.CharField(
                        choices=[
                            ("important", "important"),
                            ("warning", "warning"),
                            ("info", "info"),
                        ],
                        default="info",
                        max_length=100,
                    ),
                ),
            ],
            bases=("fellchensammlung.text",),
        ),
        migrations.CreateModel(
            name="Comment",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("text", models.TextField(verbose_name="Inhalt")),
                (
                    "adoption_notice",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.adoptionnotice",
                        verbose_name="AdoptionNotice",
                    ),
                ),
                (
                    "reply_to",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.comment",
                        verbose_name="Antwort auf",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="Nutzer*in",
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="text",
            name="language",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.PROTECT,
                to="fellchensammlung.language",
                verbose_name="Sprache",
            ),
        ),
        migrations.CreateModel(
            name="ModerationAction",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "action",
                    models.CharField(
                        choices=[
                            ("user_banned", "User was banned"),
                            ("content_deleted", "Content was deleted"),
                            ("comment", "Comment was added"),
                            ("other_action_taken", "Other action was taken"),
                            ("no_action_taken", "No action was taken"),
                        ],
                        max_length=30,
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("public_comment", models.TextField(blank=True)),
                ("private_comment", models.TextField(blank=True)),
                (
                    "report",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.report",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="RescueOrganization",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=200)),
                (
                    "trusted",
                    models.BooleanField(default=False, verbose_name="Vertrauenswürdig"),
                ),
                (
                    "location_string",
                    models.CharField(
                        max_length=200, verbose_name="Ort der Organisation"
                    ),
                ),
                (
                    "instagram",
                    models.URLField(
                        blank=True, null=True, verbose_name="Instagram Profil"
                    ),
                ),
                (
                    "facebook",
                    models.URLField(
                        blank=True, null=True, verbose_name="Facebook Profil"
                    ),
                ),
                (
                    "fediverse_profile",
                    models.URLField(
                        blank=True, null=True, verbose_name="Fediverse Profil"
                    ),
                ),
                (
                    "website",
                    models.URLField(blank=True, null=True, verbose_name="Website"),
                ),
                (
                    "location",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.PROTECT,
                        to="fellchensammlung.location",
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="adoptionnotice",
            name="organization",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to="fellchensammlung.rescueorganization",
                verbose_name="Organisation",
            ),
        ),
        migrations.CreateModel(
            name="Rule",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(max_length=200)),
                ("rule_text", models.TextField()),
                ("rule_identifier", models.CharField(max_length=24)),
                (
                    "language",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.PROTECT,
                        to="fellchensammlung.language",
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="report",
            name="reported_broken_rules",
            field=models.ManyToManyField(to="fellchensammlung.rule"),
        ),
        migrations.CreateModel(
            name="Animal",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("date_of_birth", models.DateField(verbose_name="Geburtsdatum")),
                ("name", models.CharField(max_length=200)),
                (
                    "description",
                    models.TextField(
                        blank=True, null=True, verbose_name="Beschreibung"
                    ),
                ),
                (
                    "sex",
                    models.CharField(
                        choices=[
                            ("M_N", "neutered male"),
                            ("M", "male"),
                            ("F_N", "neutered female"),
                            ("F", "female"),
                        ],
                        max_length=20,
                    ),
                ),
                (
                    "adoption_notice",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.adoptionnotice",
                    ),
                ),
                (
                    "photos",
                    models.ManyToManyField(blank=True, to="fellchensammlung.image"),
                ),
                (
                    "species",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.PROTECT,
                        to="fellchensammlung.species",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="ReportAdoptionNotice",
            fields=[
                (
                    "report_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="fellchensammlung.report",
                    ),
                ),
                (
                    "adoption_notice",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.adoptionnotice",
                    ),
                ),
            ],
            bases=("fellchensammlung.report",),
        ),
        migrations.CreateModel(
            name="ReportComment",
            fields=[
                (
                    "report_ptr",
                    models.OneToOneField(
                        auto_created=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        parent_link=True,
                        primary_key=True,
                        serialize=False,
                        to="fellchensammlung.report",
                    ),
                ),
                (
                    "reported_comment",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="fellchensammlung.comment",
                    ),
                ),
            ],
            bases=("fellchensammlung.report",),
        ),
    ]
