Добавление портфолио в тестовом виде
This commit is contained in:
@@ -300,9 +300,9 @@ class Order(models.Model):
|
||||
default=CHOICE_UNDEFINED, verbose_name="Тип помещения")
|
||||
|
||||
number_of_rooms = models.SmallIntegerField(verbose_name='Количество комнат, -1 = студия', validators=[
|
||||
MinValueValidator(-1),
|
||||
MaxValueValidator(100)
|
||||
])
|
||||
MinValueValidator(-1),
|
||||
MaxValueValidator(100)
|
||||
])
|
||||
|
||||
is_balcony = models.BooleanField(default=False, verbose_name="Балкон")
|
||||
is_loggia = models.BooleanField(default=False, verbose_name="Лоджия")
|
||||
@@ -402,6 +402,33 @@ class Order(models.Model):
|
||||
else:
|
||||
return q[0]
|
||||
|
||||
|
||||
class Portfolio(models.Model):
|
||||
account = models.ForeignKey(Account, on_delete=models.CASCADE, verbose_name="Аккаунт")
|
||||
|
||||
title = models.CharField(max_length=200, verbose_name="Название")
|
||||
actual_date = models.DateField(verbose_name="Дата выполнения", default=datetime.now)
|
||||
actual_price = models.DecimalField(max_digits=12, decimal_places=2, blank=False, verbose_name="Цена")
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.id}: \"{self.title}\""
|
||||
|
||||
|
||||
class PortfolioPhoto(models.Model):
|
||||
portfolio = models.ForeignKey(Portfolio, on_delete=models.CASCADE, verbose_name="Портфолио")
|
||||
photo = models.ForeignKey(Media, on_delete=models.SET_NULL, null=True, verbose_name="Аватар")
|
||||
is_preview = models.BooleanField(verbose_name="Это главная фотография")
|
||||
|
||||
class Meta:
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=['portfolio', 'photo'], name='unique_portfoliophoto_photo'
|
||||
)
|
||||
]
|
||||
|
||||
# TODO добавить проверку того, чтобы нельзя было приложить медиа другого юзера
|
||||
|
||||
|
||||
# def _upload_image_filename(instance, filename):
|
||||
# name, ext = os.path.splitext(filename)
|
||||
# fn = sha256((str(datetime.now()) + name).encode('utf-8')).hexdigest() + ext
|
||||
|
||||
Reference in New Issue
Block a user