68 lines
2.6 KiB
Python
68 lines
2.6 KiB
Python
from django.core.validators import MinValueValidator, MaxValueValidator
|
|
from django.conf import settings
|
|
from django.db import models
|
|
from PIL import Image
|
|
|
|
|
|
class Ticket(models.Model):
|
|
# Your Ticket model definition goes here
|
|
title = models.CharField("Titre", max_length=100)
|
|
desc = models.CharField("Description", max_length=8192)
|
|
user = models.ForeignKey(
|
|
to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
|
image = models.ImageField()
|
|
time_created = models.DateTimeField(auto_now_add=True)
|
|
review = models.ForeignKey(to='reviews.Review',
|
|
on_delete=models.SET_NULL,
|
|
related_name='has_review',
|
|
null=True)
|
|
|
|
IMAGE_SIZE = (400, 400)
|
|
|
|
def resize_image(self):
|
|
image = Image.open(self.image)
|
|
image.thumbnail(self.IMAGE_SIZE)
|
|
image.save(self.image.path)
|
|
|
|
def save(self, *args, **kwargs):
|
|
super().save(*args, **kwargs)
|
|
self.resize_image()
|
|
|
|
|
|
class Review(models.Model):
|
|
ticket = models.ForeignKey(to=Ticket,
|
|
on_delete=models.CASCADE,
|
|
related_name='of_ticket',
|
|
null=True)
|
|
rating = models.PositiveSmallIntegerField(
|
|
# validates that rating must be between 0 and 5
|
|
validators=[MinValueValidator(0), MaxValueValidator(5)])
|
|
headline = models.CharField("titre", max_length=128)
|
|
comment = models.CharField("commentaire",
|
|
max_length=8192,
|
|
blank=True)
|
|
user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
|
|
on_delete=models.CASCADE)
|
|
time_created = models.DateTimeField(auto_now_add=True)
|
|
|
|
|
|
class UserFollows(models.Model):
|
|
# Your UserFollows model definition goes here
|
|
user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
|
|
on_delete=models.CASCADE,
|
|
related_name="following",
|
|
null=True)
|
|
followed_user = models.ForeignKey(to=settings.AUTH_USER_MODEL,
|
|
on_delete=models.CASCADE,
|
|
related_name="followed",
|
|
null=True)
|
|
starting_date = models.DateTimeField(auto_now_add=True)
|
|
|
|
class Meta:
|
|
# ensures we don't get multiple UserFollows instances
|
|
# for unique user-user_followed pairs
|
|
unique_together = ('user', 'followed_user', )
|
|
|
|
def __str__(self):
|
|
return f'{self.user} -> {self.followed_user}'
|