|
|
|
@ -17,13 +17,20 @@ CURRENCIES = ( |
|
|
|
('eur', 'EUR'), |
|
|
|
('eur', 'EUR'), |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
TERMS = ( |
|
|
|
TERM_TYPES = ( |
|
|
|
('project', 'За проект'), |
|
|
|
|
|
|
|
('hour', 'За час'), |
|
|
|
|
|
|
|
('day', 'За день'), |
|
|
|
('day', 'За день'), |
|
|
|
|
|
|
|
('hour', 'За час'), |
|
|
|
('month', 'За месяц'), |
|
|
|
('month', 'За месяц'), |
|
|
|
|
|
|
|
('project', 'За проект'), |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TERM_TYPE_MORPHS = { |
|
|
|
|
|
|
|
'day': 'день,дня,дней', |
|
|
|
|
|
|
|
'hour': 'час,часа,часов', |
|
|
|
|
|
|
|
'month': 'месяц,месяца,месяцев', |
|
|
|
|
|
|
|
'project': 'проект,проекта,проектов' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BuildingClassfication(models.Model): |
|
|
|
class BuildingClassfication(models.Model): |
|
|
|
name = models.CharField(max_length=255) |
|
|
|
name = models.CharField(max_length=255) |
|
|
|
@ -92,7 +99,7 @@ class Project(models.Model, HitCountMixin): |
|
|
|
specialization = TreeForeignKey(Specialization, related_name='projects') |
|
|
|
specialization = TreeForeignKey(Specialization, related_name='projects') |
|
|
|
state = models.CharField(default='active', max_length=20, choices=STATES) |
|
|
|
state = models.CharField(default='active', max_length=20, choices=STATES) |
|
|
|
term = models.IntegerField(default=0) |
|
|
|
term = models.IntegerField(default=0) |
|
|
|
term_type = models.CharField(max_length=20, choices=TERMS, default='hour') |
|
|
|
term_type = models.CharField(max_length=20, choices=TERM_TYPES, default='hour') |
|
|
|
text = models.TextField(blank=True) |
|
|
|
text = models.TextField(blank=True) |
|
|
|
work_type = models.IntegerField(default=1, choices=WORK_TYPES) |
|
|
|
work_type = models.IntegerField(default=1, choices=WORK_TYPES) |
|
|
|
|
|
|
|
|
|
|
|
@ -131,7 +138,7 @@ class Answer(models.Model): |
|
|
|
project = models.ForeignKey(Project, related_name='answers') |
|
|
|
project = models.ForeignKey(Project, related_name='answers') |
|
|
|
secure_deal_only = models.BooleanField(default=False) |
|
|
|
secure_deal_only = models.BooleanField(default=False) |
|
|
|
term = models.IntegerField(blank=True, null=True) |
|
|
|
term = models.IntegerField(blank=True, null=True) |
|
|
|
term_type = models.CharField(max_length=10, choices=TERMS, blank=True, null=True) |
|
|
|
term_type = models.CharField(max_length=10, choices=TERM_TYPES, blank=True, null=True) |
|
|
|
is_archive = models.BooleanField(default=False) |
|
|
|
is_archive = models.BooleanField(default=False) |
|
|
|
rejected = models.BooleanField(default=False) |
|
|
|
rejected = models.BooleanField(default=False) |
|
|
|
|
|
|
|
|
|
|
|
@ -141,15 +148,6 @@ class Answer(models.Model): |
|
|
|
|
|
|
|
|
|
|
|
def get_first_message(self): |
|
|
|
def get_first_message(self): |
|
|
|
return self.messages.first().text |
|
|
|
return self.messages.first().text |
|
|
|
|
|
|
|
|
|
|
|
def get_term_type_labels(self): |
|
|
|
|
|
|
|
term_type_labels = { |
|
|
|
|
|
|
|
'hour': 'час,часа,часов', |
|
|
|
|
|
|
|
'day': 'день,дня,дней', |
|
|
|
|
|
|
|
'month': 'месяц,месяца,месяцев', |
|
|
|
|
|
|
|
'project': 'проект,проект,проект' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return term_type_labels.get(self.term_type) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
def __str__(self): |
|
|
|
return "{author}'s answer ({id})".format(author=type(self.author).__name__, id=self.pk) |
|
|
|
return "{author}'s answer ({id})".format(author=type(self.author).__name__, id=self.pk) |
|
|
|
@ -252,7 +250,7 @@ class Stage(models.Model): |
|
|
|
order = models.ForeignKey(Order, related_name='stages') |
|
|
|
order = models.ForeignKey(Order, related_name='stages') |
|
|
|
result = models.CharField(max_length=255) |
|
|
|
result = models.CharField(max_length=255) |
|
|
|
term = models.DateField() |
|
|
|
term = models.DateField() |
|
|
|
term_type = models.CharField(max_length=10, choices=TERMS, default='hour') |
|
|
|
term_type = models.CharField(max_length=10, choices=TERM_TYPES, default='hour') |
|
|
|
status = models.CharField(choices=STATUSES, max_length=30, default='not_agreed') |
|
|
|
status = models.CharField(choices=STATUSES, max_length=30, default='not_agreed') |
|
|
|
created = models.DateTimeField(default=timezone.now) |
|
|
|
created = models.DateTimeField(default=timezone.now) |
|
|
|
pos = models.IntegerField(default=0, null=True, blank=True) |
|
|
|
pos = models.IntegerField(default=0, null=True, blank=True) |
|
|
|
@ -295,7 +293,7 @@ class Portfolio(models.Model): |
|
|
|
name = models.CharField(max_length=255) |
|
|
|
name = models.CharField(max_length=255) |
|
|
|
specialization = TreeForeignKey(Specialization, related_name='portfolios', null=True, blank=True) |
|
|
|
specialization = TreeForeignKey(Specialization, related_name='portfolios', null=True, blank=True) |
|
|
|
term = models.IntegerField(default=0, 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) |
|
|
|
term_type = models.CharField(max_length=20, choices=TERM_TYPES, default='hour', null=True, blank=True) |
|
|
|
user = models.ForeignKey(User, related_name='portfolios', null=True, blank=True) |
|
|
|
user = models.ForeignKey(User, related_name='portfolios', null=True, blank=True) |
|
|
|
worksell = models.BooleanField(default=False) |
|
|
|
worksell = models.BooleanField(default=False) |
|
|
|
|
|
|
|
|
|
|
|
|