class Staff(models.Model): """ abstract class for staff """ first_name = models.CharField(max_length=125, verbose_name="ім'я") last_name = models.CharField(max_length=125, verbose_name='прізвище') middle_name = models.CharField(max_length=125, blank=True, verbose_name='по-батькові') birthday = models.DateField(verbose_name='день народження') image = models.ImageField(upload_to='staff/', verbose_name='фото') image_avatar = ImageSpecField( source='image', processors=[Transpose(), SmartResize(370, 377)], format='JPEG', options={'quality': 70}) image_small = ImageSpecField( source='image', processors=[Transpose(), SmartResize(164, 136)], format='JPEG', options={'quality': 60}) description = models.TextField(blank=True) def get_full_name(self): return "{} {} {}".format(self.last_name, self.first_name, self.middle_name) class Meta: abstract = True
class Image(models.Model): file = models.ImageField('Datei') creator = models.ForeignKey('gestalten.Gestalt', related_name='images', on_delete=models.PROTECT) preview_api = ImageSpecField( source='file', processors=[Transpose(), SmartResize(250, 250)], format='PNG') preview_content = ImageSpecField( source='file', processors=[Transpose(), SmartResize(200, 200)], format='PNG') preview_gallery = ImageSpecField( source='file', processors=[Transpose(), ResizeToFit(250)], format='PNG') preview_group = ImageSpecField( source='file', processors=[Transpose(), SmartResize(366, 120)], format='PNG') intro = ImageSpecField(source='file', processors=[Transpose(), ResizeToFit(554)], format='JPEG') def __str__(self): return '{} ({})'.format(self.file, self.creator)[2:]
class Article(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) like_users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='like_articles') hashtags = models.ManyToManyField(Hashtag) title = models.CharField(max_length=10) content = models.TextField() image = models.ImageField(blank=True) image_thumbnail_detail = ImageSpecField(source='image', processors=[ # 이미지 회전 방지 Transpose(), ResizeToFill(670, 500) ], format='JPEG', options={'quality': 100}) image_thumbnail_index = ImageSpecField(source='image', processors=[ # 이미지 회전 방지 Transpose(), ResizeToFill(200, 200) ], format='JPEG', options={'quality': 100}) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) price = models.IntegerField()
class NewsImage(models.Model): news = models.ForeignKey(News, on_delete=models.CASCADE, related_name='images', verbose_name='Новость') def get_picture_url(self, filename): ext = filename.split('.')[-1] filename = '{0}.{1}'.format(uuid1(), ext) return 'images/news/{0}/{1}'.format(self.news.slug, filename) image = models.ImageField(upload_to=get_picture_url, verbose_name='Изображение') image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(105, 58)], format='JPEG', options={'quality': 90}) image_standart = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(729, 410)], format='JPEG', options={'quality': 90}) def __str__(self): return self.image.name class Meta: verbose_name = 'Изображение' verbose_name_plural = 'Изображения'
class Gallery(models.Model): """ class describe Gallery """ title = models.CharField(max_length=125, verbose_name='назва альбому') title_image = models.ImageField(upload_to='title/', verbose_name='титульне фото') title_image_avatar = ImageSpecField( source='title_image', processors=[Transpose(), SmartResize(370, 370)], format='JPEG', options={'quality': 60}) title_image_big = ImageSpecField( source='title_image', processors=[Transpose(), SmartResize(1800, 950)], format='JPEG', options={'quality': 100}) description = models.CharField(max_length=250, blank=True, verbose_name='опис альбому') category = models.ForeignKey(CategoryGallery, on_delete=models.SET_NULL, blank=True, null=True) created = models.DateField(auto_now_add=True, verbose_name='створено') class Meta: verbose_name = 'Галерея' verbose_name_plural = "Галереї" def __str__(self): return "{}".format(self.title)
class Article(News): """ model that describe post """ title = models.CharField(max_length=125, verbose_name='Заголовок') description = models.CharField(max_length=250, verbose_name='Короткий опис') image = models.ImageField(upload_to='article/', null=True, blank=True, verbose_name='фото') image_avatar = ImageSpecField( source='image', processors=[Transpose(), SmartResize(370, 215)], format='JPEG', options={'quality': 60}) image_grid = ImageSpecField( source='image', processors=[Transpose(), SmartResize(370, 304)], format='JPEG', options={'quality': 60}) category = models.ForeignKey(Category, blank=True, null=True, on_delete=models.SET_NULL, verbose_name='Категорія') is_approve = models.BooleanField(default=False) def __str__(self): return '"{}" {}'.format(self.title, self.author) class Meta: verbose_name = 'Стаття' verbose_name_plural = 'Статті'
class Event(models.Model): owner = models.ForeignKey(Musician, on_delete=models.CASCADE, related_name="events") title = models.CharField(max_length=255) date_time = models.DateTimeField() description = models.TextField() public = models.BooleanField(default=True) save_event = models.ManyToManyField(User, related_name="save_event", blank=True) favorited_by = models.ManyToManyField(User, related_name="favorite_event", blank=True) in_progress = models.BooleanField(default=False) genre = models.CharField(max_length=255, null=True, blank=True) viewers = models.IntegerField(default=0) video = models.FileField(upload_to="videos/", null=True, blank=True) cover_photo = models.ImageField(upload_to="images/", null=True, blank=False) thumbnail = ImageSpecField( source="cover_photo", processors=[ Transpose(), SmartResize(250, 188), ], format="JPEG", options={"quality": 100}, ) full_cover = ImageSpecField( source="cover_photo", processors=[ Transpose(), SmartResize(600, 480), ], format="JPEG", options={"quality": 100}, ) def __str__(self): return f'{self.title} by {self.owner.user.username}' @property def is_upcoming(self): now = datetime.now() timezone = pytz.timezone("America/New_York") now_aware = timezone.localize(now) return self.date_time > now_aware @property def is_finished(self): now = datetime.now() timezone = pytz.timezone("America/New_York") now_aware = timezone.localize(now) return self.date_time < now_aware and not self.in_progress
class ProductImage(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='images', verbose_name='Товар') color = models.ForeignKey(Color, on_delete=models.CASCADE, related_name='images', verbose_name='Цвет', null=True, blank=True) def get_picture_url(self, filename): ext = filename.split('.')[-1] filename = '{0}.{1}'.format(uuid1(), ext) return 'images/products/{0}/{1}'.format(self.product.slug, filename) image = models.ImageField(upload_to=get_picture_url, verbose_name='Изображение') image_big = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(696, 870)], format='JPEG', options={'quality': 90}) image_medium = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(260, 391)], format='JPEG', options={'quality': 90}) image_prod = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(535, 802)], format='JPEG', options={'quality': 90}) image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(150, 130)], format='JPEG', options={'quality': 90}) class Meta: verbose_name = 'Изображение' verbose_name_plural = 'Изображения' unique_together = ('color', 'product') def __str__(self): return '{0} -- {1}'.format(self.product.name, self.id)
class File(core.models.Model): file = models.FileField() filename = models.CharField(max_length=255, blank=True, null=True) contribution = django.contrib.contenttypes.fields.GenericRelation( 'contributions.Contribution', content_type_field='contribution_type', object_id_field='contribution_id', related_query_name='file') version = models.ForeignKey('content2.Version', null=True, on_delete=models.CASCADE, related_name='file') image_480 = ImageSpecField(source='file', processors=[Transpose(), ResizeToFit(480)], format='JPEG') image_768 = ImageSpecField(source='file', processors=[Transpose(), ResizeToFit(768)], format='JPEG') image_1200 = ImageSpecField(source='file', processors=[Transpose(), ResizeToFit(1200)], format='JPEG') image_1920 = ImageSpecField(source='file', processors=[Transpose(), ResizeToFit(1920)], format='JPEG') objects = FileManager() @property def display_name(self): return self.filename or path.basename(self.file.name) def __str__(self): return self.display_name def get_absolute_url(self): return self.file.url def is_image(self): root, ext = path.splitext(self.file.name.lower()) return ext in ('.svg', '.apng', '.png', '.gif', '.jpg', '.jpeg') def is_video(self): root, ext = path.splitext(self.file.name.lower()) return ext in ('.mp4', '.ogg', '.webm') def is_audio(self): root, ext = path.splitext(self.file.name.lower()) return ext in ('.opus', '.ogg', '.aac', '.mp3', '.flac', '.m4a')
class Employee(models.Model): class Meta(): ordering = ['first_name'] user = models.OneToOneField( settings.AUTH_USER_MODEL, models.SET_NULL, verbose_name='user id', blank=True, null=True) department = models.ForeignKey( Department, models.SET_NULL, verbose_name='department id', blank=True, null=True) status_code = models.SmallIntegerField('status code activity of user', default=0) first_name = models.CharField(max_length=255, null=True, blank=True) last_name = models.CharField(max_length=255, null=True, blank=True) age = models.IntegerField('age of user', blank=True, null=True) about_me = models.CharField('introduce about me of user', max_length=400) birthday = models.DateTimeField( 'birthday of user', auto_now=False, auto_now_add=False, blank=True, null=True) avatar_original = ProcessedImageField( null=True, blank=True, processors=[Transpose()], format='JPEG', options={'quality': 50}) small = ImageSpecField( source='avatar_original', processors=[Transpose(), SmartResize(640, 505)], format='JPEG', options={'quality': 50}) medium = ImageSpecField( source='avatar_original', # processors=[Transpose(), ResizeToFit(640, 600, False)], # processors=[Transpose(), SmartResize(320, 300)], processors=[Transpose(), SmartResize(640, 600)], format='JPEG', options={'quality': 70}) created_date = models.DateTimeField(auto_now_add=True) modified_date = models.DateTimeField(null=True, blank=True) objects = EmployeeManager() def full_name(self): """Custom full name method as a property.""" return str(self.first_name) + ' ' + str(self.last_name) def __str__(self): """Default string.""" return self.user.email if self.user else ''
class Campaign(models.Model): title = models.CharField(max_length=200) slug = models.SlugField(unique=True,blank=True,null=True) perk = models.CharField(max_length=200,blank=True,null=True) niche = models.CharField(max_length=200,blank=True,null=True) requirement = models.IntegerField(default=0) description = models.TextField() category = models.ForeignKey(Category,related_name='campaigns',blank=True,null=True) slots = models.IntegerField(default=0) image = models.FileField(upload_to=get_upload_file_name,null=True,blank=True) image_thumbnail250= ImageSpecField(source='image', processors=[Transpose(),SmartResize(250,250)], format='JPEG', options={'quality':80}) image_thumbnail80= ImageSpecField(source='image', processors=[Transpose(),SmartResize(80,80)], format='JPEG', options={'quality':80}) postDate = models.DateTimeField(auto_now_add=True) startDate = models.DateField(blank=True,null=True) endDate = models.DateField(blank=True,null=True) product = models.BooleanField(default=False) discount = models.BooleanField(default=False) cash = models.BooleanField(default=False) twitter = models.BooleanField(default=False) facebook = models.BooleanField(default=False) instagram = models.BooleanField(default=False) youtube = models.BooleanField(default=False) vine = models.BooleanField(default=False) snapchat = models.BooleanField(default=False) paid = models.BooleanField(default=False) active = models.BooleanField(default=True) user = models.ForeignKey(User, related_name='campaigns',null=True,blank=True) def __unicode__(self): return self.title def save(self, **kwargs): #This overwrites the save function and makes sure the slug is unique. #Note slug is a separate file slug.py with the unique_slugify function. from slug import unique_slugify slug_str="%s"%self.title unique_slugify(self, slug_str) super(Campaign, self).save()
class Musician(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) name = models.CharField(max_length=255, blank=True, null=True) bio = models.TextField() city = models.CharField(max_length=255) latitude = models.FloatField(blank=True, null=True) longitude = models.FloatField(blank=True, null=True) # fields having to do with money cashapp_name = models.CharField(max_length=255, blank=True, null=True) paypal_donation_url = models.CharField(max_length=255, blank=True, null=True) cashapp_qr = models.ImageField(upload_to="images/", null=True, blank=True) paypal_qr = models.ImageField(upload_to="images/", null=True, blank=True) venmo_qr = models.ImageField(upload_to="images/", null=True, blank=True) favorited_by = models.ManyToManyField(User, related_name="favorite_musician", blank=True) # fields having to do with images headshot = models.ImageField(upload_to="images/", null=True, blank=False) thumbnail = ImageSpecField( source="headshot", processors=[Transpose(), ResizeToCover(200, 200), SmartCrop(200, 200)], format="JPEG", options={"quality": 100}, ) full_cover = ImageSpecField( source="headshot", processors=[Transpose(), ResizeToFit(600, 600), SmartCrop(400, 400)], format="JPEG", options={"quality": 100}, ) very_small_thumb = ImageSpecField( source="headshot", processors=[Transpose(), ResizeToCover(100, 100), SmartCrop(100, 100)], format="JPEG", options={"quality": 100}, ) def __str__(self): return f'{self.name}'
class Category(SEO, Position): name = models.CharField('Название', max_length=100) code_1c = models.CharField('Код 1с', max_length=20, unique=True) def get_picture_url(self, filename): ext = filename.split('.')[-1] filename = '{0}.{1}'.format(uuid1(), ext) return 'images/categories/{}'.format(filename) image = models.ImageField(upload_to=get_picture_url, verbose_name='Изображение', null=True, blank=True) image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(261, 424)], format='JPEG', options={'quality': 90}) class Meta: verbose_name = 'Категория' verbose_name_plural = 'Категории' ordering = ('position', ) def get_absolute_url(self): return '{}?category={}'.format(reverse('products'), self.slug) def get_products(self): return self.products.filter(is_active=True) def __str__(self): return self.name
class Plants(BaseModel): name = models.CharField(max_length=120, verbose_name='Plant name') last_water = models.DateTimeField(default=timezone.now, blank=True, verbose_name='Last water') info_url = models.URLField(max_length=200, null=True, blank=True, verbose_name='Info url') water_schedule = models.ForeignKey(IntervalSchedule, on_delete=models.CASCADE, verbose_name='Watering schedule') #water_schedule = models.CharField(max_length=30, default="1") image = models.ImageField(null=True, blank=True, upload_to="static/plant_images/", verbose_name="Image") image_thumbnail = ImageSpecField(source='image', processors=[Transpose()], format='JPEG') class Meta: ordering = ['name'] verbose_name_plural = "Plants" def get_absolute_url(self): return '/plant/{0}/'.format(self.id) def __unicode__(self): return self.name def __str__(self): return self.name
class Slide(models.Model): main_text = models.CharField('Заголовок', max_length=250, null=True, blank=True) sub_text = models.CharField('Описание', max_length=250, null=True, blank=True) url = models.CharField('Ссылка', max_length=250, null=True, blank=True) image = models.ImageField(upload_to='images/slides/', verbose_name='Изображение', null=True, blank=True) image_big = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(1116, 480)], format='JPEG', options={'quality': 90}) class Meta: verbose_name = 'Слайд' verbose_name_plural = 'Слайды' def __str__(self): return 'Слайд №{}'.format(self.id)
class Person(models.Model): """ Additional information to describe a user, particularly items for user's profile """ user = models.OneToOneField(User, on_delete=models.CASCADE) middle_name = models.CharField(max_length=30, blank=True) # Sometimes the meta data for image orientation is messed up # Here's the fix implemented below: https://stackoverflow.com/questions/17385574/stopping-auto-rotation-of-images-in-django-imagekit-thumbnail photo = ProcessedImageField(upload_to='profile_photos', processors=[Transpose(), ResizeToFill(500, 500)], format='JPEG', options={'quality': 85}, null=True, blank=True) telephone_number = TelephoneNumberField(blank=True, null=True) address_line_1 = models.CharField(max_length=80, blank=True) address_line_2 = models.CharField(max_length=80, blank=True) address_line_3 = models.CharField(max_length=80, blank=True) city = models.CharField(max_length=80, blank=True) state = USStateField(blank=True) zipcode = USZipCodeField(blank=True) newest_update = models.DateTimeField(auto_now=True) biography = models.CharField(max_length=100, blank=True, null=True) can_create_loops = models.BooleanField(default=False)
def __init__(self, source): self.processors = [ Transpose(), ResizeToFill(self.width, self.height, upscale=True), Adjust(sharpness=2.0), ] super().__init__(source)
class Image(models.Model): # user = OneToOneField(User, related_name="image", null=True, blank=True) # content_object = GenericForeignKey('content_type', 'object_id') image = ProcessedImageField(processors=[ # ResizeToFill( # 100, 50), Transpose()], upload_to=image_upload_location, null=True, blank=True, format='JPEG', options={'quality': 60}) my_namespace = CharField( default="", max_length=128, null=True, blank=True) timestamp = DateTimeField(editable=False, auto_now_add=True, auto_now=False, null=True, blank=True) updated = models.DateTimeField(auto_now=True, blank=True, null=True) def get_timestamp(self, pretty=False): if pretty: return self.timestamp.strftime("%Y-%m-%d %H:%M:%S") return self.timestamp.strftime("%Y-%m-%d_%H:%M:%S") def __str__(self): return '{} {}'.format(self.my_namespace, self.get_timestamp(pretty=True)) def time_ago(self): return naturaltime(self.timestamp)
class PageQuote(models.Model): page = models.ForeignKey(Page, on_delete=models.CASCADE, related_name='quotes', verbose_name='Страница') text = models.TextField('Текст цитаты') author = models.CharField('Автор цитаты', max_length=250) profession = models.CharField('Профессия автора', max_length=250) def get_image_url(self, filename): ext = filename.split('.')[-1] filename = '{0}.{1}'.format(uuid1(), ext) return 'images/pages_quote/{0}/{1}'.format(self.page.slug, filename) image = models.FileField(max_length=500, upload_to=get_image_url, verbose_name='Изображение') image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(48, 48)], format='JPEG', options={'quality': 90}) def __str__(self): return self.text class Meta: verbose_name = 'Цитата' verbose_name_plural = 'Цитаты'
def __init__(self, source): self.processors = [ Transpose(), ResizeToFill(self.size, self.size, upscale=self.upscale), Adjust(sharpness=2.0), ] super().__init__(source)
class Post(models.Model): title = models.CharField(max_length=100) slug = models.SlugField(null=True, unique=True, max_length=111) content = models.TextField() image = models.ImageField(upload_to='post_images') image_thumbnail = ImageSpecField( source='image', processors=[Transpose(), ResizeToFill(1000, 500)], format='JPEG', options={'quality': 70}) date_posted = models.DateTimeField(default=timezone.now) author = models.ForeignKey(User, on_delete=models.CASCADE) likes = models.ManyToManyField(User, related_name='likes', blank=True) tagged_users = models.ManyToManyField(User, related_name='tagged_users', blank=True) @property def total_likes(self): return self.likes.count() def _str_(self): return self.title def get_absolute_url(self): return reverse('accounts:post-detail', kwargs={'slug': self.slug})
class Image(TimeStampedModel): """ Image Model """ file = ProcessedImageField( processors=[Transpose()], format="JPEG", options={"quality": 50}, upload_to=post_image_path ) restaurant = models.TextField() dish = models.TextField() creator = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, related_name="images") tags = TaggableManager() latitude = models.CharField(max_length=80, null=True) longitude = models.CharField(max_length=80, null=True) point = models.PointField(null=True, blank=True) objects = ImageQuerySet.as_manager() @property def likes_count(self): return self.likes.count() @property def comments_count(self): return self.comments.count() @property def natural_time(self): return naturaltime(self.created_at) @property def is_vertical(self): return self.file.width < self.file.height def __str__(self): return f"{self.restaurant} - {self.dish}"
class Shop(models.Model): city = models.ForeignKey(City, on_delete=models.CASCADE, related_name='shops', verbose_name='Город') address = models.CharField('Адрес', max_length=250) phone = models.CharField('Телефон', max_length=20) email = models.EmailField('Эл. почта', max_length=100, null=True, blank=True) schedule = models.CharField('Режим работы', max_length=250, help_text='Пункты разделять ";"') map_code = models.TextField('Скрипт карты') image = models.ImageField(upload_to='images/shops/', verbose_name='Изображение') image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(600, 257)], format='JPEG', options={'quality': 90}) class Meta: verbose_name = 'Магазин' verbose_name_plural = 'Магазины' def __str__(self): return self.address
class GeorefencedImage(models.Model): active = models.BooleanField( ugettext_lazy("Active"), default=True, null=False, blank=False, help_text=ugettext_lazy("Activate this geoimage")) geom = PointField() comment = models.TextField() #image = DeletingImageField() ident = models.ForeignKey(User) date = models.DateTimeField(auto_now=False, auto_now_add=False) category = models.CharField(max_length=50, blank=False, choices=CATEGORY_CHOICES) image = DeletingImageField(processors=[Transpose(), ResizeToFit(600, 600)], format='jpeg', options={'quality': 70}) image_thumbnail = ImageSpecField( source='image', processors=[Transpose(), SmartResize(128, 128)], format='JPEG', options={'quality': 60}) @property def popupContent(self): return \ u'\ <p>\ <a href="#" onClick="window.open(\'/geoimage/{}/{}\',\'geoimage\', \'width=800, height=620\').focus(); return false;" >\ <img src="/{}" style="float:right;">\ </a>\ {}\ </p>\ <p><a href="/geoimage/{}">{}</a> {}</p>' .format( self.ident, self.id, self.image_thumbnail.url, self.comment, self.ident, self.ident, self.date )
class ProPicture(models.Model): picture = models.ImageField(upload_to='documents/', blank=True) picture_thumbnail = ImageSpecField( source='picture', processors=[Transpose(), ResizeToFill(100, 50)], format='JPEG', options={'quality': 60}) user_id = models.ForeignKey(User, related_name='profilePic')
class News(SEO): category = models.ForeignKey(NewsCategory, on_delete=models.CASCADE, related_name='news', verbose_name='Категория новости') title = models.CharField('Название', max_length=250) body1 = models.TextField('Текст новости #1', null=True, blank=True) body2 = models.TextField('Текст новости #2', null=True, blank=True) body3 = models.TextField('Текст новости #3', null=True, blank=True) is_active = models.BooleanField('Показывать на сайте', default=True) created = models.DateField('Дата создания', auto_now_add=True) updated = models.DateField('Дата изменения', auto_now=True) image = models.ImageField(upload_to='images/news/', verbose_name='Изображение') image_medium = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(690, 389)], format='JPEG', options={'quality': 90}) image_small = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(356, 200)], format='JPEG', options={'quality': 90}) image_admin = ImageSpecField( source='image', processors=[Transpose('auto'), ResizeToFill(70, 40)], format='JPEG', options={'quality': 90}) def get_absolute_url(self): return reverse('news_detail', args=[self.slug]) class Meta: verbose_name = 'Новость' verbose_name_plural = 'Новости' ordering = ('-created', ) def __str__(self): return self.title
class Post(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE) group = models.ForeignKey(StudyGroup, on_delete=models.CASCADE, default=1) title = models.CharField(max_length=100) content = models.TextField(blank=True) time_posted = models.DateTimeField(auto_now_add=True, blank=True) image = models.ImageField(blank=True, null=True, upload_to='images/') image_thumbnail = ImageSpecField( source='image', processors = [Transpose(),SmartResize(200, 200)], format = 'JPEG', ) image_fullsize = ImageSpecField( source='image', processors = [Transpose()], ) def __str__(self): return self.title
class Event(models.Model): """ class for describe event at kindergarten """ title = models.CharField(max_length=125, verbose_name='назва події') title_image = models.ImageField(upload_to='event_title/%Y/%m/%d', blank=True, null=True, verbose_name='фото обложки') title_image_avatar = ImageSpecField( source='title_image', processors=[Transpose(), SmartResize(370, 300)], format='JPEG', options={'quality': 60}) title_image_detail = ImageSpecField( source='title_image', processors=[Transpose(), SmartResize(870, 469)], format='JPEG', options={'quality': 80}) created = models.DateField(auto_now_add=True, verbose_name='створено') scheduled = models.DateTimeField(blank=True, null=True, verbose_name='дата проведення') description = models.CharField(max_length=250, verbose_name='опис') place = models.CharField(max_length=200, blank=True, verbose_name='місце проведення') content = models.TextField(blank=True, verbose_name='контент') gallery = models.ForeignKey(Gallery, on_delete=models.CASCADE, blank=True, null=True, related_name='gallery_event', verbose_name='галерея') is_active = models.BooleanField(default=True) class Meta: verbose_name = "Подія" verbose_name_plural = "Події" def __str__(self): return "{}".format(self.title)
def __init__(self, source, size): super().__init__( source=source, format='JPEG', options={ 'quality': 90, 'thumbnail_size': size }, processors=[Transpose(Transpose.AUTO), ResizeToFit(size, size)], )
class Case(models.Model): STATUS_CHOICES = ( ('결제 대기 중','결제 대기 중'), ('출원 준비 중','출원 준비 중'), ('심사 중','심사 중'), ('출원공고','출원공고'), ('거절 대응 중','거절 대응 중'), ('등록','등록'), ('갱신 대상','갱신 대상'), ) trademark_title = models.CharField(max_length=80, null=True, blank=True) file = ProcessedImageField(processors=[ Transpose() ], format='JPEG', options={'quality': 50}, null=True, blank=True) # 주인이 사라졌을 때, 종속되어 있는 아이들을 어떻게 할것인가? 를 지정해 줘야 하는듯, on_delete=models.PROTECT를 넣어서 해결 owner = models.ForeignKey(user_models.User, null=True, on_delete=models.PROTECT) # examiner 관한 사항 추가 examiner = models.ForeignKey(examiner_models.Examiner, null=True, on_delete=models.PROTECT) import도 역시 해야 함. # payment 관한 사항 추가 payment = models.ForeignKey(payment_models.Payment, null=True, on_delete=models.PROTECT) import도 역시 해야 함. # 여러 사건이 하나의 결제로 이루어질 경우, 각 사건이 하나의 결제를 참조(포인팅)할 수 있다. request_date = models.DateField(auto_now_add=True) payment_date = models.DateField(null=True, blank=True) filed_date = models.DateField(null=True, blank=True) application_number = models.CharField(max_length=80, null=True, blank=True) identification_number = models.CharField(max_length=80, null=True, blank=True) publication_number = models.CharField(max_length=80, blank=True, null=True) publication_date = models.DateField(null=True, blank=True) registration_number = models.CharField(max_length=80, blank=True, null=True) registration_date = models.DateField(null=True, blank=True) products = models.TextField(blank=True, null=True) designatedArray = models.TextField(blank=True, null=True) applicantArray = models.TextField(blank=True, null=True) paymentArray = models.TextField(blank=True, null=True) descriptions = models.TextField(blank=True, null=True) progress_status = models.CharField(max_length=80, choices=STATUS_CHOICES, blank=True, null=True) expected_date = models.DateField(null=True, blank=True) examiner_name = models.CharField(max_length=80, blank=True, null=True) examiner_phone = models.CharField(max_length=80, blank=True, null=True) examiner_team = models.CharField(max_length=80, blank=True, null=True) waiting_order = models.PositiveSmallIntegerField(blank=True, null=True) waiting_total = models.PositiveSmallIntegerField(blank=True, null=True) def __str__(self): return '상표명: {} - 출원인: {}'.format(self.trademark_title, self.owner.username)