You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

52 lines
2.2 KiB

from django.db import models
from django.core.exceptions import ValidationError
class Watermark(models.Model):
OPACITY_ERROR_TEXT = 'Непрозрачность должна быть должна быть между 0 и 1. Это правило!'
TILE = 'tile'
SCALE = 'scale'
BR = 'br'
TR = 'tr'
BL = 'bl'
TL = 'tl'
POSITIONS = (
(TILE, 'плиточно'),
(SCALE, 'масштабировано'),
(BR, 'нижний правый угол'),
(TR, 'верхний правый угол'),
(BL, 'нижний левый угол'),
(TL, 'верхний левый угол'),
)
title = models.CharField(max_length=32, verbose_name='Заголовок', unique=True)
mark = models.ImageField(upload_to='watermarks', verbose_name='Водный знак')
opacity = models.FloatField(default=1, verbose_name='Непрозрачность', help_text='Значение должно быть от 0 до 1')
position = models.CharField(max_length=8, verbose_name='Расположение', choices=POSITIONS)
x = models.IntegerField(blank=True, null=True, verbose_name='Отступ по оси Х', default=0)
y = models.IntegerField(blank=True, null=True, verbose_name='Отступ по оси У', default=0)
is_active = models.BooleanField(default=True, verbose_name='Активна')
update_hard = models.BooleanField(default=False, verbose_name='Агрессивно обновлять ватермарки',
help_text='Используйте, если хотите обновить уже созданные ватермарки. '
'Бьет по производительности')
def get_position(self):
return self.get_position_display()
def clean(self):
if not 0 <= self.opacity <= 1:
raise ValidationError(self.OPACITY_ERROR_TEXT)
def __unicode__(self):
return self.title
def __str__(self):
return self.title
get_position.short_description = 'Расположение'
class Meta:
verbose_name = 'Водный знак'
verbose_name_plural = 'Водные знаки'