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.
 
 
 
 
 
 

204 lines
6.1 KiB

from datetime import datetime
from django.db import models
from django.utils import timezone
from users.models import User
from specializations.models import Specialization
CURRENCIES = (
('rur', 'RUR'),
('usd', 'USD'),
('eur', 'EUR'),
)
TERMS = (
('hour', 'Hour'),
('day', 'day'),
('month', 'month'),
)
class BuildingClassfication(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Тип здания'
verbose_name_plural = 'Типы здания'
class ConstructionType(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Вид строительства'
verbose_name_plural = 'Виды строительства'
class Country(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Страна'
verbose_name_plural = 'Страны'
class City(models.Model):
name = models.CharField(max_length=255)
country = models.ForeignKey(Country, related_name='cities')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Город'
verbose_name_plural = 'Города'
class Realty(models.Model):
building_classification = models.ForeignKey(BuildingClassfication, related_name='realties')
city = models.CharField(max_length=50)
construction_type = models.ForeignKey(ConstructionType, related_name='realties')
country = models.CharField(max_length=50)
name = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name='realties')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Объект'
verbose_name_plural = 'Объекты'
class Project(models.Model):
WORK_TYPES = (
('1', 'Проектирование'),
('2', 'Техническое сопровождение')
)
name = models.CharField(max_length=255)
text = models.TextField(blank=True)
work_type = models.IntegerField(default=1, choices=WORK_TYPES)
specialization = models.ForeignKey(Specialization, related_name='projects')
budget = models.DecimalField(max_digits=10, decimal_places=0)
currency = models.CharField(default='rur', choices=CURRENCIES)
term = models.IntegerField(default=0)
term_type = models.CharField(max_length=10, choices=TERMS, default='hour')
budget_by_agreement = models.BooleanField(default=False)
price_and_term_required = models.BooleanField(default=False, blank=True)
#----------------------
created = models.DateTimeField(default=timezone.now)
cro = models.BooleanField(default=False)
realty = models.ForeignKey(Realty, null=True, related_name='projects')
secure_deal = models.BooleanField(default=False)
user = models.ForeignKey(User, related_name='projects')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Проект'
verbose_name_plural = 'Проекты'
class ProjectFile(models.Model):
file = models.FileField(upload_to='projects/project_files')
project = models.ForeignKey(Project)
class Answer(models.Model):
cost = models.DecimalField(max_digits=10, decimal_places=0)
cost_type = models.CharField(max_length=5, choices=CURRENCIES, default='rur')
created = models.DateTimeField(default=timezone.now)
project = models.ForeignKey(Project, related_name='answers')
term = models.IntegerField(default=0)
term_type = models.CharField(max_length=10, choices=TERMS, default='hour')
text = models.TextField()
user = models.ForeignKey(User, related_name='answers')
def __str__(self):
return self.text
class Meta:
verbose_name = 'Ответ к проекту'
verbose_name_plural = 'Ответы к проектам'
ordering = ('-created',)
class Order(models.Model):
contractor = models.ForeignKey(User, null=True, blank=True)
created = models.DateTimeField(default=timezone.now, editable=False)
project = models.OneToOneField(Project, related_name='order')
secure = models.BooleanField(default=False)
status = models.BooleanField(default=False)
def __str__(self):
return self.project.name
class Meta:
verbose_name = 'Заказ'
verbose_name_plural = 'Заказы'
class Stage(models.Model):
cost = models.DecimalField(max_digits=10, decimal_places=0)
cost_type = models.CharField(max_length=5, choices=CURRENCIES, default='rur')
name = models.CharField(max_length=255)
order = models.ForeignKey(Order, related_name='stages')
result = models.CharField(max_length=255)
term = models.IntegerField(default=0)
term_type = models.CharField(max_length=10, choices=TERMS, default='hour')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Этап'
verbose_name_plural = 'Этапы'
class Candidate(models.Model):
answer = models.ForeignKey(Answer, related_name='candidates')
project = models.ForeignKey(Project, related_name='candidates')
status = models.BooleanField(default=False)
def __str__(self):
return self.answer.user.get_full_name()
class Meta:
verbose_name = 'Кандидат'
verbose_name_plural = 'Кандидаты'
class Portfolio(models.Model):
description = models.TextField()
name = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name='portfolio')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Портфолио'
verbose_name_plural = 'Портфолио'
class PortfolioPhoto(models.Model):
img = models.ImageField(upload_to='projects/portfolio')
portfolio = models.ForeignKey(Portfolio)
class Meta:
verbose_name = 'Фото портфолио'
verbose_name_plural = 'Фото портфолио'
# def __str__(self):
# return self.img