menu gallery

This commit is contained in:
alex 2020-01-28 12:16:56 +03:00
parent 781779d54a
commit c0f3aca532
4 changed files with 103 additions and 5 deletions

View File

@ -0,0 +1,40 @@
# Generated by Django 2.2.7 on 2020-01-28 09:04
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('gallery', '0008_merge_20191212_0752'),
('establishment', '0079_auto_20200124_0720'),
]
operations = [
migrations.AlterField(
model_name='menuuploads',
name='file',
field=models.FileField(upload_to='', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=('doc', 'docx', 'pdf'))], verbose_name='File'),
),
migrations.AlterField(
model_name='menuuploads',
name='menu',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='menu_uploads', to='establishment.Menu', verbose_name='menu'),
),
migrations.CreateModel(
name='MenuGallery',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_main', models.BooleanField(default=False, verbose_name='Is the main image')),
('image', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='menu_gallery', to='gallery.Image', verbose_name='image')),
('menu', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='menu_gallery', to='establishment.Menu', verbose_name='menu')),
],
options={
'verbose_name': 'menu gallery',
'verbose_name_plural': 'menu galleries',
'unique_together': {('menu', 'image'), ('menu', 'is_main')},
},
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 2.2.7 on 2020-01-28 09:14
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('establishment', '0080_auto_20200128_0904'),
]
operations = [
migrations.AddField(
model_name='menuuploads',
name='title',
field=models.CharField(default='', max_length=255, verbose_name='title'),
),
]

View File

@ -1238,6 +1238,11 @@ class MenuQuerySet(models.QuerySet):
'plates',
)
def with_gallery(self):
return self.prefetch_related(
'menu_gallery'
)
def dishes(self):
return self.filter(
Q(category__icontains='starter') |
@ -1250,7 +1255,7 @@ class MenuQuerySet(models.QuerySet):
return self.filter(category__icontains=value)
class Menu(TranslatedFieldsMixin, BaseAttributes):
class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
"""Menu model."""
STR_FIELD_NAME = 'category'
@ -1278,13 +1283,42 @@ class Menu(TranslatedFieldsMixin, BaseAttributes):
ordering = ('-created',)
class MenuGallery(IntermediateGalleryModelMixin):
menu = models.ForeignKey(
Menu,
null=True,
related_name='menu_gallery',
on_delete=models.CASCADE,
verbose_name=_('menu'),
)
image = models.ForeignKey(
'gallery.Image',
null=True,
related_name='menu_gallery',
on_delete=models.CASCADE,
verbose_name=_('image'),
)
class Meta:
"""Meta class."""
verbose_name = _('menu gallery')
verbose_name_plural = _('menu galleries')
unique_together = (('menu', 'is_main'), ('menu', 'image'))
class MenuUploads(BaseAttributes):
"""Menu files"""
menu = models.ForeignKey(Menu, verbose_name=_('Menu'), on_delete=models.CASCADE, related_name='uploads')
menu = models.ForeignKey(
Menu,
verbose_name=_('menu'),
on_delete=models.CASCADE,
related_name='menu_uploads',
)
title = models.CharField(_('title'), max_length=255, default='')
file = models.FileField(
_('File'),
validators=[FileExtensionValidator(allowed_extensions=('jpg', 'jpeg', 'png', 'doc', 'docx', 'pdf')), ],
validators=[FileExtensionValidator(allowed_extensions=('doc', 'docx', 'pdf')), ],
)
class Meta:

View File

@ -560,13 +560,19 @@ class _PlateSerializer(ProjectModelSerializer):
]
class _MenuUploadsSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField()
original_url = serializers.URLField()
class MenuDishesSerializer(ProjectModelSerializer):
"""for dessert, main_course and starter category"""
schedule = ScheduleRUDSerializer(many=True, allow_null=True)
plates = _PlateSerializer(read_only=True, many=True, source='plate_set', allow_null=True)
category_translated = serializers.CharField(read_only=True)
last_update = serializers.DateTimeField(source='created')
gallery = ImageBaseSerializer(read_only=True, source='crop_gallery', many=True)
class Meta:
model = models.Menu
@ -579,6 +585,7 @@ class MenuDishesSerializer(ProjectModelSerializer):
'schedule',
'plates',
'last_update',
'gallery',
]
@ -586,7 +593,6 @@ class MenuDishesRUDSerializers(ProjectModelSerializer):
"""for dessert, main_course and starter category"""
plates = _PlateSerializer(read_only=True, many=True, source='plate_set', allow_null=True)
schedule = ScheduleRUDSerializer(read_only=True, many=True, allow_null=True)
class Meta:
model = models.Menu