diff --git a/CineSync/films/admin.py b/CineSync/films/admin.py index ad78704..15686eb 100644 --- a/CineSync/films/admin.py +++ b/CineSync/films/admin.py @@ -1,24 +1,22 @@ from django.contrib import admin -from django.contrib.auth import get_user_model -from django.contrib.auth.admin import UserAdmin -from users.models import Profile - -user = get_user_model() -admin.site.unregister(user) +from films.models import Film, Genre -class ProfileInline(admin.TabularInline): - can_delete = False - model = Profile - fields = [ - Profile.birthday.field.name, - Profile.image.field.name, +@admin.register(Film) +class ItemAdmin(admin.ModelAdmin): + list_display = [ + Film.name.field.name, + Film.duration.field.name, + ] + + filter_horizontal = [ + Film.genres.field.name, ] -@admin.register(user) -class UserAdmin(UserAdmin): - inlines = [ - ProfileInline, +@admin.register(Genre) +class GenreAdmin(admin.ModelAdmin): + list_display = [ + Genre.name.field.name, ] diff --git a/CineSync/films/migrations/0004_film_image.py b/CineSync/films/migrations/0004_film_image.py new file mode 100644 index 0000000..1df2664 --- /dev/null +++ b/CineSync/films/migrations/0004_film_image.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2 on 2024-04-17 13:08 + +from django.db import migrations, models +import films.models + + +class Migration(migrations.Migration): + + dependencies = [ + ("films", "0003_film_description"), + ] + + operations = [ + migrations.AddField( + model_name="film", + name="image", + field=models.ImageField( + blank=True, + null=True, + upload_to=films.models.Film.get_upload_path, + verbose_name="Изображение фильма", + ), + ), + ] diff --git a/CineSync/films/models.py b/CineSync/films/models.py index 86afd62..a8f719d 100644 --- a/CineSync/films/models.py +++ b/CineSync/films/models.py @@ -1,4 +1,6 @@ import time +from datetime import timedelta +from random import shuffle from django.db.models import ( Model, @@ -18,6 +20,16 @@ class FilmManager(Manager): release_date__lt=timezone.now(), ) + def on_main(self): + current_datetime = timezone.now() + end_datetime = current_datetime + timedelta(days=5) + films_with_sessions = Film.objects.filter( + sessions__start_datetime__gte=current_datetime, + sessions__start_datetime__lte=end_datetime, + ).exclude(image=None).distinct() + shuffle(list(films_with_sessions)) + return films_with_sessions + class Genre(Model): name = CharField( @@ -35,7 +47,7 @@ class Genre(Model): class Film(Model): def get_upload_path(self, filename): - return f'users/avatars/{self.pk}/{time.time()}_{filename}' + return f'users/films/{self.pk}/{time.time()}_{filename}' objects = FilmManager() @@ -67,7 +79,7 @@ class Film(Model): image = ImageField( null=True, blank=True, - verbose_name='Аватар пользователя', + verbose_name='Изображение фильма', upload_to=get_upload_path, ) diff --git a/CineSync/home/views.py b/CineSync/home/views.py index defa00e..4e83e8f 100644 --- a/CineSync/home/views.py +++ b/CineSync/home/views.py @@ -1,11 +1,17 @@ from django.http import HttpResponse from django.shortcuts import render +from films.models import Film + def homepage(request): + films = Film.objects.on_main() template = render( request, - 'home/homepage.html' + 'home/homepage.html', + context={ + 'films_preview': films + } ) return HttpResponse( template, diff --git a/CineSync/static/css/home/homepage.css b/CineSync/static/css/home/homepage.css new file mode 100644 index 0000000..4f7eade --- /dev/null +++ b/CineSync/static/css/home/homepage.css @@ -0,0 +1,24 @@ +.carousel_films { + margin-top: 5vw; + height: 30vw; + width: 100%; +} +.film_card_image { + object-fit: cover; + height: 30vw !important; + width: 70% !important; + border-radius: 3vw; +} +.carousel-item-next, .carousel-item-prev, .carousel-item.active { + display: flex; + justify-content: center; +} +.caption_block { + background-color: rgba(13, 39, 58, 0.8); + border-radius: 2vw; + width: 40%; + display: flex !important; + flex-direction: column; + align-items: center; + margin-left: 15%; +} \ No newline at end of file diff --git a/CineSync/templates/home/homepage.html b/CineSync/templates/home/homepage.html index 32d72c8..4c63f23 100644 --- a/CineSync/templates/home/homepage.html +++ b/CineSync/templates/home/homepage.html @@ -4,5 +4,36 @@ Главная {% endblock title %} {% block content %} - + + {% endblock %} \ No newline at end of file diff --git a/CineSync/templates/includes/header.html b/CineSync/templates/includes/header.html index e39724a..bead911 100644 --- a/CineSync/templates/includes/header.html +++ b/CineSync/templates/includes/header.html @@ -30,6 +30,9 @@ {% endif %} + {% if user.is_staff %} + Админка + {% endif %} {% else %}