refactored menu models

This commit is contained in:
Kuroshini 2020-01-31 17:00:57 +03:00
parent 6d9983ad3f
commit cfba383940

View File

@ -1284,6 +1284,10 @@ class MenuQuerySet(models.QuerySet):
def with_base_related(self):
return self.prefetch_related('establishment', 'uploads')
def by_type(self, menu_type: str):
"""Returns certain typed menus"""
return self.filter(type=menu_type)
def with_schedule_plates_establishment(self):
return self.select_related(
'establishment',
@ -1314,6 +1318,21 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
STR_FIELD_NAME = 'category'
FORMULAS = 'formulas'
STARTER = 'starter'
DESSERT = 'dessert'
MAIN_COURSE = 'main_course'
MENU_CHOICES = (
(FORMULAS, _('formulas')),
(STARTER, _('starter')),
(DESSERT, _('dessert')),
(MAIN_COURSE, _('main_course')),
)
type = models.CharField(max_length=50, db_index=True, default=FORMULAS,
verbose_name=_('Menu type'), choices=MENU_CHOICES)
category = TJSONField(
blank=True, null=True, default=None, verbose_name=_('category'),
help_text='{"en-GB":"some text"}')
@ -1351,6 +1370,25 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
ordering = ('-created',)
class EstablishmentBackOfficeWine(models.Model):
"""Wine for BO Card&Wines"""
establishment = models.OneToOneField(to='Establishment', on_delete=models.SET_NULL, related_name='back_office_wine',
verbose_name=_('establishment'), null=True)
bottles = models.IntegerField(default=0, validators=[MinValueValidator(0)])
price_from = models.DecimalField(_('price from'), max_digits=14, decimal_places=2)
price_to = models.DecimalField(_('price to'), max_digits=14, decimal_places=2)
price_from_for_one = models.DecimalField(_('price for one item from'), max_digits=14, decimal_places=2,
null=True, default=None)
price_to_for_one = models.DecimalField(_('price for one item to'), max_digits=14, decimal_places=2,
null=True, default=None)
is_glass = models.BooleanField(verbose_name=_('served in glass'), default=False)
class Meta:
verbose_name = _('establishment back office wine')
verbose_name_plural = _('establishment back office wines')
class MenuFiles(FileMixin, BaseAttributes):
"""Menu files"""
@ -1385,26 +1423,6 @@ class MenuGallery(IntermediateGalleryModelMixin):
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='menu_uploads',
)
title = models.CharField(_('title'), max_length=255, default='')
file = models.FileField(
_('File'),
validators=[FileExtensionValidator(allowed_extensions=('doc', 'docx', 'pdf')), ],
)
class Meta:
verbose_name = _('menu upload')
verbose_name_plural = _('menu uploads')
class SocialChoice(models.Model):
title = models.CharField(_('title'), max_length=255, unique=True)