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.
 
 
 
 
 
 

82 lines
3.1 KiB

from django.db import models
from mptt.models import TreeForeignKey
from sorl.thumbnail import ImageField
from projects.models import BuildingClassfication, ConstructionType, TERM_TYPES, CURRENCIES, Project
from specializations.models import Specialization
from users.models import User, Team
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 = TreeForeignKey(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)
team = models.ForeignKey(Team, related_name='work_sells', null=True, blank=True)
term = models.IntegerField(default=0, null=True, blank=True)
term_type = models.CharField(max_length=20, choices=TERM_TYPES, default='hour', null=True, blank=True)
work_type = models.IntegerField(default=1, choices=Project.WORK_TYPES)
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')
class Meta:
verbose_name = 'Изображение Готовая работа'
verbose_name_plural = 'Изображения Готовые работы'
def __str__(self):
return self.img and self.img.url or str(self.img)
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)