from django.db import models from django.utils import timezone from mptt.models import TreeForeignKey from sorl.thumbnail import ImageField from users.models import User, Team from projects.models import BuildingClassfication, ConstructionType, TERMS, CURRENCIES from specializations.models import Specialization class WorkSell(models.Model): # TODO: Add consistency ("work_sell" vs "worksell"): budget = models.DecimalField(max_digits=10, decimal_places=0, default=0, null=True, blank=True) building_classification = models.ForeignKey(BuildingClassfication, related_name='worksells', null=True, blank=True) construction_type = models.ForeignKey(ConstructionType, related_name='worksells', null=True, blank=True) contractor = models.ForeignKey(User, related_name='work_sell', null=True, blank=True) # TODO: Pluralize related name created = models.DateTimeField(auto_now_add=True) currency = models.CharField(max_length=20, default='rur', choices=CURRENCIES, null=True, blank=True) description = models.TextField(blank=True) location = TreeForeignKey('common.Location', related_name='worksells', null=True, blank=True) name = models.CharField(max_length=255) specialization = TreeForeignKey(Specialization, related_name='worksells', null=True, blank=True) term = models.IntegerField(default=0, null=True, blank=True) term_type = models.CharField(max_length=20, choices=TERMS, default='hour', null=True, blank=True) def __str__(self): return self.name def is_author_for_work(self): pass def get_prev(self): try: return self.get_previous_by_created(contractor=self.contractor) except self.DoesNotExist: return None def get_next(self): try: return self.get_next_by_created(contractor=self.contractor) except self.DoesNotExist: return None def get_cover(self): photo = self.photos.first() return photo and photo.img class Meta: ordering = ['-created'] verbose_name = 'Готовая работа' verbose_name_plural = 'Готовые работы' class WorkSellPhoto(models.Model): img = ImageField(upload_to='worksell/worksell') worksell = models.ForeignKey(WorkSell, related_name='photos') def __str__(self): return self.worksell.name class Meta: verbose_name = 'Изображение Готовая работа' verbose_name_plural = 'Изображения Готовые работы' class Picture(models.Model): file = models.ImageField(upload_to='worksell/pictures') slug = models.SlugField(max_length=50, blank=True) def __str__(self): return self.file.name def save(self, *args, **kwargs): self.slug = self.file.name super().save(*args, **kwargs) def delete(self, *args, **kwargs): self.file.delete(False) super().delete(*args, **kwargs)