added new model - Comment

This commit is contained in:
Anatoly 2019-09-01 12:30:00 +03:00
parent ba317f77b8
commit 0d4f080850
5 changed files with 98 additions and 4 deletions

View File

@ -18,7 +18,7 @@ class UserAdmin(BaseUserAdmin):
fieldsets = ( fieldsets = (
(None, {'fields': ('email', 'password',)}), (None, {'fields': ('email', 'password',)}),
(_('Personal info'), { (_('Personal info'), {
'fields': ('username', 'first_name', 'last_name', )}), 'fields': ('username', 'first_name', 'last_name', 'image')}),
(_('Subscription'), { (_('Subscription'), {
'fields': ( 'fields': (
'newsletter', 'newsletter',
@ -27,7 +27,7 @@ class UserAdmin(BaseUserAdmin):
(_('Important dates'), {'fields': ('last_login', 'date_joined')}), (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
(_('Permissions'), { (_('Permissions'), {
'fields': ( 'fields': (
'is_active', 'is_staff', 'is_superuser', 'email_confirmed' 'is_active', 'is_staff', 'is_superuser', 'email_confirmed',
'groups', 'user_permissions'), 'groups', 'user_permissions'),
'classes': ('collapse', ) 'classes': ('collapse', )
}), }),

View File

@ -1,7 +1,8 @@
"""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
@ -34,3 +35,8 @@ class EstablishmentAdmin(admin.ModelAdmin):
@admin.register(models.EstablishmentSchedule) @admin.register(models.EstablishmentSchedule)
class EstablishmentSchedule(admin.ModelAdmin): class EstablishmentSchedule(admin.ModelAdmin):
"""Establishment schedule""" """Establishment schedule"""
@admin.register(models.Comment)
class EstablishmentComment(admin.ModelAdmin):
"""Establishment comments."""

View File

@ -0,0 +1,32 @@
# Generated by Django 2.2.4 on 2019-09-01 09:16
import django.utils.timezone
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('establishment', '0005_establishmentschedule'),
]
operations = [
migrations.CreateModel(
name='Comment',
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')),
('text', models.TextField(verbose_name='Comment text')),
('mark', models.PositiveIntegerField(blank=True, default=None, null=True, verbose_name='Mark')),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to=settings.AUTH_USER_MODEL, verbose_name='Author')),
('establishment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='establishment.Establishment', verbose_name='Establishment')),
],
options={
'verbose_name': 'Comment',
'verbose_name_plural': 'Comments',
},
),
]

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
@ -146,3 +147,38 @@ class EstablishmentSchedule(BaseAttributes):
"""Meta class""" """Meta class"""
verbose_name = _('Establishment schedule') verbose_name = _('Establishment schedule')
verbose_name_plural = _('Establishment schedules') verbose_name_plural = _('Establishment schedules')
class CommentQuerySet(models.QuerySet):
"""QuerySets for Comment model."""
def by_author(self, author):
"""Return comments by author"""
return self.filter(author=author)
class Comment(ProjectBaseMixin):
"""Comment model."""
text = models.TextField(verbose_name=_('Comment text'))
mark = models.PositiveIntegerField(blank=True, null=True,
default=None,
verbose_name=_('Mark'))
author = models.ForeignKey('account.User',
related_name='comments',
on_delete=models.CASCADE,
verbose_name=_('Author'))
establishment = models.ForeignKey(Establishment,
related_name='comments',
on_delete=models.CASCADE,
verbose_name=_('Establishment'))
objects = CommentQuerySet.as_manager()
class Meta:
"""Meta class"""
verbose_name = _('Comment')
verbose_name_plural = _('Comments')
def __str__(self):
"""String representation"""
return str(self.author)

View File

@ -1,5 +1,6 @@
"""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
@ -46,6 +47,22 @@ class EstablishmentScheduleSerializer(serializers.ModelSerializer):
) )
class CommentSerializer(serializers.ModelSerializer):
"""Comment serializer"""
nickname = serializers.CharField(source='author.username')
image = serializers.ImageField(source='author.image')
class Meta:
"""Serializer for model Comment"""
model = models.Comment
fields = (
'text',
'mark',
'nickname',
'image'
)
class EstablishmentSerializer(serializers.ModelSerializer): class EstablishmentSerializer(serializers.ModelSerializer):
"""Serializer for Establishment model.""" """Serializer for Establishment model."""
@ -59,6 +76,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)
comments = CommentSerializer(many=True,
allow_null=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -79,4 +98,5 @@ class EstablishmentSerializer(serializers.ModelSerializer):
'tags', 'tags',
'awards', 'awards',
'schedule', 'schedule',
'comments',
) )