53 lines
2.1 KiB
Python
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', )
|
|
|