Skip to content

Commit 7cfb620

Browse files
add film reviews and design for film page
1 parent f9124a1 commit 7cfb620

File tree

9 files changed

+1362
-92
lines changed

9 files changed

+1362
-92
lines changed

WebAppTelegramAPI/WebApp/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from django.contrib import admin
2-
from .models import FilmCategories, Film, Actor, FilmImage
2+
from .models import FilmCategories, Film, Actor, FilmImage, FilmReview
33

44

55
admin.site.register(Film)
66
admin.site.register(FilmCategories)
77
admin.site.register(FilmImage)
88
admin.site.register(Actor)
9+
admin.site.register(FilmReview)

WebAppTelegramAPI/WebApp/models.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from django.db import models
22
from rest_framework import serializers
33
from django.utils.text import slugify
4-
4+
from django.core.validators import MaxValueValidator
5+
from Users.models import CustomUser
56

67
class FilmCategories(models.Model):
78
category_name = models.CharField(max_length=150)
@@ -20,6 +21,9 @@ class Actor(models.Model):
2021
photo = models.ImageField()
2122
date_of_birth = models.DateField()
2223

24+
def __str__(self):
25+
return f'{self.first_name} {self.last_name}'
26+
2327
class Meta:
2428
db_table = "actors"
2529

@@ -28,11 +32,13 @@ class Film(models.Model):
2832
film_name = models.CharField(max_length=150, unique=True)
2933
film_poster = models.ImageField()
3034
slug_film_name = models.SlugField(max_length=150, unique=True, blank=True)
35+
country = models.CharField(max_length=30, null=True, blank=True)
36+
release_date = models.DateField()
3137
author = models.CharField(max_length=150)
3238
actors = models.ManyToManyField(Actor)
3339
describe = models.TextField(null=True, blank=True)
3440
box_office = models.IntegerField()
35-
star_raiting = models.IntegerField(null=True, blank=True)
41+
rating_imdb = models.PositiveIntegerField(null=True, blank=True)
3642
category = models.ForeignKey(FilmCategories, on_delete=models.CASCADE)
3743

3844
def __str__(self):
@@ -49,10 +55,25 @@ class Meta:
4955
db_table = "films"
5056

5157

58+
class FilmReview(models.Model):
59+
film = models.ForeignKey(Film, on_delete=models.CASCADE)
60+
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
61+
star_rating = models.PositiveIntegerField(validators=[MaxValueValidator(10)])
62+
review = models.TextField()
63+
64+
def __str__(self):
65+
return self.star_rating
66+
67+
class Meta:
68+
db_table = "film_reviews"
69+
5270
class FilmImage(models.Model):
5371
film = models.ForeignKey(Film, related_name='images', on_delete=models.CASCADE)
5472
image = models.ImageField()
5573

74+
def __str__(self):
75+
return f'{self.film}: {self.id}'
76+
5677
class Meta:
5778
db_table = "film_images"
5879

WebAppTelegramAPI/WebApp/serializers.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from rest_framework import serializers
2-
from .models import FilmCategories, Film, Actor, FilmImage
2+
from .models import FilmCategories, Film, Actor, FilmImage, FilmReview
33

44

55

@@ -8,17 +8,20 @@ class Meta:
88
model = FilmImage
99
fields = ['id', 'film', 'image']
1010

11+
1112
class FilmSerializer(serializers.ModelSerializer):
1213
images = FilmImageSerializer(many=True)
1314
class Meta:
1415
model = Film
15-
fields = ['id', 'film_name', 'film_poster', 'slug_film_name', 'author', 'actors', 'describe', 'star_raiting', 'box_office', 'category', 'images']
16+
fields = ['id', 'film_name', 'film_poster', 'slug_film_name', 'country', 'release_date', 'author', 'actors', 'describe', 'rating_imdb', 'box_office', 'category', 'images']
17+
1618

1719
class FilmCatalogSerializer(serializers.ModelSerializer):
1820
class Meta:
1921
model = Film
2022
fields = ['id', 'film_name', 'film_poster', 'slug_film_name']
2123

24+
2225
class FilmCategoriesSerializer(serializers.ModelSerializer):
2326
class Meta:
2427
model = FilmCategories
@@ -31,3 +34,7 @@ class Meta:
3134
fields = ['id', 'first_name', 'last_name', 'photo', 'date_of_birth']
3235

3336

37+
class ReviewSerializer(serializers.ModelSerializer):
38+
class Meta:
39+
model = FilmReview
40+
exclude = ['user']

WebAppTelegramAPI/WebApp/views.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.shortcuts import render
22
from rest_framework import viewsets
3-
from .serializers import FilmSerializer, FilmCategoriesSerializer, ActorSerializer, FilmImageSerializer, FilmCatalogSerializer
4-
from .models import Film, FilmCategories, Actor, FilmImage
3+
from .serializers import FilmSerializer, FilmCategoriesSerializer, ActorSerializer, FilmImageSerializer, FilmCatalogSerializer, ReviewSerializer
4+
from .models import Film, FilmCategories, Actor, FilmImage, FilmReview
55
from rest_framework.permissions import IsAuthenticated, IsAdminUser, DjangoModelPermissionsOrAnonReadOnly
66
from .permissions import CustomFilmPermission
77
from rest_framework.decorators import action
@@ -18,6 +18,7 @@ def get_serializer_class(self):
1818
return FilmSerializer
1919
return FilmCatalogSerializer
2020

21+
2122
class CategoryViewSet(viewsets.ModelViewSet):
2223
queryset = FilmCategories.objects.all()
2324
serializer_class = FilmCategoriesSerializer
@@ -33,4 +34,12 @@ class FilmImagesViewSet(viewsets.ModelViewSet):
3334
class ActorViewSet(viewsets.ModelViewSet):
3435
queryset = Actor.objects.all()
3536
serializer_class = ActorSerializer
36-
permission_classes = [CustomFilmPermission,]
37+
permission_classes = [CustomFilmPermission,]
38+
39+
40+
class CommentViewSet(viewsets.ModelViewSet):
41+
queryset = FilmReview.objects.all()
42+
serializer_class = ReviewSerializer
43+
44+
def perform_create(self, serializer):
45+
serializer.save(user=self.request.user)
1.63 KB
Binary file not shown.

0 commit comments

Comments
 (0)