added new model Review

This commit is contained in:
Anatoly 2019-09-01 13:24:37 +03:00
parent ba317f77b8
commit c1738478ab
5 changed files with 73 additions and 10 deletions

View File

@ -1,8 +1,10 @@
"""Establishment admin conf.""" """Establishment admin conf."""
from django.contrib import admin from django.contrib import admin
from establishment import models
from django.contrib.contenttypes.admin import GenericTabularInline from django.contrib.contenttypes.admin import GenericTabularInline
from establishment import models
from main.models import Award, MetaDataContent from main.models import Award, MetaDataContent
from review import models as review_models
@admin.register(models.EstablishmentType) @admin.register(models.EstablishmentType)
@ -25,10 +27,15 @@ class MetaDataContentInline(GenericTabularInline):
extra = 0 extra = 0
class ReviewInline(GenericTabularInline):
model = review_models.Review
extra = 0
@admin.register(models.Establishment) @admin.register(models.Establishment)
class EstablishmentAdmin(admin.ModelAdmin): class EstablishmentAdmin(admin.ModelAdmin):
"""Establishment admin.""" """Establishment admin."""
inlines = [AwardInline, MetaDataContentInline] inlines = [AwardInline, MetaDataContentInline, ReviewInline]
@admin.register(models.EstablishmentSchedule) @admin.register(models.EstablishmentSchedule)

View File

@ -1,11 +1,12 @@
"""Establishment models.""" """Establishment models."""
from django.contrib.contenttypes import fields as generic
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
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 location.models import Address from location.models import Address
from utils.models import (ProjectBaseMixin, ImageMixin, TJSONField, from utils.models import (ProjectBaseMixin, ImageMixin, TJSONField,
TraslatedFieldsMixin, BaseAttributes) TraslatedFieldsMixin, BaseAttributes)
from django.contrib.contenttypes import fields as generic
# todo: establishment type&subtypes check # todo: establishment type&subtypes check
@ -88,6 +89,7 @@ class Establishment(ProjectBaseMixin, ImageMixin, TraslatedFieldsMixin):
verbose_name=_('Price level')) verbose_name=_('Price level'))
awards = generic.GenericRelation(to='main.Award') awards = generic.GenericRelation(to='main.Award')
tags = generic.GenericRelation(to='main.MetaDataContent') tags = generic.GenericRelation(to='main.MetaDataContent')
reviews = generic.GenericRelation(to='review.Review')
class Meta: class Meta:
"""Meta class.""" """Meta class."""

View File

@ -1,8 +1,10 @@
"""Establishment serializers.""" """Establishment serializers."""
from rest_framework import serializers from rest_framework import serializers
from establishment import models from establishment import models
from location.serializers import AddressSerializer from location.serializers import AddressSerializer
from main.serializers import MetaDataContentSerializer, AwardSerializer from main.serializers import MetaDataContentSerializer, AwardSerializer
from review import models as review_models
from timetable.models import Timetable from timetable.models import Timetable
@ -46,6 +48,16 @@ class EstablishmentScheduleSerializer(serializers.ModelSerializer):
) )
class ReviewSerializer(serializers.ModelSerializer):
"""Serializer for model Review."""
class Meta:
"""Meta class."""
model = review_models.Review
fields = (
'text',
)
class EstablishmentSerializer(serializers.ModelSerializer): class EstablishmentSerializer(serializers.ModelSerializer):
"""Serializer for Establishment model.""" """Serializer for Establishment model."""
@ -59,6 +71,8 @@ class EstablishmentSerializer(serializers.ModelSerializer):
schedule = EstablishmentScheduleSerializer(source='schedule.schedule', schedule = EstablishmentScheduleSerializer(source='schedule.schedule',
many=True, many=True,
allow_null=True) allow_null=True)
reviews = ReviewSerializer(source='reviews.last',
allow_null=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -79,4 +93,5 @@ class EstablishmentSerializer(serializers.ModelSerializer):
'tags', 'tags',
'awards', 'awards',
'schedule', 'schedule',
'reviews',
) )

View File

@ -1,7 +1,3 @@
from django.contrib import admin # @admin.register(models.Review)
from review import models # class ReviewAdminModel(admin.ModelAdmin):
# """Admin model for model Review."""
@admin.register(models.Review)
class ReviewAdminModel(admin.ModelAdmin):
"""Admin model for model Review."""

View File

@ -0,0 +1,43 @@
# Generated by Django 2.2.4 on 2019-09-01 09:32
import django.core.validators
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
('translation', '0002_siteinterfacedictionary'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Review',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Date created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('object_id', models.PositiveIntegerField()),
('text', models.TextField(verbose_name='Text')),
('status', models.PositiveSmallIntegerField(choices=[(0, 'To investigate'), (1, 'To review'), (2, 'Ready')], default=0)),
('published_at', models.DateTimeField(blank=True, default=None, help_text='Review published datetime', null=True, verbose_name='Publish datetime')),
('vintage', models.IntegerField(validators=[django.core.validators.MinValueValidator(1900), django.core.validators.MaxValueValidator(2100)], verbose_name='Year of review')),
('child', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='review.Review', verbose_name='Child review')),
('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='review_records_created', to=settings.AUTH_USER_MODEL, verbose_name='created by')),
('language', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to='translation.Language', verbose_name='Review language')),
('modified_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='review_records_modified', to=settings.AUTH_USER_MODEL, verbose_name='modified by')),
('reviewer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to=settings.AUTH_USER_MODEL, verbose_name='Reviewer')),
],
options={
'verbose_name': 'Review',
'verbose_name_plural': 'Reviews',
},
),
]