# Generated by Django 3.1.4 on 2020-12-01 07:12

import uuid

import django.contrib.postgres.search
import imagekit.models.fields
from django.db import migrations, models

import files.models


class Migration(migrations.Migration):

    initial = True

    dependencies = []

    operations = [
        migrations.CreateModel(
            name="Category",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("uid", models.UUIDField(default=uuid.uuid4, unique=True)),
                ("add_date", models.DateTimeField(auto_now_add=True)),
                ("title", models.CharField(db_index=True, max_length=100, unique=True)),
                ("description", models.TextField(blank=True)),
                (
                    "is_global",
                    models.BooleanField(default=False, help_text="global categories or user specific"),
                ),
                (
                    "media_count",
                    models.IntegerField(default=0, help_text="number of media"),
                ),
                (
                    "thumbnail",
                    imagekit.models.fields.ProcessedImageField(blank=True, upload_to=files.models.category_thumb_path),
                ),
                (
                    "listings_thumbnail",
                    models.CharField(
                        blank=True,
                        help_text="Thumbnail to show on listings",
                        max_length=400,
                        null=True,
                    ),
                ),
            ],
            options={
                "verbose_name_plural": "Categories",
                "ordering": ["title"],
            },
        ),
        migrations.CreateModel(
            name="Comment",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("add_date", models.DateTimeField(auto_now_add=True)),
                ("text", models.TextField(help_text="text")),
                ("uid", models.UUIDField(default=uuid.uuid4, unique=True)),
                ("lft", models.PositiveIntegerField(editable=False)),
                ("rght", models.PositiveIntegerField(editable=False)),
                ("tree_id", models.PositiveIntegerField(db_index=True, editable=False)),
                ("level", models.PositiveIntegerField(editable=False)),
            ],
            options={
                "abstract": False,
            },
        ),
        migrations.CreateModel(
            name="EncodeProfile",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=90)),
                (
                    "extension",
                    models.CharField(
                        choices=[("mp4", "mp4"), ("webm", "webm"), ("gif", "gif")],
                        max_length=10,
                    ),
                ),
                (
                    "resolution",
                    models.IntegerField(
                        blank=True,
                        choices=[
                            (2160, "2160"),
                            (1440, "1440"),
                            (1080, "1080"),
                            (720, "720"),
                            (480, "480"),
                            (360, "360"),
                            (240, "240"),
                        ],
                        null=True,
                    ),
                ),
                (
                    "codec",
                    models.CharField(
                        blank=True,
                        choices=[("h265", "h265"), ("h264", "h264"), ("vp9", "vp9")],
                        max_length=10,
                        null=True,
                    ),
                ),
                ("description", models.TextField(blank=True, help_text="description")),
                ("active", models.BooleanField(default=True)),
            ],
            options={
                "ordering": ["resolution"],
            },
        ),
        migrations.CreateModel(
            name="Encoding",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("add_date", models.DateTimeField(auto_now_add=True)),
                ("commands", models.TextField(blank=True, help_text="commands run")),
                (
                    "chunk",
                    models.BooleanField(db_index=True, default=False, help_text="is chunk?"),
                ),
                ("chunk_file_path", models.CharField(blank=True, max_length=400)),
                ("chunks_info", models.TextField(blank=True)),
                ("logs", models.TextField(blank=True)),
                ("md5sum", models.CharField(blank=True, max_length=50, null=True)),
                (
                    "media_file",
                    models.FileField(
                        blank=True,
                        max_length=500,
                        upload_to=files.models.encoding_media_file_path,
                        verbose_name="encoding file",
                    ),
                ),
                ("progress", models.PositiveSmallIntegerField(default=0)),
                ("update_date", models.DateTimeField(auto_now=True)),
                ("retries", models.IntegerField(default=0)),
                ("size", models.CharField(blank=True, max_length=20)),
                (
                    "status",
                    models.CharField(
                        choices=[
                            ("pending", "Pending"),
                            ("running", "Running"),
                            ("fail", "Fail"),
                            ("success", "Success"),
                        ],
                        default="pending",
                        max_length=20,
                    ),
                ),
                ("temp_file", models.CharField(blank=True, max_length=400)),
                ("task_id", models.CharField(blank=True, max_length=100)),
                ("total_run_time", models.IntegerField(default=0)),
                ("worker", models.CharField(blank=True, max_length=100)),
            ],
        ),
        migrations.CreateModel(
            name="Language",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("code", models.CharField(help_text="language code", max_length=12)),
                ("title", models.CharField(help_text="language code", max_length=100)),
            ],
            options={
                "ordering": ["id"],
            },
        ),
        migrations.CreateModel(
            name="License",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(max_length=100, unique=True)),
                ("description", models.TextField(blank=True)),
            ],
        ),
        migrations.CreateModel(
            name="Media",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "add_date",
                    models.DateTimeField(
                        blank=True,
                        db_index=True,
                        null=True,
                        verbose_name="Date produced",
                    ),
                ),
                (
                    "allow_download",
                    models.BooleanField(
                        default=True,
                        help_text="Whether option to download media is shown",
                    ),
                ),
                ("description", models.TextField(blank=True)),
                ("dislikes", models.IntegerField(default=0)),
                ("duration", models.IntegerField(default=0)),
                ("edit_date", models.DateTimeField(auto_now=True)),
                (
                    "enable_comments",
                    models.BooleanField(
                        default=True,
                        help_text="Whether comments will be allowed for this media",
                    ),
                ),
                (
                    "encoding_status",
                    models.CharField(
                        choices=[
                            ("pending", "Pending"),
                            ("running", "Running"),
                            ("fail", "Fail"),
                            ("success", "Success"),
                        ],
                        db_index=True,
                        default="pending",
                        max_length=20,
                    ),
                ),
                (
                    "featured",
                    models.BooleanField(
                        db_index=True,
                        default=False,
                        help_text="Whether media is globally featured by a MediaCMS editor",
                    ),
                ),
                (
                    "friendly_token",
                    models.CharField(
                        blank=True,
                        db_index=True,
                        help_text="Identifier for the Media",
                        max_length=12,
                    ),
                ),
                (
                    "hls_file",
                    models.CharField(
                        blank=True,
                        help_text="Path to HLS file for videos",
                        max_length=1000,
                    ),
                ),
                (
                    "is_reviewed",
                    models.BooleanField(
                        db_index=True,
                        default=True,
                        help_text="Whether media is reviewed, so it can appear on public listings",
                    ),
                ),
                ("likes", models.IntegerField(db_index=True, default=1)),
                (
                    "listable",
                    models.BooleanField(default=False, help_text="Whether it will appear on listings"),
                ),
                (
                    "md5sum",
                    models.CharField(
                        blank=True,
                        help_text="Not exposed, used internally",
                        max_length=50,
                        null=True,
                    ),
                ),
                (
                    "media_file",
                    models.FileField(
                        help_text="media file",
                        max_length=500,
                        upload_to=files.models.original_media_file_path,
                        verbose_name="media file",
                    ),
                ),
                (
                    "media_info",
                    models.TextField(blank=True, help_text="extracted media metadata info"),
                ),
                (
                    "media_type",
                    models.CharField(
                        blank=True,
                        choices=[
                            ("video", "Video"),
                            ("image", "Image"),
                            ("pdf", "Pdf"),
                            ("audio", "Audio"),
                        ],
                        db_index=True,
                        default="video",
                        max_length=20,
                    ),
                ),
                (
                    "password",
                    models.CharField(
                        blank=True,
                        help_text="password for private media",
                        max_length=100,
                    ),
                ),
                (
                    "preview_file_path",
                    models.CharField(
                        blank=True,
                        help_text="preview gif for videos, path in filesystem",
                        max_length=500,
                    ),
                ),
                (
                    "poster",
                    imagekit.models.fields.ProcessedImageField(
                        blank=True,
                        help_text="media extracted big thumbnail, shown on media page",
                        max_length=500,
                        upload_to=files.models.original_thumbnail_file_path,
                    ),
                ),
                (
                    "reported_times",
                    models.IntegerField(default=0, help_text="how many time a Medis is reported"),
                ),
                (
                    "search",
                    django.contrib.postgres.search.SearchVectorField(
                        help_text="used to store all searchable info and metadata for a Media",
                        null=True,
                    ),
                ),
                (
                    "size",
                    models.CharField(
                        blank=True,
                        help_text="media size in bytes, automatically calculated",
                        max_length=20,
                        null=True,
                    ),
                ),
                (
                    "sprites",
                    models.FileField(
                        blank=True,
                        help_text="sprites file, only for videos, displayed on the video player",
                        max_length=500,
                        upload_to=files.models.original_thumbnail_file_path,
                    ),
                ),
                (
                    "state",
                    models.CharField(
                        choices=[
                            ("private", "Private"),
                            ("public", "Public"),
                            ("unlisted", "Unlisted"),
                        ],
                        db_index=True,
                        default="public",
                        help_text="state of Media",
                        max_length=20,
                    ),
                ),
                (
                    "title",
                    models.CharField(
                        blank=True,
                        db_index=True,
                        help_text="media title",
                        max_length=100,
                    ),
                ),
                (
                    "thumbnail",
                    imagekit.models.fields.ProcessedImageField(
                        blank=True,
                        help_text="media extracted small thumbnail, shown on listings",
                        max_length=500,
                        upload_to=files.models.original_thumbnail_file_path,
                    ),
                ),
                (
                    "thumbnail_time",
                    models.FloatField(
                        blank=True,
                        help_text="Time on video that a thumbnail will be taken",
                        null=True,
                    ),
                ),
                (
                    "uid",
                    models.UUIDField(
                        default=uuid.uuid4,
                        help_text="A unique identifier for the Media",
                        unique=True,
                    ),
                ),
                (
                    "uploaded_thumbnail",
                    imagekit.models.fields.ProcessedImageField(
                        blank=True,
                        help_text="thumbnail from uploaded_poster field",
                        max_length=500,
                        upload_to=files.models.original_thumbnail_file_path,
                    ),
                ),
                (
                    "uploaded_poster",
                    imagekit.models.fields.ProcessedImageField(
                        blank=True,
                        help_text="This image will characterize the media",
                        max_length=500,
                        upload_to=files.models.original_thumbnail_file_path,
                        verbose_name="Upload image",
                    ),
                ),
                (
                    "user_featured",
                    models.BooleanField(default=False, help_text="Featured by the user"),
                ),
                ("video_height", models.IntegerField(default=1)),
                ("views", models.IntegerField(db_index=True, default=1)),
            ],
            options={
                "ordering": ["-add_date"],
            },
        ),
        migrations.CreateModel(
            name="Playlist",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("add_date", models.DateTimeField(auto_now_add=True, db_index=True)),
                ("description", models.TextField(blank=True, help_text="description")),
                (
                    "friendly_token",
                    models.CharField(blank=True, db_index=True, max_length=12),
                ),
                ("title", models.CharField(db_index=True, max_length=100)),
                ("uid", models.UUIDField(default=uuid.uuid4, unique=True)),
            ],
        ),
        migrations.CreateModel(
            name="PlaylistMedia",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("action_date", models.DateTimeField(auto_now=True)),
                ("ordering", models.IntegerField(default=1)),
            ],
            options={
                "ordering": ["ordering", "-action_date"],
            },
        ),
        migrations.CreateModel(
            name="Rating",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("add_date", models.DateTimeField(auto_now_add=True)),
                (
                    "score",
                    models.IntegerField(validators=[files.models.validate_rating]),
                ),
            ],
            options={
                "verbose_name_plural": "Ratings",
            },
        ),
        migrations.CreateModel(
            name="RatingCategory",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("description", models.TextField(blank=True)),
                ("enabled", models.BooleanField(default=True)),
                ("title", models.CharField(db_index=True, max_length=200, unique=True)),
            ],
            options={
                "verbose_name_plural": "Rating Categories",
            },
        ),
        migrations.CreateModel(
            name="Subtitle",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "subtitle_file",
                    models.FileField(
                        help_text="File has to be WebVTT format",
                        max_length=500,
                        upload_to=files.models.subtitles_file_path,
                        verbose_name="Subtitle/CC file",
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="Tag",
            fields=[
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(db_index=True, max_length=100, unique=True)),
                (
                    "media_count",
                    models.IntegerField(default=0, help_text="number of media"),
                ),
                (
                    "listings_thumbnail",
                    models.CharField(
                        blank=True,
                        db_index=True,
                        help_text="Thumbnail to show on listings",
                        max_length=400,
                        null=True,
                    ),
                ),
            ],
            options={
                "ordering": ["title"],
            },
        ),
    ]
