menu gallery
This commit is contained in:
parent
781779d54a
commit
c0f3aca532
40
apps/establishment/migrations/0080_auto_20200128_0904.py
Normal file
40
apps/establishment/migrations/0080_auto_20200128_0904.py
Normal 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')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
18
apps/establishment/migrations/0081_menuuploads_title.py
Normal file
18
apps/establishment/migrations/0081_menuuploads_title.py
Normal 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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1238,6 +1238,11 @@ class MenuQuerySet(models.QuerySet):
|
||||||
'plates',
|
'plates',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def with_gallery(self):
|
||||||
|
return self.prefetch_related(
|
||||||
|
'menu_gallery'
|
||||||
|
)
|
||||||
|
|
||||||
def dishes(self):
|
def dishes(self):
|
||||||
return self.filter(
|
return self.filter(
|
||||||
Q(category__icontains='starter') |
|
Q(category__icontains='starter') |
|
||||||
|
|
@ -1250,7 +1255,7 @@ class MenuQuerySet(models.QuerySet):
|
||||||
return self.filter(category__icontains=value)
|
return self.filter(category__icontains=value)
|
||||||
|
|
||||||
|
|
||||||
class Menu(TranslatedFieldsMixin, BaseAttributes):
|
class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
|
||||||
"""Menu model."""
|
"""Menu model."""
|
||||||
|
|
||||||
STR_FIELD_NAME = 'category'
|
STR_FIELD_NAME = 'category'
|
||||||
|
|
@ -1278,13 +1283,42 @@ class Menu(TranslatedFieldsMixin, BaseAttributes):
|
||||||
ordering = ('-created',)
|
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):
|
class MenuUploads(BaseAttributes):
|
||||||
"""Menu files"""
|
"""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 = models.FileField(
|
||||||
_('File'),
|
_('File'),
|
||||||
validators=[FileExtensionValidator(allowed_extensions=('jpg', 'jpeg', 'png', 'doc', 'docx', 'pdf')), ],
|
validators=[FileExtensionValidator(allowed_extensions=('doc', 'docx', 'pdf')), ],
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -560,13 +560,19 @@ class _PlateSerializer(ProjectModelSerializer):
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class _MenuUploadsSerializer(serializers.Serializer):
|
||||||
|
id = serializers.IntegerField()
|
||||||
|
title = serializers.CharField()
|
||||||
|
original_url = serializers.URLField()
|
||||||
|
|
||||||
|
|
||||||
class MenuDishesSerializer(ProjectModelSerializer):
|
class MenuDishesSerializer(ProjectModelSerializer):
|
||||||
"""for dessert, main_course and starter category"""
|
"""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)
|
plates = _PlateSerializer(read_only=True, many=True, source='plate_set', allow_null=True)
|
||||||
category_translated = serializers.CharField(read_only=True)
|
category_translated = serializers.CharField(read_only=True)
|
||||||
last_update = serializers.DateTimeField(source='created')
|
last_update = serializers.DateTimeField(source='created')
|
||||||
|
gallery = ImageBaseSerializer(read_only=True, source='crop_gallery', many=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Menu
|
model = models.Menu
|
||||||
|
|
@ -579,6 +585,7 @@ class MenuDishesSerializer(ProjectModelSerializer):
|
||||||
'schedule',
|
'schedule',
|
||||||
'plates',
|
'plates',
|
||||||
'last_update',
|
'last_update',
|
||||||
|
'gallery',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -586,7 +593,6 @@ class MenuDishesRUDSerializers(ProjectModelSerializer):
|
||||||
"""for dessert, main_course and starter category"""
|
"""for dessert, main_course and starter category"""
|
||||||
|
|
||||||
plates = _PlateSerializer(read_only=True, many=True, source='plate_set', allow_null=True)
|
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:
|
class Meta:
|
||||||
model = models.Menu
|
model = models.Menu
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user