From 8fccd069ece6ba4bcceb4690d4bd2593c1411199 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Fri, 30 Aug 2019 15:30:41 +0300 Subject: [PATCH] added additional fields to review model --- apps/review/models.py | 32 +++++++++++++++++++++++++++++--- apps/utils/models.py | 3 --- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/apps/review/models.py b/apps/review/models.py index d7f7082e..fe33bfed 100644 --- a/apps/review/models.py +++ b/apps/review/models.py @@ -1,6 +1,7 @@ from django.contrib.contenttypes import fields as generic from django.db import models from django.utils.translation import gettext_lazy as _ +from django.core.validators import MinValueValidator, MaxValueValidator from utils.models import BaseAttributes @@ -12,19 +13,44 @@ class ReviewQuerySet(models.QuerySet): """Return reviews by user""" return self.filter(reviewer=user) + def by_vintage(self, year: int): + """Return reviews by year""" + return self.filter(vintage=year) + class Review(BaseAttributes): """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', - related_name='review', + related_name='reviews', 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') language = models.ForeignKey('translation.Language', on_delete=models.CASCADE, - related_name='review', + related_name='reviews', verbose_name=_('Review language')) 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() diff --git a/apps/utils/models.py b/apps/utils/models.py index 0e7fdd7f..d9c4564c 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -74,9 +74,6 @@ class OAuthProjectMixin: return NotImplemented -basemixin_fields = ['created', 'modified'] - - class BaseAttributes(ProjectBaseMixin): created_by = models.ForeignKey( 'account.User', on_delete=models.SET_NULL, verbose_name=_('created by'),