removed choices from index names for models ProductType, ProductSubType, EstablishmentType, EstablishmentSubType
This commit is contained in:
parent
03fafae15f
commit
2ec40ff8fe
|
|
@ -11,10 +11,8 @@ class EstablishmentFilter(filters.FilterSet):
|
||||||
tag_id = filters.NumberFilter(field_name='tags__metadata__id',)
|
tag_id = filters.NumberFilter(field_name='tags__metadata__id',)
|
||||||
award_id = filters.NumberFilter(field_name='awards__id',)
|
award_id = filters.NumberFilter(field_name='awards__id',)
|
||||||
search = filters.CharFilter(method='search_text')
|
search = filters.CharFilter(method='search_text')
|
||||||
type = filters.ChoiceFilter(choices=models.EstablishmentType.INDEX_NAME_TYPES,
|
type = filters.CharFilter(method='by_type')
|
||||||
method='by_type')
|
subtype = filters.CharFilter(method='by_subtype')
|
||||||
subtype = filters.ChoiceFilter(choices=models.EstablishmentSubType.INDEX_NAME_TYPES,
|
|
||||||
method='by_subtype')
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
|
||||||
23
apps/establishment/migrations/0060_auto_20191113_1512.py
Normal file
23
apps/establishment/migrations/0060_auto_20191113_1512.py
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 2.2.7 on 2019-11-13 15:12
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('establishment', '0059_establishmentnote'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='establishmentsubtype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(db_index=True, max_length=50, unique=True, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='establishmenttype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(db_index=True, max_length=50, unique=True, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -31,21 +31,14 @@ class EstablishmentType(TranslatedFieldsMixin, ProjectBaseMixin):
|
||||||
|
|
||||||
STR_FIELD_NAME = 'name'
|
STR_FIELD_NAME = 'name'
|
||||||
|
|
||||||
# INDEX NAME CHOICES
|
# EXAMPLE OF INDEX NAME CHOICES
|
||||||
RESTAURANT = 'restaurant'
|
RESTAURANT = 'restaurant'
|
||||||
ARTISAN = 'artisan'
|
ARTISAN = 'artisan'
|
||||||
PRODUCER = 'producer'
|
PRODUCER = 'producer'
|
||||||
|
|
||||||
INDEX_NAME_TYPES = (
|
|
||||||
(RESTAURANT, _('Restaurant')),
|
|
||||||
(ARTISAN, _('Artisan')),
|
|
||||||
(PRODUCER, _('Producer')),
|
|
||||||
)
|
|
||||||
|
|
||||||
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
|
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
|
||||||
help_text='{"en-GB":"some text"}')
|
help_text='{"en-GB":"some text"}')
|
||||||
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
|
index_name = models.CharField(max_length=50, unique=True, db_index=True,
|
||||||
unique=True, db_index=True,
|
|
||||||
verbose_name=_('Index name'))
|
verbose_name=_('Index name'))
|
||||||
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
|
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
|
||||||
tag_categories = models.ManyToManyField('tag.TagCategory',
|
tag_categories = models.ManyToManyField('tag.TagCategory',
|
||||||
|
|
@ -72,17 +65,12 @@ class EstablishmentSubTypeManager(models.Manager):
|
||||||
class EstablishmentSubType(ProjectBaseMixin, TranslatedFieldsMixin):
|
class EstablishmentSubType(ProjectBaseMixin, TranslatedFieldsMixin):
|
||||||
"""Establishment type model."""
|
"""Establishment type model."""
|
||||||
|
|
||||||
# INDEX NAME CHOICES
|
# EXAMPLE OF INDEX NAME CHOICES
|
||||||
WINERY = 'winery'
|
WINERY = 'winery'
|
||||||
|
|
||||||
INDEX_NAME_TYPES = (
|
|
||||||
(WINERY, _('Winery')),
|
|
||||||
)
|
|
||||||
|
|
||||||
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
|
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
|
||||||
help_text='{"en-GB":"some text"}')
|
help_text='{"en-GB":"some text"}')
|
||||||
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
|
index_name = models.CharField(max_length=50, unique=True, db_index=True,
|
||||||
unique=True, db_index=True,
|
|
||||||
verbose_name=_('Index name'))
|
verbose_name=_('Index name'))
|
||||||
establishment_type = models.ForeignKey(EstablishmentType,
|
establishment_type = models.ForeignKey(EstablishmentType,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
|
|
@ -290,28 +278,28 @@ class EstablishmentQuerySet(models.QuerySet):
|
||||||
|
|
||||||
def artisans(self):
|
def artisans(self):
|
||||||
"""Return artisans."""
|
"""Return artisans."""
|
||||||
return self.filter(establishment_type__index_name=EstablishmentType.ARTISAN)
|
return self.filter(establishment_type__index_name__icontains=EstablishmentType.ARTISAN)
|
||||||
|
|
||||||
def producers(self):
|
def producers(self):
|
||||||
"""Return producers."""
|
"""Return producers."""
|
||||||
return self.filter(establishment_type__index_name=EstablishmentType.PRODUCER)
|
return self.filter(establishment_type__index_name__icontains=EstablishmentType.PRODUCER)
|
||||||
|
|
||||||
def restaurants(self):
|
def restaurants(self):
|
||||||
"""Return restaurants."""
|
"""Return restaurants."""
|
||||||
return self.filter(establishment_type__index_name=EstablishmentType.RESTAURANT)
|
return self.filter(establishment_type__index_name__icontains=EstablishmentType.RESTAURANT)
|
||||||
|
|
||||||
def wineries(self):
|
def wineries(self):
|
||||||
"""Return wineries."""
|
"""Return wineries."""
|
||||||
return self.producers().filter(
|
return self.producers().filter(
|
||||||
establishment_subtypes__index_name=EstablishmentSubType.WINERY)
|
establishment_subtypes__index_name__icontains=EstablishmentSubType.WINERY)
|
||||||
|
|
||||||
def by_type(self, value):
|
def by_type(self, value):
|
||||||
"""Return QuerySet with type by value."""
|
"""Return QuerySet with type by value."""
|
||||||
return self.filter(establishment_type__index_name=value)
|
return self.filter(establishment_type__index_name__icontains=value)
|
||||||
|
|
||||||
def by_subtype(self, value):
|
def by_subtype(self, value):
|
||||||
"""Return QuerySet with subtype by value."""
|
"""Return QuerySet with subtype by value."""
|
||||||
return self.filter(establishment_subtypes__index_name=value)
|
return self.filter(establishment_subtypes__index_name__icontains=value)
|
||||||
|
|
||||||
def by_public_mark_range(self, min_value, max_value):
|
def by_public_mark_range(self, min_value, max_value):
|
||||||
"""Filter by public mark range."""
|
"""Filter by public mark range."""
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,8 @@ class ProductFilterSet(filters.FilterSet):
|
||||||
"""Product filter set."""
|
"""Product filter set."""
|
||||||
|
|
||||||
establishment_id = filters.NumberFilter()
|
establishment_id = filters.NumberFilter()
|
||||||
product_type = filters.ChoiceFilter(method='by_product_type',
|
product_type = filters.CharFilter(method='by_product_type')
|
||||||
choices=models.ProductType.INDEX_NAME_TYPES)
|
product_subtype = filters.CharFilter(method='by_product_subtype')
|
||||||
product_subtype = filters.ChoiceFilter(method='by_product_subtype',
|
|
||||||
choices=models.ProductSubType.INDEX_NAME_TYPES)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
|
||||||
29
apps/product/migrations/0013_auto_20191113_1512.py
Normal file
29
apps/product/migrations/0013_auto_20191113_1512.py
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Generated by Django 2.2.7 on 2019-11-13 15:12
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('product', '0012_auto_20191112_1007'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='product',
|
||||||
|
name='wine_village',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='location.WineVillage', verbose_name='wine village'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='productsubtype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(db_index=True, max_length=50, unique=True, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='producttype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(db_index=True, max_length=50, unique=True, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -15,25 +15,16 @@ class ProductType(TranslatedFieldsMixin, ProjectBaseMixin):
|
||||||
|
|
||||||
STR_FIELD_NAME = 'name'
|
STR_FIELD_NAME = 'name'
|
||||||
|
|
||||||
# INDEX NAME CHOICES
|
# EXAMPLE OF INDEX NAME CHOICES
|
||||||
FOOD = 'food'
|
FOOD = 'food'
|
||||||
WINE = 'wine'
|
WINE = 'wine'
|
||||||
LIQUOR = 'liquor'
|
LIQUOR = 'liquor'
|
||||||
SOUVENIR = 'souvenir'
|
SOUVENIR = 'souvenir'
|
||||||
BOOK = 'book'
|
BOOK = 'book'
|
||||||
|
|
||||||
INDEX_NAME_TYPES = (
|
|
||||||
(FOOD, _('Food')),
|
|
||||||
(WINE, _('Wine')),
|
|
||||||
(LIQUOR, _('Liquor')),
|
|
||||||
(SOUVENIR, _('Souvenir')),
|
|
||||||
(BOOK, _('Book')),
|
|
||||||
)
|
|
||||||
|
|
||||||
name = TJSONField(blank=True, null=True, default=None,
|
name = TJSONField(blank=True, null=True, default=None,
|
||||||
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
|
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
|
||||||
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
|
index_name = models.CharField(max_length=50, unique=True, db_index=True,
|
||||||
unique=True, db_index=True,
|
|
||||||
verbose_name=_('Index name'))
|
verbose_name=_('Index name'))
|
||||||
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
|
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
|
||||||
tag_categories = models.ManyToManyField('tag.TagCategory',
|
tag_categories = models.ManyToManyField('tag.TagCategory',
|
||||||
|
|
@ -52,24 +43,17 @@ class ProductSubType(TranslatedFieldsMixin, ProjectBaseMixin):
|
||||||
|
|
||||||
STR_FIELD_NAME = 'name'
|
STR_FIELD_NAME = 'name'
|
||||||
|
|
||||||
# INDEX NAME CHOICES
|
# EXAMPLE OF INDEX NAME CHOICES
|
||||||
RUM = 'rum'
|
RUM = 'rum'
|
||||||
PLATE = 'plate'
|
PLATE = 'plate'
|
||||||
OTHER = 'other'
|
OTHER = 'other'
|
||||||
|
|
||||||
INDEX_NAME_TYPES = (
|
|
||||||
(RUM, _('Rum')),
|
|
||||||
(PLATE, _('Plate')),
|
|
||||||
(OTHER, _('Other')),
|
|
||||||
)
|
|
||||||
|
|
||||||
product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE,
|
product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE,
|
||||||
related_name='subtypes',
|
related_name='subtypes',
|
||||||
verbose_name=_('Product type'))
|
verbose_name=_('Product type'))
|
||||||
name = TJSONField(blank=True, null=True, default=None,
|
name = TJSONField(blank=True, null=True, default=None,
|
||||||
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
|
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
|
||||||
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
|
index_name = models.CharField(max_length=50, unique=True, db_index=True,
|
||||||
unique=True, db_index=True,
|
|
||||||
verbose_name=_('Index name'))
|
verbose_name=_('Index name'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -101,15 +85,15 @@ class ProductQuerySet(models.QuerySet):
|
||||||
return self.filter(category=self.model.ONLINE)
|
return self.filter(category=self.model.ONLINE)
|
||||||
|
|
||||||
def wines(self):
|
def wines(self):
|
||||||
return self.filter(type__index_name=ProductType.WINE)
|
return self.filter(type__index_name__icontains=ProductType.WINE)
|
||||||
|
|
||||||
def by_product_type(self, product_type: str):
|
def by_product_type(self, product_type: str):
|
||||||
"""Filter by type."""
|
"""Filter by type."""
|
||||||
return self.filter(product_type__index_name=product_type)
|
return self.filter(product_type__index_name__icontains=product_type)
|
||||||
|
|
||||||
def by_product_subtype(self, product_subtype: str):
|
def by_product_subtype(self, product_subtype: str):
|
||||||
"""Filter by subtype."""
|
"""Filter by subtype."""
|
||||||
return self.filter(subtypes__index_name=product_subtype)
|
return self.filter(subtypes__index_name__icontains=product_subtype)
|
||||||
|
|
||||||
def by_country_code(self, country_code):
|
def by_country_code(self, country_code):
|
||||||
"""Filter by country of produce."""
|
"""Filter by country of produce."""
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,7 @@ class TagsBaseFilterSet(filters.FilterSet):
|
||||||
class TagCategoryFilterSet(TagsBaseFilterSet):
|
class TagCategoryFilterSet(TagsBaseFilterSet):
|
||||||
"""TagCategory filterset."""
|
"""TagCategory filterset."""
|
||||||
|
|
||||||
establishment_type = filters.ChoiceFilter(
|
establishment_type = filters.CharFilter(method='by_establishment_type')
|
||||||
choices=EstablishmentType.INDEX_NAME_TYPES,
|
|
||||||
method='by_establishment_type')
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user