refactor models

This commit is contained in:
Anatoly 2019-10-31 17:53:37 +03:00
parent 6fe8252025
commit dd38e6e5de
3 changed files with 94 additions and 22 deletions

View File

@ -138,14 +138,13 @@ class WineRegionQuerySet(models.QuerySet):
"""Wine region queryset.""" """Wine region queryset."""
class WineRegion(TranslatedFieldsMixin, models.Model): class WineRegion(models.Model):
"""Wine region model.""" """Wine region model."""
STR_FIELD_NAME = 'name' name = models.CharField(_('name'), max_length=255)
name = TJSONField(verbose_name=_('Name'),
help_text='{"en-GB":"some text"}')
country = models.ForeignKey(Country, on_delete=models.PROTECT, country = models.ForeignKey(Country, on_delete=models.PROTECT,
verbose_name=_('country')) verbose_name=_('country'))
coordinates = models.PointField(
_('Coordinates'), blank=True, null=True, default=None)
objects = WineRegionQuerySet.as_manager() objects = WineRegionQuerySet.as_manager()
@ -155,26 +154,47 @@ class WineRegion(TranslatedFieldsMixin, models.Model):
verbose_name = _('wine region') verbose_name = _('wine region')
class WineAppellationQuerySet(models.QuerySet): class WineSubRegionQuerySet(models.QuerySet):
"""Wine appellation queryset.""" """Wine sub region QuerySet."""
class WineAppellation(TranslatedFieldsMixin, models.Model): class WineSubRegion(models.Model):
"""Wine appellation model.""" """Wine sub region model."""
STR_FIELD_NAME = 'name' name = models.CharField(_('name'), max_length=255)
country = models.ForeignKey(Country, on_delete=models.PROTECT,
verbose_name=_('country'))
name = TJSONField(verbose_name=_('Name'), objects = WineSubRegionQuerySet.as_manager()
help_text='{"en-GB":"some text"}')
wine_region = models.ForeignKey(WineRegion, on_delete=models.PROTECT,
related_name='appellations',
verbose_name=_('wine region'))
objects = WineAppellationQuerySet.as_manager()
class Meta: class Meta:
"""Meta class.""" """Meta class."""
verbose_name_plural = _('wine appellations') verbose_name_plural = _('wine regions')
verbose_name = _('wine appellation') verbose_name = _('wine region')
class WineVillageQuerySet(models.QuerySet):
"""Wine village QuerySet."""
class WineVillage(models.Model):
"""
Wine village.
Description: Imported from legacy DB.
"""
name = models.CharField(_('name'), max_length=255)
description = TJSONField(verbose_name=_('description'),
help_text='{"en-GB":"some text"}')
wine_region = models.ForeignKey(WineRegion, on_delete=models.PROTECT,
verbose_name=_('wine region'))
wine_sub_region = models.ForeignKey(WineSubRegion, on_delete=models.PROTECT,
verbose_name=_('wine sub region'))
objects = WineVillageQuerySet.as_manager()
class Meta:
"""Meta class."""
verbose_name = _('wine village')
verbose_name_plural = _('wine villages')
# todo: Make recalculate price levels # todo: Make recalculate price levels

View File

@ -1,5 +1,6 @@
"""Product app models.""" """Product app models."""
from django.db import models from django.db import models
from django.contrib.gis.db import models as gis_models
from django.contrib.contenttypes import fields as generic from django.contrib.contenttypes import fields as generic
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField
@ -157,9 +158,9 @@ class Product(TranslatedFieldsMixin, BaseAttributes):
related_name='wines', related_name='wines',
blank=True, null=True, blank=True, null=True,
verbose_name=_('wine region')) verbose_name=_('wine region'))
wine_appellation = models.ForeignKey('location.WineAppellation', on_delete=models.PROTECT, wine_standard = models.ForeignKey('product.WineStandard', on_delete=models.PROTECT,
blank=True, null=True, blank=True, null=True,
verbose_name=_('wine appellation')) verbose_name=_('wine appellation'))
slug = models.SlugField(unique=True, max_length=255, null=True, slug = models.SlugField(unique=True, max_length=255, null=True,
verbose_name=_('Establishment slug')) verbose_name=_('Establishment slug'))
favorites = generic.GenericRelation(to='favorites.Favorites') favorites = generic.GenericRelation(to='favorites.Favorites')
@ -202,3 +203,54 @@ class OnlineProduct(Product):
proxy = True proxy = True
verbose_name = _('Online product') verbose_name = _('Online product')
verbose_name_plural = _('Online products') verbose_name_plural = _('Online products')
class WineStandardQuerySet(models.QuerySet):
"""Wine appellation queryset."""
class WineStandard(models.Model):
"""Wine standard model."""
APPELLATION = 'Appellation'
CLASSIFICATION = 'Classification'
WINEQUALITY = 'WineQuality'
YARDCLASSIFICATION = 'YardClassification'
STANDARDS = (
(APPELLATION, _('Appellation')),
(CLASSIFICATION, _('Classification')),
(WINEQUALITY, _('Wine quality')),
(YARDCLASSIFICATION, _('Yard classification')),
)
name = models.CharField(_('name'), max_length=255)
standard_type = models.CharField(max_length=30, choices=STANDARDS,
verbose_name=_('standard type'))
coordinates = gis_models.PointField(
_('Coordinates'), blank=True, null=True, default=None)
objects = WineStandardQuerySet.as_manager()
class Meta:
"""Meta class."""
verbose_name_plural = _('wine standards')
verbose_name = _('wine standard')
class WineClassificationQuerySet(models.QuerySet):
"""Wine classification QuerySet."""
class WineClassification(models.Model):
"""Wine classification model."""
name = models.CharField(_('name'), max_length=255)
standard = models.ForeignKey(WineStandard, on_delete=models.PROTECT,
verbose_name=_('standard'))
objects = WineClassificationQuerySet.as_manager()
class Meta:
"""Meta class."""
verbose_name = _('wine classification')
verbose_name_plural = _('wine classifications')

View File