Merge branch 'refs/heads/andrei' into ivan

This commit is contained in:
Ivan Kaziev 2024-04-09 19:43:07 +03:00
commit 28f763075d
13 changed files with 354 additions and 28 deletions

View File

@ -0,0 +1,24 @@
# Generated by Django 4.2 on 2024-04-09 16:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("films", "0001_initial"),
]
operations = [
migrations.AlterField(
model_name="film",
name="genres",
field=models.ManyToManyField(
help_text="Жанры фильма",
related_name="films",
related_query_name="films",
to="films.genre",
verbose_name="Жанры",
),
),
]

View File

@ -1,9 +1,9 @@
from django.db import models from django.db.models import Model, CharField, IntegerField, DateField, ManyToManyField
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
class Genre(models.Model): class Genre(Model):
name = models.CharField( name = CharField(
'Название', 'Название',
help_text='Название жанра', help_text='Название жанра',
max_length=100, max_length=100,
@ -16,30 +16,31 @@ class Genre(models.Model):
verbose_name_plural = 'Жанры' verbose_name_plural = 'Жанры'
class Film(models.Model): class Film(Model):
name = models.CharField( name = CharField(
'Название', 'Название',
help_text='Название фильма', help_text='Название фильма',
max_length=100, max_length=100,
null=False, null=False,
) )
duration = models.IntegerField( duration = IntegerField(
'Продолжительность', 'Продолжительность',
help_text='Продолжительность фильма (в минутах)', help_text='Продолжительность фильма (в минутах)',
validators=[MinValueValidator(0)], validators=[MinValueValidator(0)],
null=False, null=False,
) )
release_date = models.DateField( release_date = DateField(
'Дата релиза', 'Дата релиза',
help_text='Дата выхода фильма', help_text='Дата выхода фильма',
) )
genres = models.ManyToManyField( genres = ManyToManyField(
Genre, Genre,
verbose_name='Жанры', verbose_name='Жанры',
related_name='films', related_name='films',
related_query_name='films',
help_text='Жанры фильма', help_text='Жанры фильма',
) )

View File

@ -0,0 +1,44 @@
# Generated by Django 4.2 on 2024-04-09 16:27
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="Ticket",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"row_number",
models.IntegerField(
help_text="Номер ряда",
validators=[django.core.validators.MinValueValidator(1)],
verbose_name="Номер ряда",
),
),
(
"column_number",
models.IntegerField(
help_text="Номер кресла в ряду",
validators=[django.core.validators.MinValueValidator(1)],
verbose_name="Номер кресла",
),
),
],
),
]

View File

@ -0,0 +1,38 @@
# Generated by Django 4.2 on 2024-04-09 16:27
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
("tickets", "0001_initial"),
("timetable", "0002_rename_rows_row_filmsession"),
("users", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="ticket",
name="session_id",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="tickets",
related_query_name="tickets",
to="timetable.filmsession",
),
),
migrations.AddField(
model_name="ticket",
name="user_id",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="tickets",
related_query_name="tickets",
to="users.profile",
),
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 4.2 on 2024-04-09 16:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("tickets", "0002_initial"),
]
operations = [
migrations.RenameField(
model_name="ticket",
old_name="session_id",
new_name="session",
),
migrations.RenameField(
model_name="ticket",
old_name="user_id",
new_name="user",
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 4.2 on 2024-04-09 16:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("tickets", "0003_rename_session_id_ticket_session_and_more"),
]
operations = [
migrations.RenameField(
model_name="ticket",
old_name="user",
new_name="profile",
),
]

View File

@ -1,33 +1,33 @@
from django.db import models from django.db.models import ForeignKey, CASCADE, Model, IntegerField
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
from timetable.models import FilmSessions from timetable.models import FilmSession
from users.models import Profile from users.models import Profile
class Ticket(models.Model): class Ticket(Model):
session_id = models.ForeignKey( session = ForeignKey(
FilmSessions, FilmSession,
on_delete=models.CASCADE, on_delete=CASCADE,
related_name='tickets', related_name='tickets',
related_query_name='tickets', related_query_name='tickets',
) )
user_id = models.ForeignKey( profile = ForeignKey(
Profile, Profile,
on_delete=models.CASCADE, on_delete=CASCADE,
related_name='tickets', related_name='tickets',
related_query_name='tickets', related_query_name='tickets',
) )
row_number = models.IntegerField( row_number = IntegerField(
'Номер ряда', 'Номер ряда',
null=False, null=False,
validators=[MinValueValidator(1)], validators=[MinValueValidator(1)],
help_text='Номер ряда', help_text='Номер ряда',
) )
column_number = models.IntegerField( column_number = IntegerField(
'Номер кресла', 'Номер кресла',
null=False, null=False,
validators=[MinValueValidator(1)], validators=[MinValueValidator(1)],

View File

@ -0,0 +1,68 @@
# Generated by Django 4.2 on 2024-04-09 16:27
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("films", "0001_initial"),
("timetable", "0001_initial"),
]
operations = [
migrations.RenameModel(
old_name="Rows",
new_name="Row",
),
migrations.CreateModel(
name="FilmSession",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"start_datetime",
models.DateTimeField(verbose_name="Дата и время начала сеанса"),
),
(
"price",
models.FloatField(
validators=[django.core.validators.MinValueValidator(1)],
verbose_name="Цена билета",
),
),
(
"auditorium",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="sessions",
to="timetable.auditorium",
verbose_name="зал",
),
),
(
"film",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="sessions",
to="films.film",
verbose_name="фильм",
),
),
],
options={
"verbose_name": "Сеанс",
"verbose_name_plural": "Сеансы",
"db_table": "timetable_film_sessions",
},
),
]

View File

@ -0,0 +1,48 @@
# Generated by Django 4.2 on 2024-04-09 16:39
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("films", "0002_alter_film_genres"),
("timetable", "0002_rename_rows_row_filmsession"),
]
operations = [
migrations.AlterField(
model_name="filmsession",
name="auditorium",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="sessions",
related_query_name="sessions",
to="timetable.auditorium",
verbose_name="Зал",
),
),
migrations.AlterField(
model_name="filmsession",
name="film",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="sessions",
related_query_name="sessions",
to="films.film",
verbose_name="Фильм",
),
),
migrations.AlterField(
model_name="row",
name="auditorium",
field=models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="rows",
related_query_name="rows",
to="timetable.auditorium",
verbose_name="Зал",
),
),
]

View File

@ -1,7 +1,8 @@
from django.db.models import Model, CharField, IntegerField, OneToOneField, CASCADE, DateTimeField, FloatField from django.db.models import Model, CharField, IntegerField, OneToOneField, CASCADE, DateTimeField, FloatField, \
ForeignKey
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
from films.models import Films from films.models import Film
class Auditorium(Model): class Auditorium(Model):
@ -41,8 +42,9 @@ class Row(Model):
auditorium = OneToOneField( auditorium = OneToOneField(
Auditorium, Auditorium,
on_delete=CASCADE, on_delete=CASCADE,
verbose_name='зал', verbose_name='Зал',
related_name='rows', related_name='rows',
related_query_name='rows',
) )
class Meta: class Meta:
@ -63,22 +65,23 @@ class FilmSession(Model):
], ],
) )
film = OneToOneField( film = ForeignKey(
Films, Film,
on_delete=CASCADE, on_delete=CASCADE,
verbose_name='фильм', verbose_name='Фильм',
related_name='sessions', related_name='sessions',
related_query_name='sessions',
) )
auditorium = OneToOneField( auditorium = ForeignKey(
Auditorium, Auditorium,
on_delete=CASCADE, on_delete=CASCADE,
verbose_name='зал', verbose_name='Зал',
related_name='sessions', related_name='sessions',
related_query_name='sessions',
) )
class Meta: class Meta:
db_table = 'timetable_film_sessions' db_table = 'timetable_film_sessions'
verbose_name = 'Сеанс' verbose_name = 'Сеанс'
verbose_name_plural = 'Сеансы' verbose_name_plural = 'Сеансы'

View File

@ -0,0 +1,27 @@
# Generated by Django 4.2 on 2024-04-09 16:39
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("films", "0002_alter_film_genres"),
("users", "0001_initial"),
]
operations = [
migrations.AddField(
model_name="profile",
name="genres",
field=models.ForeignKey(
default="",
on_delete=django.db.models.deletion.CASCADE,
related_name="profiles",
related_query_name="profiles",
to="films.genre",
),
preserve_default=False,
),
]

View File

@ -0,0 +1,25 @@
# Generated by Django 4.2 on 2024-04-09 16:40
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("films", "0002_alter_film_genres"),
("users", "0002_profile_genres"),
]
operations = [
migrations.RemoveField(
model_name="profile",
name="genres",
),
migrations.AddField(
model_name="profile",
name="genres",
field=models.ManyToManyField(
related_name="profiles", related_query_name="profiles", to="films.genre"
),
),
]

View File

@ -1,10 +1,12 @@
import time import time
from django.conf import settings from django.conf import settings
from django.db.models import Model, OneToOneField, CASCADE, DateField, CharField, ImageField from django.db.models import Model, OneToOneField, CASCADE, DateField, CharField, ImageField, ManyToManyField
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from sorl.thumbnail import get_thumbnail from sorl.thumbnail import get_thumbnail
from films.models import Genre
class Profile(Model): class Profile(Model):
@ -33,6 +35,11 @@ class Profile(Model):
verbose_name='Аватар пользователя', verbose_name='Аватар пользователя',
upload_to=get_upload_path, upload_to=get_upload_path,
) )
genres = ManyToManyField(
Genre,
related_name='profiles',
related_query_name='profiles',
)
def get_image_x300(self): def get_image_x300(self):
return get_thumbnail( return get_thumbnail(