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

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_customer', null=True, blank=True)
target_contractor = models.ForeignKey('users.User', related_name='reviews_by_contractor', 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='customer_reviews', null=True, blank=True)
from_contractor = models.ForeignKey('users.User', related_name='contractor_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'),
)