This commit is contained in:
Dmitriy Kuzmenko 2019-09-01 16:18:17 +03:00
parent 998204b7c5
commit c85347b53a
7 changed files with 181 additions and 47 deletions

View File

@ -4,6 +4,7 @@ from django.contrib.contenttypes.admin import GenericTabularInline
from establishment import models from establishment import models
from main.models import Award, MetaDataContent from main.models import Award, MetaDataContent
from review import models as review_models from review import models as review_models
from django.utils.translation import gettext_lazy as _
@admin.register(models.EstablishmentType) @admin.register(models.EstablishmentType)
@ -65,3 +66,24 @@ class EstablishmentComment(admin.ModelAdmin):
@admin.register(models.Position) @admin.register(models.Position)
class PositionAdmin(admin.ModelAdmin): class PositionAdmin(admin.ModelAdmin):
"""Position admin.""" """Position admin."""
class PlateInline(admin.TabularInline):
"""Plate inline admin"""
model = models.Plate
extra = 0
@admin.register(models.Menu)
class MenuAdmin(admin.ModelAdmin):
"""Menu admin."""
list_display = ['id', 'category_translated']
inlines = [
PlateInline,
]
def category_translated(self, obj):
"""Get user's short name."""
return obj.category_translated
category_translated.short_description = _('category')

View File

@ -0,0 +1,53 @@
# Generated by Django 2.2.4 on 2019-09-01 12:11
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import utils.models
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('main', '0013_auto_20190901_1032'),
('establishment', '0010_auto_20190901_1142'),
]
operations = [
migrations.CreateModel(
name='Menu',
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')),
('category', utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='name')),
('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='menu_records_created', to=settings.AUTH_USER_MODEL, verbose_name='created by')),
('establishment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='establishment.Establishment', verbose_name='establishment')),
('modified_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='menu_records_modified', to=settings.AUTH_USER_MODEL, verbose_name='modified by')),
],
options={
'verbose_name': 'menu',
'verbose_name_plural': 'menu',
},
bases=(utils.models.TraslatedFieldsMixin, models.Model),
),
migrations.CreateModel(
name='Plate',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='name')),
('description', utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='description')),
('price', models.DecimalField(decimal_places=2, max_digits=14, verbose_name='price')),
('is_signature_plate', models.BooleanField(verbose_name='is signature plate')),
('currency', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='main.Currency', verbose_name='currency')),
('menu', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='establishment.Menu', verbose_name='menu')),
],
options={
'verbose_name': 'plate',
'verbose_name_plural': 'plates',
},
bases=(utils.models.TraslatedFieldsMixin, models.Model),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.4 on 2019-09-01 12:51
from django.db import migrations
import utils.models
class Migration(migrations.Migration):
dependencies = [
('establishment', '0011_menu_plate'),
]
operations = [
migrations.AlterField(
model_name='menu',
name='category',
field=utils.models.TJSONField(blank=True, default=None, help_text='{"en-GB":"some text"}', null=True, verbose_name='category'),
),
]

View File

@ -277,52 +277,47 @@ class ContactEmail(models.Model):
# price_glass_max = models.DecimalField( # price_glass_max = models.DecimalField(
# _('price max'), max_digits=14, decimal_places=2) # _('price max'), max_digits=14, decimal_places=2)
# #
#
# class Plate(TraslatedFieldsMixin, models.Model):
# """Plate model.""" class Plate(TraslatedFieldsMixin, models.Model):
# """Plate model."""
# STARTER = 0
# MAIN = 1 name = TJSONField(
# COURSE = 2 blank=True, null=True, default=None, verbose_name=_('name'),
# DESSERT = 3 help_text='{"en-GB":"some text"}')
# description = TJSONField(
# PLATE_TYPE_CHOICES = ( blank=True, null=True, default=None, verbose_name=_('description'),
# (STARTER, _('starter')), help_text='{"en-GB":"some text"}')
# (MAIN, _('main')), price = models.DecimalField(
# (COURSE, _('course')), _('price'), max_digits=14, decimal_places=2)
# (DESSERT, _('dessert')), is_signature_plate = models.BooleanField(_('is signature plate'))
# ) currency = models.ForeignKey(
# name = models.CharField(_('name'), max_length=255) 'main.Currency', verbose_name=_('currency'), on_delete=models.CASCADE)
# plate_type = models.PositiveSmallIntegerField(_('plate_type'), choices=PLATE_TYPE_CHOICES)
# description = TJSONField( menu = models.ForeignKey(
# blank=True, null=True, default=None, verbose_name=_('description'), 'establishment.Menu', verbose_name=_('menu'), on_delete=models.CASCADE)
# help_text='{"en-GB":"some text"}')
# price = models.DecimalField( class Meta:
# _('price'), max_digits=14, decimal_places=2) verbose_name = _('plate')
# is_signature_plate = models.BooleanField(_('is signature plate')) verbose_name_plural = _('plates')
# currency = models.ForeignKey(
# 'main.Currency', verbose_name=_('currency'), on_delete=models.CASCADE) def __str__(self):
# return f'plate_id:{self.id}'
# menu = models.ManyToManyField(to='Plate', verbose_name=_(''), through='establishment.Menu')
#
# class Meta: class Menu(TraslatedFieldsMixin, BaseAttributes):
# verbose_name = _('plate') """Menu model."""
# verbose_name_plural = _('plates') category = TJSONField(
# blank=True, null=True, default=None, verbose_name=_('category'),
# def __str__(self): help_text='{"en-GB":"some text"}')
# return f'plate_id:{self.id}' establishment = models.ForeignKey(
# 'establishment.Establishment', verbose_name=_('establishment'),
# on_delete=models.CASCADE)
# class Menu(TraslatedFieldsMixin, BaseAttributes):
# """Menu model.""" class Meta:
# establishment = models.ForeignKey( verbose_name = _('menu')
# 'establishment.Establishment', verbose_name=_('establishment'), verbose_name_plural = _('menu')
# on_delete=models.CASCADE)
# plate = models.ForeignKey(Plate, verbose_name=_('menu'), on_delete=models.CASCADE)
#
# class Meta:
# verbose_name = _('menu')
# verbose_name_plural = _('menu')
class CommentQuerySet(models.QuerySet): class CommentQuerySet(models.QuerySet):
"""QuerySets for Comment model.""" """QuerySets for Comment model."""

View File

@ -3,7 +3,7 @@ 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, CurrencySerializer
from review import models as review_models from review import models as review_models
from timetable.models import Timetable from timetable.models import Timetable
@ -26,6 +26,32 @@ class ContactEmailsSerializer(serializers.ModelSerializer):
] ]
class PlateSerializer(serializers.ModelSerializer):
currency = CurrencySerializer(read_only=True)
class Meta:
model = models.Plate
fields = [
'name_translated',
'currency',
'price',
'is_signature_plate',
]
class MenuSerializers(serializers.ModelSerializer):
plates = PlateSerializer(read_only=True, many=True, source='plate_set')
category_translated = serializers.CharField(read_only=True)
class Meta:
model = models.Menu
fields = [
'id',
'category_translated',
'plates'
]
class EstablishmentTypeSerializer(serializers.ModelSerializer): class EstablishmentTypeSerializer(serializers.ModelSerializer):
"""Serializer for EstablishmentType model.""" """Serializer for EstablishmentType model."""
@ -129,6 +155,7 @@ class EstablishmentSerializer(serializers.ModelSerializer):
comments = CommentSerializer(many=True, allow_null=True) comments = CommentSerializer(many=True, allow_null=True)
employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees', employees = EstablishmentEmployeeSerializer(source='actual_establishment_employees',
many=True) many=True)
menu = MenuSerializers(source='menu_set', many=True, read_only=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -154,4 +181,5 @@ class EstablishmentSerializer(serializers.ModelSerializer):
'reviews', 'reviews',
'comments', 'comments',
'employees', 'employees',
'menu',
) )

View File

@ -39,3 +39,10 @@ class MetaDataCategoryAdmin(admin.ModelAdmin):
@admin.register(models.MetaDataContent) @admin.register(models.MetaDataContent)
class MetaDataContentAdmin(admin.ModelAdmin): class MetaDataContentAdmin(admin.ModelAdmin):
"""MetaDataContent admin""" """MetaDataContent admin"""
@admin.register(models.Currency)
class CurrencContentAdmin(admin.ModelAdmin):
"""CurrencContent admin"""

View File

@ -97,3 +97,13 @@ class MetaDataContentSerializer(serializers.ModelSerializer):
'id', 'id',
'label_translated', 'label_translated',
] ]
class CurrencySerializer(serializers.ModelSerializer):
"""Currency serializer"""
class Meta:
model = models.Currency
fields = [
'id',
'name'
]