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.
55 lines
2.2 KiB
55 lines
2.2 KiB
from django.db import models
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils import timezone
|
|
|
|
TYPE_REVIEWS = (
|
|
('positive', 'Положительный'),
|
|
('negative', 'Отрицательный'),
|
|
('neutral', 'Нейтральный'),
|
|
)
|
|
|
|
|
|
class Review(models.Model):
|
|
project = models.ForeignKey('projects.Project', related_name='reviews')
|
|
type = models.CharField(max_length=30, choices=TYPE_REVIEWS, default='neutral')
|
|
text = models.TextField()
|
|
created = models.DateTimeField(default=timezone.now)
|
|
target_customer = models.ForeignKey('users.User', related_name='reviews_by_contractor', null=True, blank=True)
|
|
target_contractor = models.ForeignKey('users.User', related_name='reviews_by_customer', null=True, blank=True)
|
|
target_team = models.ForeignKey('users.Team', related_name='reviews_by_team', null=True, blank=True)
|
|
from_customer = models.ForeignKey('users.User', related_name='contractor_reviews', null=True, blank=True)
|
|
from_contractor = models.ForeignKey('users.User', related_name='customer_reviews', null=True, blank=True)
|
|
from_team = models.ForeignKey('users.Team', related_name='team_reviews', null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
return str(self.pk)
|
|
|
|
def get_absolute_url(self):
|
|
return reverse('reviews:detail', kwargs={'pk': self.pk})
|
|
|
|
def get_sender(self):
|
|
if not self.from_team is None:
|
|
return self.from_team.name
|
|
elif not self.from_customer is None:
|
|
return self.from_customer.username
|
|
else:
|
|
return self.from_contractor.username
|
|
|
|
def get_recipient(self):
|
|
if not self.target_team is None:
|
|
return self.target_team.name
|
|
elif not self.target_customer is None:
|
|
return self.target_customer.username
|
|
else:
|
|
return self.target_contractor.username
|
|
|
|
class Meta:
|
|
verbose_name = 'Отзыв'
|
|
verbose_name_plural = 'Отзывы'
|
|
|
|
unique_together = (
|
|
('from_customer', 'target_contractor', 'project'),
|
|
('from_customer', 'target_team', 'project'),
|
|
('from_contractor', 'target_customer', 'project'),
|
|
('from_team', 'target_customer', 'project'),
|
|
)
|
|
|