photo26/photologue/migrations/0001_initial.py
2022-03-02 21:23:40 +01:00

331 lines
12 KiB
Python

# Generated by Django 3.2.11 on 2022-01-30 10:14
import django.core.validators
import django.db.models.deletion
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
import photologue.models
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name="PhotoSize",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"name",
models.CharField(
help_text='Photo size name should contain only letters, numbers and underscores. Examples: "thumbnail", "display", "small", "main_page_widget".',
max_length=40,
unique=True,
validators=[
django.core.validators.RegexValidator(
message="Use only plain lowercase letters (ASCII), numbers and underscores.",
regex="^[a-z0-9_]+$",
)
],
verbose_name="name",
),
),
(
"width",
models.PositiveIntegerField(
default=0,
help_text='If width is set to "0" the image will be scaled to the supplied height.',
verbose_name="width",
),
),
(
"height",
models.PositiveIntegerField(
default=0,
help_text='If height is set to "0" the image will be scaled to the supplied width',
verbose_name="height",
),
),
(
"quality",
models.PositiveIntegerField(
choices=[
(30, "Very Low"),
(40, "Low"),
(50, "Medium-Low"),
(60, "Medium"),
(70, "Medium-High"),
(80, "High"),
(90, "Very High"),
],
default=70,
help_text="JPEG image quality.",
verbose_name="quality",
),
),
(
"upscale",
models.BooleanField(
default=False,
help_text="If selected the image will be scaled up if necessary to fit the supplied dimensions. Cropped sizes will be upscaled regardless of this setting.",
verbose_name="upscale images?",
),
),
(
"crop",
models.BooleanField(
default=False,
help_text="If selected the image will be scaled and cropped to fit the supplied dimensions.",
verbose_name="crop to fit?",
),
),
(
"pre_cache",
models.BooleanField(
default=False,
help_text="If selected this photo size will be pre-cached as photos are added.",
verbose_name="pre-cache?",
),
),
(
"increment_count",
models.BooleanField(
default=False,
help_text='If selected the image\'s "view_count" will be incremented when this photo size is displayed.',
verbose_name="increment view count?",
),
),
],
options={
"verbose_name": "photo size",
"verbose_name_plural": "photo sizes",
"ordering": ["width", "height"],
},
),
migrations.CreateModel(
name="Tag",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"name",
models.CharField(max_length=250, unique=True, verbose_name="name"),
),
(
"slug",
models.SlugField(
help_text='A "slug" is a unique URL-friendly title for an object.',
max_length=250,
unique=True,
verbose_name="slug",
),
),
],
options={
"verbose_name": "tag",
"verbose_name_plural": "tags",
"ordering": ["name"],
},
),
migrations.CreateModel(
name="Photo",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"image",
models.ImageField(
upload_to=photologue.models.get_storage_path,
verbose_name="image",
),
),
(
"date_taken",
models.DateTimeField(
blank=True,
help_text="Date image was taken; is obtained from the image EXIF data.",
null=True,
verbose_name="date taken",
),
),
(
"view_count",
models.PositiveIntegerField(
default=0, editable=False, verbose_name="view count"
),
),
(
"crop_from",
models.CharField(
blank=True,
choices=[
("top", "Top"),
("right", "Right"),
("bottom", "Bottom"),
("left", "Left"),
("center", "Center (Default)"),
],
default="center",
max_length=10,
verbose_name="crop from",
),
),
(
"title",
models.CharField(max_length=250, unique=True, verbose_name="title"),
),
(
"slug",
models.SlugField(
help_text='A "slug" is a unique URL-friendly title for an object.',
max_length=250,
unique=True,
verbose_name="slug",
),
),
("caption", models.TextField(blank=True, verbose_name="caption")),
(
"date_added",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="date added"
),
),
(
"license",
models.CharField(
blank=True, max_length=255, verbose_name="license"
),
),
(
"is_public",
models.BooleanField(
default=True,
help_text="Public photographs will be displayed in the default views.",
verbose_name="is public",
),
),
(
"owner",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to=settings.AUTH_USER_MODEL,
verbose_name="owner",
),
),
],
options={
"verbose_name": "photo",
"verbose_name_plural": "photos",
"ordering": ["-date_added"],
"get_latest_by": "date_added",
},
),
migrations.CreateModel(
name="Gallery",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"date_added",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="date published"
),
),
(
"title",
models.CharField(max_length=250, unique=True, verbose_name="title"),
),
(
"slug",
models.SlugField(
help_text='A "slug" is a unique URL-friendly title for an object.',
max_length=250,
unique=True,
verbose_name="title slug",
),
),
(
"date_start",
models.DateField(
default=django.utils.timezone.now, verbose_name="start date"
),
),
(
"date_end",
models.DateField(blank=True, null=True, verbose_name="end date"),
),
(
"description",
models.TextField(blank=True, verbose_name="description"),
),
(
"is_public",
models.BooleanField(
default=True,
help_text="Public galleries will be displayed in the default views.",
verbose_name="is public",
),
),
(
"photos",
models.ManyToManyField(
blank=True,
related_name="galleries",
to="photologue.Photo",
verbose_name="photos",
),
),
(
"tags",
models.ManyToManyField(
blank=True,
related_name="galleries",
to="photologue.Tag",
verbose_name="tags",
),
),
],
options={
"verbose_name": "gallery",
"verbose_name_plural": "galleries",
"ordering": ["-date_added"],
"get_latest_by": "date_added",
},
),
]