added additional fields to review model

This commit is contained in:
Anatoly 2019-08-30 15:30:41 +03:00
parent 693577a524
commit 8fccd069ec
2 changed files with 29 additions and 6 deletions

View File

@ -1,6 +1,7 @@
from django.contrib.contenttypes import fields as generic from django.contrib.contenttypes import fields as generic
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.core.validators import MinValueValidator, MaxValueValidator
from utils.models import BaseAttributes from utils.models import BaseAttributes
@ -12,19 +13,44 @@ class ReviewQuerySet(models.QuerySet):
"""Return reviews by user""" """Return reviews by user"""
return self.filter(reviewer=user) return self.filter(reviewer=user)
def by_vintage(self, year: int):
"""Return reviews by year"""
return self.filter(vintage=year)
class Review(BaseAttributes): class Review(BaseAttributes):
"""Review model""" """Review model"""
TO_INVESTIGATE = 0
TO_REVIEW = 1
READY = 2
REVIEW_STATUSES = (
(TO_INVESTIGATE, _('To investigate')),
(TO_REVIEW, _('To review')),
(READY, _('Ready')),
)
reviewer = models.ForeignKey('account.User', reviewer = models.ForeignKey('account.User',
related_name='review', related_name='reviews',
on_delete=models.CASCADE, on_delete=models.CASCADE,
verbose_name=_('reviewer'),) verbose_name=_('Reviewer'))
content_type = models.ForeignKey(generic.ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id') content_object = generic.GenericForeignKey('content_type', 'object_id')
language = models.ForeignKey('translation.Language', language = models.ForeignKey('translation.Language',
on_delete=models.CASCADE, on_delete=models.CASCADE,
related_name='review', related_name='reviews',
verbose_name=_('Review language')) verbose_name=_('Review language'))
text = models.TextField(verbose_name=_('Text')) text = models.TextField(verbose_name=_('Text'))
status = models.PositiveSmallIntegerField(choices=REVIEW_STATUSES, default=TO_INVESTIGATE)
child = models.ForeignKey('self',
on_delete=models.CASCADE,
verbose_name=_('Child review'))
published_at = models.DateTimeField(verbose_name=_('Publish datetime'),
blank=True, default=None, null=True,
help_text=_('Review published datetime'))
vintage = models.IntegerField(verbose_name=_('Year of review'),
validators=[MinValueValidator(1900),
MaxValueValidator(2100)])
objects = ReviewQuerySet.as_manager() objects = ReviewQuerySet.as_manager()

View File

@ -74,9 +74,6 @@ class OAuthProjectMixin:
return NotImplemented return NotImplemented
basemixin_fields = ['created', 'modified']
class BaseAttributes(ProjectBaseMixin): class BaseAttributes(ProjectBaseMixin):
created_by = models.ForeignKey( created_by = models.ForeignKey(
'account.User', on_delete=models.SET_NULL, verbose_name=_('created by'), 'account.User', on_delete=models.SET_NULL, verbose_name=_('created by'),