53 lines
2.1 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)
topic = models.CharField(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')
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', )