# Generated by Django 3.0.11 on 2021-01-31 06:22

import TWLight.resources.models
import datetime
from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.manager
from django.utils.timezone import utc
import django_countries.fields


# Functions from the following migrations need manual copying.
# Move them and any dependencies into this file, then update the
# RunPython operations to refer to the local versions:
# TWLight.resources.migrations.0013_auto_20161207_1505
# TWLight.resources.migrations.0015_auto_20161208_1526
# TWLight.resources.migrations.0020_move_to_internal_durationfield

# Functions from the following migrations need skipped
# TWLight.resources.migrations.0045_migrate_tags


def fix_partner_status(apps, schema_editor):
    Partner = apps.get_model("resources", "Partner")
    for partner in Partner.objects.all():
        # This should be Partner.AVAILABLE. We can't reference that directly
        # since it's not available to the migrations, though. Careful!
        partner.status = 0
        partner.save()


def initialize_languages(apps, schema_editor):
    """
    Make sure the database starts with a few languages we know Partners offer.
    (This will also make it easier for administrators to use the language
    field in the admin site.)
    """
    Language = apps.get_model("resources", "Language")
    basic_codes = ["en", "fr", "fa"]
    for code in basic_codes:
        lang = Language(language=code)
        lang.save()


def copy_access_grant_terms(apps, schema_editor):
    Partner = apps.get_model("resources", "Partner")
    # Although this looks like it should only get AVAILABLE Partners (since
    # we've defined a custom manager), in fact it uses the Django default
    # internal manager and finds all Partners.
    for partner in Partner.objects.all():
        partner.access_grant_term_pythonic = partner.access_grant_term
        partner.save()


def delete_access_grant_terms(apps, schema_editor):
    Partner = apps.get_model("resources", "Partner")
    for partner in Partner.objects.all():
        partner.access_grant_term_pythonic = None
        partner.save()


class Migration(migrations.Migration):

    dependencies = [
        ("contenttypes", "0002_remove_content_type_name"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="Partner",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "company_name",
                    models.CharField(
                        help_text="Partner organization's name (e.g. McFarland). Note: this will be user-visible and *not translated*.",
                        max_length=40,
                    ),
                ),
                (
                    "terms_of_use",
                    models.URLField(
                        blank=True,
                        help_text="Link to terms of use. Required if this company requires that users agree to terms of use as a condition of applying for access; optional otherwise.",
                        null=True,
                    ),
                ),
                (
                    "description",
                    models.TextField(
                        blank=True,
                        help_text=b"Optional description of this partner's offerings.",
                        null=True,
                    ),
                ),
                (
                    "mutually_exclusive",
                    models.BooleanField(
                        default=None,
                        null=True,
                        help_text=b"If True, users can only apply for one Stream at a time from this Partner. If False, users can apply for multiple Streams at a time. This field must be filled in when Partners have multiple Streams, but may be left blank otherwise.",
                    ),
                ),
                (
                    "real_name",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify their real names.",
                    ),
                ),
                (
                    "country_of_residence",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify their countries of residence.",
                    ),
                ),
                (
                    "specific_title",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify a particular title they want to access.",
                    ),
                ),
                (
                    "specific_stream",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify a particular database they want to access.",
                    ),
                ),
                (
                    "occupation",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify their occupation.",
                    ),
                ),
                (
                    "affiliation",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to specify their institutional affiliation.",
                    ),
                ),
                (
                    "agreement_with_terms_of_use",
                    models.BooleanField(
                        default=False,
                        help_text="Mark as true if this partner requires applicants to agree with the partner's terms of use.",
                    ),
                ),
                (
                    "access_grant_term",
                    models.DurationField(
                        blank=True,
                        help_text=b"The standard length of an access grant from this Partner. Enter like '365 days' or '365d' or '1 year'.",
                        null=True,
                    ),
                ),
                (
                    "date_created",
                    models.DateField(
                        auto_now_add=True,
                        default=datetime.datetime(
                            2016, 5, 9, 19, 18, 3, 475335, tzinfo=utc
                        ),
                    ),
                ),
                (
                    "logo_url",
                    models.URLField(
                        blank=True,
                        help_text="Optional URL of an image that can be used to represent this partner.",
                        null=True,
                    ),
                ),
                (
                    "status",
                    models.IntegerField(
                        choices=[(0, "Available"), (1, "Not available")], default=1
                    ),
                ),
            ],
            options={
                "verbose_name": "partner",
                "verbose_name_plural": "partners",
                "ordering": ["company_name"],
            },
        ),
        migrations.CreateModel(
            name="Stream",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "name",
                    models.CharField(
                        help_text=b"Name of stream (e.g. 'Health and Behavioral Sciences). Will be user-visible and *not translated*. Do not include the name of the partner here. If partner name and resource name need to be presented together, templates are responsible for presenting them in a format that can be internationalized.",
                        max_length=50,
                    ),
                ),
                (
                    "description",
                    models.TextField(
                        blank=True,
                        help_text=b"Optional description of this stream's contents.",
                        null=True,
                    ),
                ),
                (
                    "partner",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="streams",
                        to="resources.Partner",
                    ),
                ),
            ],
            options={
                "verbose_name": "collection",
                "verbose_name_plural": "collections",
                "ordering": ["partner", "name"],
            },
        ),
        migrations.CreateModel(
            name="Contact",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "title",
                    models.CharField(
                        help_text="Organizational role or job title. This is NOT intended to be used for honorifics.",
                        max_length=30,
                    ),
                ),
                ("email", models.EmailField(max_length=75)),
                ("full_name", models.CharField(max_length=50)),
                (
                    "short_name",
                    models.CharField(
                        help_text=b"The form of the contact person's name to use in email greetings (as in 'Hi Jake')",
                        max_length=15,
                    ),
                ),
                (
                    "partner",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="contacts",
                        to="resources.Partner",
                    ),
                ),
            ],
            options={
                "verbose_name": "contact person",
                "verbose_name_plural": "contact people",
            },
        ),
        migrations.RunPython(
            code=fix_partner_status,
        ),
        migrations.CreateModel(
            name="Language",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "language",
                    models.CharField(
                        choices=[
                            (b"af", b"Afrikaans"),
                            (b"ar", b"Arabic"),
                            (b"ast", b"Asturian"),
                            (b"az", b"Azerbaijani"),
                            (b"bg", b"Bulgarian"),
                            (b"be", b"Belarusian"),
                            (b"bn", b"Bengali"),
                            (b"br", b"Breton"),
                            (b"bs", b"Bosnian"),
                            (b"ca", b"Catalan"),
                            (b"cs", b"Czech"),
                            (b"cy", b"Welsh"),
                            (b"da", b"Danish"),
                            (b"de", b"German"),
                            (b"el", b"Greek"),
                            (b"en", b"English"),
                            (b"en-au", b"Australian English"),
                            (b"en-gb", b"British English"),
                            (b"eo", b"Esperanto"),
                            (b"es", b"Spanish"),
                            (b"es-ar", b"Argentinian Spanish"),
                            (b"es-mx", b"Mexican Spanish"),
                            (b"es-ni", b"Nicaraguan Spanish"),
                            (b"es-ve", b"Venezuelan Spanish"),
                            (b"et", b"Estonian"),
                            (b"eu", b"Basque"),
                            (b"fa", b"Persian"),
                            (b"fi", b"Finnish"),
                            (b"fr", b"French"),
                            (b"fy", b"Frisian"),
                            (b"ga", b"Irish"),
                            (b"gl", b"Galician"),
                            (b"he", b"Hebrew"),
                            (b"hi", b"Hindi"),
                            (b"hr", b"Croatian"),
                            (b"hu", b"Hungarian"),
                            (b"ia", b"Interlingua"),
                            (b"id", b"Indonesian"),
                            (b"io", b"Ido"),
                            (b"is", b"Icelandic"),
                            (b"it", b"Italian"),
                            (b"ja", b"Japanese"),
                            (b"ka", b"Georgian"),
                            (b"kk", b"Kazakh"),
                            (b"km", b"Khmer"),
                            (b"kn", b"Kannada"),
                            (b"ko", b"Korean"),
                            (b"lb", b"Luxembourgish"),
                            (b"lt", b"Lithuanian"),
                            (b"lv", b"Latvian"),
                            (b"mk", b"Macedonian"),
                            (b"ml", b"Malayalam"),
                            (b"mn", b"Mongolian"),
                            (b"mr", b"Marathi"),
                            (b"my", b"Burmese"),
                            (b"nb", b"Norwegian Bokmal"),
                            (b"ne", b"Nepali"),
                            (b"nl", b"Dutch"),
                            (b"nn", b"Norwegian Nynorsk"),
                            (b"os", b"Ossetic"),
                            (b"pa", b"Punjabi"),
                            (b"pl", b"Polish"),
                            (b"pt", b"Portuguese"),
                            (b"pt-br", b"Brazilian Portuguese"),
                            (b"ro", b"Romanian"),
                            (b"ru", b"Russian"),
                            (b"sk", b"Slovak"),
                            (b"sl", b"Slovenian"),
                            (b"sq", b"Albanian"),
                            (b"sr", b"Serbian"),
                            (b"sr-latn", b"Serbian Latin"),
                            (b"sv", b"Swedish"),
                            (b"sw", b"Swahili"),
                            (b"ta", b"Tamil"),
                            (b"te", b"Telugu"),
                            (b"th", b"Thai"),
                            (b"tr", b"Turkish"),
                            (b"tt", b"Tatar"),
                            (b"udm", b"Udmurt"),
                            (b"uk", b"Ukrainian"),
                            (b"ur", b"Urdu"),
                            (b"vi", b"Vietnamese"),
                            (b"zh-cn", b"Simplified Chinese"),
                            (b"zh-hans", b"Simplified Chinese"),
                            (b"zh-hant", b"Traditional Chinese"),
                            (b"zh-tw", b"Traditional Chinese"),
                        ],
                        error_messages={
                            b"invalid_choice": "You must enter an ISO language code, as in the LANGUAGES setting at https://github.com/django/django/blob/master/django/conf/global_settings.py"
                        },
                        max_length=8,
                    ),
                ),
            ],
            options={
                "verbose_name": "Language",
                "verbose_name_plural": "Languages",
            },
        ),
        migrations.AddField(
            model_name="partner",
            name="languages",
            field=models.ManyToManyField(
                blank=True, null=True, to="resources.Language"
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="status",
            field=models.IntegerField(
                choices=[(0, "Available"), (1, "Not available")],
                default=1,
                help_text="Should this Partner be displayed to end users? Is it open for applications right now?",
            ),
        ),
        migrations.RunPython(
            code=initialize_languages,
        ),
        migrations.AddField(
            model_name="stream",
            name="languages",
            field=models.ManyToManyField(
                blank=True, null=True, to="resources.Language"
            ),
        ),
        migrations.AlterField(
            model_name="language",
            name="language",
            field=models.CharField(
                choices=[
                    (b"af", b"Afrikaans"),
                    (b"ar", b"Arabic"),
                    (b"ast", b"Asturian"),
                    (b"az", b"Azerbaijani"),
                    (b"bg", b"Bulgarian"),
                    (b"be", b"Belarusian"),
                    (b"bn", b"Bengali"),
                    (b"br", b"Breton"),
                    (b"bs", b"Bosnian"),
                    (b"ca", b"Catalan"),
                    (b"cs", b"Czech"),
                    (b"cy", b"Welsh"),
                    (b"da", b"Danish"),
                    (b"de", b"German"),
                    (b"el", b"Greek"),
                    (b"en", b"English"),
                    (b"en-au", b"Australian English"),
                    (b"en-gb", b"British English"),
                    (b"eo", b"Esperanto"),
                    (b"es", b"Spanish"),
                    (b"es-ar", b"Argentinian Spanish"),
                    (b"es-mx", b"Mexican Spanish"),
                    (b"es-ni", b"Nicaraguan Spanish"),
                    (b"es-ve", b"Venezuelan Spanish"),
                    (b"et", b"Estonian"),
                    (b"eu", b"Basque"),
                    (b"fa", b"Persian"),
                    (b"fi", b"Finnish"),
                    (b"fr", b"French"),
                    (b"fy", b"Frisian"),
                    (b"ga", b"Irish"),
                    (b"gl", b"Galician"),
                    (b"he", b"Hebrew"),
                    (b"hi", b"Hindi"),
                    (b"hr", b"Croatian"),
                    (b"hu", b"Hungarian"),
                    (b"ia", b"Interlingua"),
                    (b"id", b"Indonesian"),
                    (b"io", b"Ido"),
                    (b"is", b"Icelandic"),
                    (b"it", b"Italian"),
                    (b"ja", b"Japanese"),
                    (b"ka", b"Georgian"),
                    (b"kk", b"Kazakh"),
                    (b"km", b"Khmer"),
                    (b"kn", b"Kannada"),
                    (b"ko", b"Korean"),
                    (b"lb", b"Luxembourgish"),
                    (b"lt", b"Lithuanian"),
                    (b"lv", b"Latvian"),
                    (b"mk", b"Macedonian"),
                    (b"ml", b"Malayalam"),
                    (b"mn", b"Mongolian"),
                    (b"mr", b"Marathi"),
                    (b"my", b"Burmese"),
                    (b"nb", b"Norwegian Bokmal"),
                    (b"ne", b"Nepali"),
                    (b"nl", b"Dutch"),
                    (b"nn", b"Norwegian Nynorsk"),
                    (b"os", b"Ossetic"),
                    (b"pa", b"Punjabi"),
                    (b"pl", b"Polish"),
                    (b"pt", b"Portuguese"),
                    (b"pt-br", b"Brazilian Portuguese"),
                    (b"ro", b"Romanian"),
                    (b"ru", b"Russian"),
                    (b"sk", b"Slovak"),
                    (b"sl", b"Slovenian"),
                    (b"sq", b"Albanian"),
                    (b"sr", b"Serbian"),
                    (b"sr-latn", b"Serbian Latin"),
                    (b"sv", b"Swedish"),
                    (b"sw", b"Swahili"),
                    (b"ta", b"Tamil"),
                    (b"te", b"Telugu"),
                    (b"th", b"Thai"),
                    (b"tr", b"Turkish"),
                    (b"tt", b"Tatar"),
                    (b"udm", b"Udmurt"),
                    (b"uk", b"Ukrainian"),
                    (b"ur", b"Urdu"),
                    (b"vi", b"Vietnamese"),
                    (b"zh-cn", b"Simplified Chinese"),
                    (b"zh-hans", b"Simplified Chinese"),
                    (b"zh-hant", b"Traditional Chinese"),
                    (b"zh-tw", b"Traditional Chinese"),
                ],
                max_length=8,
                unique=True,
                validators=[TWLight.resources.models.validate_language_code],
            ),
        ),
        migrations.AlterField(
            model_name="contact",
            name="title",
            field=models.CharField(
                help_text="Organizational role or job title. This is NOT intended to be used for honorifics. Think 'Director of Editorial Services', not 'Ms.'",
                max_length=75,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="access_grant_term_pythonic",
            field=models.DurationField(
                blank=True, default=datetime.timedelta(days=365), null=True
            ),
        ),
        migrations.AlterField(
            model_name="contact",
            name="email",
            field=models.EmailField(max_length=254),
        ),
        migrations.RunPython(
            code=copy_access_grant_terms,
            reverse_code=delete_access_grant_terms,
        ),
        migrations.RemoveField(
            model_name="partner",
            name="access_grant_term",
        ),
        migrations.RenameField(
            model_name="partner",
            old_name="access_grant_term_pythonic",
            new_name="access_grant_term",
        ),
        migrations.RemoveField(
            model_name="partner",
            name="access_grant_term",
        ),
        migrations.AlterField(
            model_name="partner",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's offerings. You can enter HTML and it should render properly - if it does not, the developer forgot a | safe filter in the template.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="stream",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's contents. You can enter HTML and it should render properly - if it does not, the developer forgot a | safe filter in the template.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's offerings. You can enter HTML and it should render properly - if it does not, the developer forgot a | safe filter in the template. Whatever you enter here will also be automatically copied over to the description field for *your current language*, so you do not need to also fill that out.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="languages",
            field=models.ManyToManyField(
                blank=True,
                help_text="Select all languages in which this partner publishes content.",
                null=True,
                to="resources.Language",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="coordinator",
            field=models.ForeignKey(
                blank=True,
                help_text="The coordinator for this Partner, if any.",
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="languages",
            field=models.ManyToManyField(
                blank=True,
                help_text="Select all languages in which this partner publishes content.",
                to="resources.Language",
            ),
        ),
        migrations.AlterField(
            model_name="stream",
            name="languages",
            field=models.ManyToManyField(blank=True, to="resources.Language"),
        ),
        migrations.AlterField(
            model_name="partner",
            name="status",
            field=models.IntegerField(
                choices=[(0, "Available"), (1, "Not available"), (2, "Waitlisted")],
                default=1,
                help_text="Should this Partner be displayed to end users? Is it open for applications right now?",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="tags",
            field=models.TextField(
                blank=True,
                null=True,
                default=None,
                help_text="A comma-separated list of tags.",
                verbose_name="Tags",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="renewals_available",
            field=models.BooleanField(
                default=False,
                help_text="Can access grants to this partner be renewed? If so, users will be able to request renewals at any time.",
            ),
        ),
        migrations.AlterField(
            model_name="contact",
            name="title",
            field=models.CharField(
                blank=True,
                help_text="Organizational role or job title. This is NOT intended to be used for honorifics. Think 'Director of Editorial Services', not 'Ms.' Optional.",
                max_length=75,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's offerings. You can enter wikicode and it should render properly - if it does not, the developer forgot a | safe filter in the template. Whatever you enter here will also be automatically copied over to the description field for *your current language*, so you do not need to also fill that out.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="stream",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's contents. You can enter wikicode and it should render properly - if it does not, the developer forgot a | safe filter in the template.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="company_name",
            field=models.CharField(
                help_text="Partner's name (e.g. McFarland). Note: this will be user-visible and *not translated*.",
                max_length=40,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="country_of_residence",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true if this partner requires applicant countries of residence.",
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_en",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_fi",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_fr",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this partner's resources.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="real_name",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true if this partner requires applicant names.",
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="specific_stream",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true if this partner requires applicants to specify the database they want to access.",
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="specific_title",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true if this partner requires applicants to specify the title they want to access.",
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="terms_of_use",
            field=models.URLField(
                blank=True,
                help_text="Link to terms of use. Required if users must agree to terms of use to get access; optional otherwise.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="stream",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="stream",
            name="name",
            field=models.CharField(
                help_text="Name of stream (e.g. 'Health and Behavioral Sciences). Will be user-visible and *not translated*. Do not include the name of the partner here.",
                max_length=50,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_en",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_fi",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_fr",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_en",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_fi",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_fr",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.RemoveField(
            model_name="partner",
            name="logo_url",
        ),
        migrations.CreateModel(
            name="PartnerLogo",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "logo",
                    models.ImageField(
                        blank=True,
                        help_text="Optional image file that can be used to represent this partner.",
                        null=True,
                        upload_to=b"",
                    ),
                ),
                (
                    "partner",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="logos",
                        to="resources.Partner",
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="partner",
            name="bundle",
            field=models.BooleanField(
                default=False,
                null=True,
                help_text="Is this partner a part of the Bundle?",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="featured",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true to feature this partner on the front page.",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="account_email",
            field=models.BooleanField(
                default=False,
                help_text="Mark as true if this partner requires applicants to have already signed up at the partner website.",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="registration_url",
            field=models.URLField(
                blank=True,
                help_text="Link to registration page. Required if users must sign up on the partner's website in advance; optional otherwise.",
                null=True,
            ),
        ),
        migrations.AlterModelManagers(
            name="partner",
            managers=[
                ("even_not_available", django.db.models.manager.Manager()),
            ],
        ),
        migrations.AlterField(
            model_name="language",
            name="language",
            field=models.CharField(
                choices=[
                    ("af", "Afrikaans"),
                    ("ar", "Arabic"),
                    ("ast", "Asturian"),
                    ("az", "Azerbaijani"),
                    ("bg", "Bulgarian"),
                    ("be", "Belarusian"),
                    ("bn", "Bengali"),
                    ("br", "Breton"),
                    ("bs", "Bosnian"),
                    ("ca", "Catalan"),
                    ("cs", "Czech"),
                    ("cy", "Welsh"),
                    ("da", "Danish"),
                    ("de", "German"),
                    ("dsb", "Lower Sorbian"),
                    ("el", "Greek"),
                    ("en", "English"),
                    ("en-au", "Australian English"),
                    ("en-gb", "British English"),
                    ("eo", "Esperanto"),
                    ("es", "Spanish"),
                    ("es-ar", "Argentinian Spanish"),
                    ("es-co", "Colombian Spanish"),
                    ("es-mx", "Mexican Spanish"),
                    ("es-ni", "Nicaraguan Spanish"),
                    ("es-ve", "Venezuelan Spanish"),
                    ("et", "Estonian"),
                    ("eu", "Basque"),
                    ("fa", "Persian"),
                    ("fi", "Finnish"),
                    ("fr", "French"),
                    ("fy", "Frisian"),
                    ("ga", "Irish"),
                    ("gd", "Scottish Gaelic"),
                    ("gl", "Galician"),
                    ("he", "Hebrew"),
                    ("hi", "Hindi"),
                    ("hr", "Croatian"),
                    ("hsb", "Upper Sorbian"),
                    ("hu", "Hungarian"),
                    ("ia", "Interlingua"),
                    ("id", "Indonesian"),
                    ("io", "Ido"),
                    ("is", "Icelandic"),
                    ("it", "Italian"),
                    ("ja", "Japanese"),
                    ("ka", "Georgian"),
                    ("kk", "Kazakh"),
                    ("km", "Khmer"),
                    ("kn", "Kannada"),
                    ("ko", "Korean"),
                    ("lb", "Luxembourgish"),
                    ("lt", "Lithuanian"),
                    ("lv", "Latvian"),
                    ("mk", "Macedonian"),
                    ("ml", "Malayalam"),
                    ("mn", "Mongolian"),
                    ("mr", "Marathi"),
                    ("my", "Burmese"),
                    ("nb", "Norwegian Bokmål"),
                    ("ne", "Nepali"),
                    ("nl", "Dutch"),
                    ("nn", "Norwegian Nynorsk"),
                    ("os", "Ossetic"),
                    ("pa", "Punjabi"),
                    ("pl", "Polish"),
                    ("pt", "Portuguese"),
                    ("pt-br", "Brazilian Portuguese"),
                    ("ro", "Romanian"),
                    ("ru", "Russian"),
                    ("sk", "Slovak"),
                    ("sl", "Slovenian"),
                    ("sq", "Albanian"),
                    ("sr", "Serbian"),
                    ("sr-latn", "Serbian Latin"),
                    ("sv", "Swedish"),
                    ("sw", "Swahili"),
                    ("ta", "Tamil"),
                    ("te", "Telugu"),
                    ("th", "Thai"),
                    ("tr", "Turkish"),
                    ("tt", "Tatar"),
                    ("udm", "Udmurt"),
                    ("uk", "Ukrainian"),
                    ("ur", "Urdu"),
                    ("vi", "Vietnamese"),
                    ("zh-hans", "Simplified Chinese"),
                    ("zh-hant", "Traditional Chinese"),
                ],
                max_length=8,
                unique=True,
                validators=[TWLight.resources.models.validate_language_code],
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="company_location",
            field=django_countries.fields.CountryField(
                help_text="Partner's primary location.", max_length=2, null=True
            ),
        ),
        migrations.CreateModel(
            name="TaggedTextField",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "object_id",
                    models.IntegerField(db_index=True, verbose_name="Object id"),
                ),
                (
                    "content_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="resources_taggedtextfield_tagged_items",
                        to="contenttypes.ContentType",
                        verbose_name="Content type",
                    ),
                ),
            ],
            options={
                "abstract": False,
            },
        ),
        migrations.CreateModel(
            name="TextFieldTag",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.TextField(max_length=100, verbose_name="Name")),
                (
                    "name_en",
                    models.TextField(max_length=100, null=True, verbose_name="Name"),
                ),
                (
                    "name_fi",
                    models.TextField(max_length=100, null=True, verbose_name="Name"),
                ),
                (
                    "name_fr",
                    models.TextField(max_length=100, null=True, verbose_name="Name"),
                ),
                (
                    "slug",
                    models.SlugField(max_length=100, unique=True, verbose_name="Slug"),
                ),
            ],
            options={
                "verbose_name": "Tag",
                "verbose_name_plural": "Tags",
            },
        ),
        migrations.AlterField(
            model_name="partner",
            name="tags",
            field=models.TextField(
                blank=True,
                null=True,
                default=None,
                help_text="A comma-separated list of tags.",
                verbose_name="Tags",
            ),
        ),
        migrations.AddField(
            model_name="taggedtextfield",
            name="tag",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE,
                related_name="resources_taggedtextfield_items",
                to="resources.TextFieldTag",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="old_tags",
            field=models.TextField(
                blank=True,
                null=True,
                default=None,
                help_text="A comma-separated list of tags.",
                verbose_name="Old Tags",
            ),
        ),
        migrations.AlterField(
            model_name="language",
            name="language",
            field=models.CharField(
                choices=[
                    ("af", "Afrikaans"),
                    ("ar", "العربية"),
                    ("ast", "asturianu"),
                    ("az", "az-latn"),
                    ("be", "беларуская"),
                    ("bg", "български"),
                    ("bn", "বাংলা"),
                    ("br", "brezhoneg"),
                    ("bs", "bosanski"),
                    ("ca", "català"),
                    ("cs", "čeština"),
                    ("cy", "Cymraeg"),
                    ("da", "dansk"),
                    ("de", "Deutsch"),
                    ("dsb", "dolnoserbski"),
                    ("el", "Ελληνικά"),
                    ("en", "English"),
                    ("en-gb", "British English"),
                    ("eo", "Esperanto"),
                    ("es", "español"),
                    ("es-ni", "español nicaragüense"),
                    ("et", "eesti"),
                    ("eu", "euskara"),
                    ("fa", "فارسی"),
                    ("fi", "suomi"),
                    ("fr", "français"),
                    ("fy", "Frysk"),
                    ("ga", "Gaeilge"),
                    ("gd", "Gàidhlig"),
                    ("gl", "galego"),
                    ("he", "עברית"),
                    ("hi", "हिन्दी"),
                    ("hr", "hrvatski"),
                    ("hsb", "hornjoserbsce"),
                    ("hu", "magyar"),
                    ("ia", "interlingua"),
                    ("id", "Bahasa Indonesia"),
                    ("io", "Ido"),
                    ("is", "íslenska"),
                    ("it", "italiano"),
                    ("ja", "日本語"),
                    ("ka", "ქართული"),
                    ("kk", "kk-cyrl"),
                    ("km", "ភាសាខ្មែរ"),
                    ("kn", "ಕನ್ನಡ"),
                    ("ko", "한국어"),
                    ("lb", "Lëtzebuergesch"),
                    ("lt", "lietuvių"),
                    ("lv", "latviešu"),
                    ("mk", "македонски"),
                    ("ml", "മലയാളം"),
                    ("mn", "монгол"),
                    ("mr", "मराठी"),
                    ("my", "မြန်မာဘာသာ"),
                    ("nb", "norsk (bokmål)"),
                    ("ne", "नेपाली"),
                    ("nl", "Nederlands"),
                    ("nn", "norsk (nynorsk)"),
                    ("os", "Ирон"),
                    ("pa", "pa-guru"),
                    ("pl", "polski"),
                    ("pt", "português"),
                    ("pt-br", "português do Brasil"),
                    ("ro", "română"),
                    ("ru", "русский"),
                    ("sk", "slovenčina"),
                    ("sl", "slovenščina"),
                    ("sq", "shqip"),
                    ("sr", "sr-cyrl"),
                    ("sr-latn", "srpski"),
                    ("sv", "svenska"),
                    ("sw", "Kiswahili"),
                    ("ta", "தமிழ்"),
                    ("te", "తెలుగు"),
                    ("th", "ไทย"),
                    ("tr", "Türkçe"),
                    ("tt", "татарча"),
                    ("udm", "удмурт"),
                    ("uk", "українська"),
                    ("ur", "اردو"),
                    ("vi", "Tiếng Việt"),
                    ("zh-hans", "中文（简体）"),
                    ("zh-hant", "中文（繁體）"),
                ],
                max_length=8,
                unique=True,
                validators=[TWLight.resources.models.validate_language_code],
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="coordinator",
            field=models.ForeignKey(
                blank=True,
                help_text="The coordinator for this Partner, if any.",
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_ar",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_ar",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_ar",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AlterField(
            model_name="partner",
            name="status",
            field=models.IntegerField(
                choices=[(0, "Available"), (1, "Not available"), (2, "Waitlisted")],
                default=1,
                help_text="Should this Partner be displayed to users? Is it open for applications right now?",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="excerpt_limit",
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text="Optional excerpt limit in terms of number of words per article. Leave empty if no limit.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="excerpt_limit_percentage",
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text="Optional excerpt limit in terms of percentage (%) of an article. Leave empty if no limit.",
                null=True,
                validators=[django.core.validators.MaxValueValidator(100)],
            ),
        ),
        migrations.RenameField(
            model_name="partner",
            old_name="description",
            new_name="short_description",
        ),
        migrations.RenameField(
            model_name="partner",
            old_name="description_en",
            new_name="short_description_en",
        ),
        migrations.RenameField(
            model_name="partner",
            old_name="description_fi",
            new_name="short_description_fi",
        ),
        migrations.RenameField(
            model_name="partner",
            old_name="description_fr",
            new_name="short_description_fr",
        ),
        migrations.AddField(
            model_name="partner",
            name="description",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_ar",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_en",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_fi",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_fr",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="short_description",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_ar",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="short_description_en",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="short_description_fi",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AlterField(
            model_name="partner",
            name="short_description_fr",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="accounts_available",
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text="Add number of new accounts to the existing value, not by reseting it to zero.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="accounts_available",
            field=models.PositiveSmallIntegerField(
                blank=True,
                help_text="Add number of new accounts to the existing value, not by reseting it to zero.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_ko",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_mk",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_my",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_pt",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_pt_br",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_sv",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_tr",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_zh_hans",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_zh_hant",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_ko",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_mk",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_my",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_pt",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_pt_br",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_sv",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_tr",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_zh_hans",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_zh_hant",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_ko",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_mk",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_my",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_pt",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_pt_br",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_sv",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_tr",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_zh_hans",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_zh_hant",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_ko",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_mk",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_my",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_pt",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_pt_br",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_sv",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_tr",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_zh_hans",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_zh_hant",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_ko",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_mk",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_my",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_pt",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_pt_br",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_sv",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_tr",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_zh_hans",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_zh_hant",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_da",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_da",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_da",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_da",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_da",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.CreateModel(
            name="Video",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "tutorial_video_url",
                    models.URLField(
                        blank=True, help_text="URL of a video tutorial.", null=True
                    ),
                ),
                (
                    "partner",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="videos",
                        to="resources.Partner",
                    ),
                ),
            ],
            options={
                "ordering": ["partner"],
                "verbose_name": "video tutorial",
                "verbose_name_plural": "video tutorials",
            },
        ),
        migrations.AddField(
            model_name="partner",
            name="description_br",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_br",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_br",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_br",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_br",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_de",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_de",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_de",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_de",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_de",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.CreateModel(
            name="Suggestion",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "suggested_company_name",
                    models.CharField(
                        help_text="Potential partner's name (e.g. McFarland).",
                        max_length=40,
                    ),
                ),
                (
                    "description",
                    models.TextField(
                        blank=True,
                        help_text="Optional description of this potential partner.",
                        max_length=1000,
                    ),
                ),
                (
                    "company_url",
                    models.URLField(
                        blank=True,
                        help_text="Link to the potential partner's website.",
                        null=True,
                    ),
                ),
                (
                    "author",
                    models.ForeignKey(
                        blank=True,
                        help_text="User who authored this suggestion.",
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="suggestion_author",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "upvoted_users",
                    models.ManyToManyField(
                        blank=True,
                        help_text="Users who have upvoted this suggestion.",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
            options={
                "ordering": ["suggested_company_name"],
                "verbose_name": "suggestion",
                "verbose_name_plural": "suggestions",
            },
        ),
        migrations.AddField(
            model_name="partner",
            name="description_fa",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_fa",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_fa",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_fa",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_fa",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_ru",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_ta",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_ru",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_ta",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_ru",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_ta",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_ru",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_ta",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_ru",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_ta",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_hi",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="description_mr",
            field=models.TextField(
                blank=True,
                help_text="Optional detailed description in addition to the short description such as collections, instructions, notes, special requirements, alternate access options, unique features, citations notes.",
                null=True,
                verbose_name=b"long description",
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_hi",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="send_instructions_mr",
            field=models.TextField(
                blank=True,
                help_text="Optional instructions for sending application data to this partner.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_hi",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="partner",
            name="short_description_mr",
            field=models.TextField(
                blank=True,
                help_text="Optional short description of this partner's resources.",
                max_length=1000,
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_hi",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="stream",
            name="description_mr",
            field=models.TextField(
                blank=True,
                help_text="Optional description of this stream's resources.",
                null=True,
            ),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_hi",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.AddField(
            model_name="textfieldtag",
            name="name_mr",
            field=models.TextField(max_length=100, null=True, verbose_name="Name"),
        ),
        migrations.CreateModel(
            name="AccessCode",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "code",
                    models.CharField(
                        help_text="An access code for this partner.", max_length=60
                    ),
                ),
            ],
            options={
                "verbose_name": "access code",
                "verbose_name_plural": "access codes",
            },
        ),
        migrations.RemoveField(
            model_name="partner",
            name="bundle",
        ),
        migrations.AddField(
            model_name="partner",
            name="authorization_method",
            field=models.IntegerField(
                choices=[
                    (0, "Email"),
                    (1, "Access codes"),
                    (2, "Proxy"),
                    (3, "Library Bundle"),
                ],
                default=0,
                help_text="Which authorization method does this partner use? 'Email' means the accounts are set up via email, and is the default. Select 'Access Codes' if we send individual, or group, login details or access codes. 'Proxy' means access delivered directly via EZProxy, and Library Bundle is automated proxy-based access.",
            ),
        ),
    ]
