removed choices from index names for models ProductType, ProductSubType, EstablishmentType, EstablishmentSubType

This commit is contained in:
Anatoly 2019-11-13 18:22:26 +03:00
parent 03fafae15f
commit 2ec40ff8fe
7 changed files with 74 additions and 56 deletions

View File

@ -11,10 +11,8 @@ class EstablishmentFilter(filters.FilterSet):
tag_id = filters.NumberFilter(field_name='tags__metadata__id',)
award_id = filters.NumberFilter(field_name='awards__id',)
search = filters.CharFilter(method='search_text')
type = filters.ChoiceFilter(choices=models.EstablishmentType.INDEX_NAME_TYPES,
method='by_type')
subtype = filters.ChoiceFilter(choices=models.EstablishmentSubType.INDEX_NAME_TYPES,
method='by_subtype')
type = filters.CharFilter(method='by_type')
subtype = filters.CharFilter(method='by_subtype')
class Meta:
"""Meta class."""

View 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'),
),
]

View File

@ -31,21 +31,14 @@ class EstablishmentType(TranslatedFieldsMixin, ProjectBaseMixin):
STR_FIELD_NAME = 'name'
# INDEX NAME CHOICES
# EXAMPLE OF INDEX NAME CHOICES
RESTAURANT = 'restaurant'
ARTISAN = 'artisan'
PRODUCER = 'producer'
INDEX_NAME_TYPES = (
(RESTAURANT, _('Restaurant')),
(ARTISAN, _('Artisan')),
(PRODUCER, _('Producer')),
)
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
help_text='{"en-GB":"some text"}')
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
unique=True, db_index=True,
index_name = models.CharField(max_length=50, unique=True, db_index=True,
verbose_name=_('Index name'))
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
tag_categories = models.ManyToManyField('tag.TagCategory',
@ -72,17 +65,12 @@ class EstablishmentSubTypeManager(models.Manager):
class EstablishmentSubType(ProjectBaseMixin, TranslatedFieldsMixin):
"""Establishment type model."""
# INDEX NAME CHOICES
# EXAMPLE OF INDEX NAME CHOICES
WINERY = 'winery'
INDEX_NAME_TYPES = (
(WINERY, _('Winery')),
)
name = TJSONField(blank=True, null=True, default=None, verbose_name=_('Description'),
help_text='{"en-GB":"some text"}')
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
unique=True, db_index=True,
index_name = models.CharField(max_length=50, unique=True, db_index=True,
verbose_name=_('Index name'))
establishment_type = models.ForeignKey(EstablishmentType,
on_delete=models.CASCADE,
@ -290,28 +278,28 @@ class EstablishmentQuerySet(models.QuerySet):
def artisans(self):
"""Return artisans."""
return self.filter(establishment_type__index_name=EstablishmentType.ARTISAN)
return self.filter(establishment_type__index_name__icontains=EstablishmentType.ARTISAN)
def producers(self):
"""Return producers."""
return self.filter(establishment_type__index_name=EstablishmentType.PRODUCER)
return self.filter(establishment_type__index_name__icontains=EstablishmentType.PRODUCER)
def restaurants(self):
"""Return restaurants."""
return self.filter(establishment_type__index_name=EstablishmentType.RESTAURANT)
return self.filter(establishment_type__index_name__icontains=EstablishmentType.RESTAURANT)
def wineries(self):
"""Return wineries."""
return self.producers().filter(
establishment_subtypes__index_name=EstablishmentSubType.WINERY)
establishment_subtypes__index_name__icontains=EstablishmentSubType.WINERY)
def by_type(self, 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):
"""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):
"""Filter by public mark range."""

View File

@ -9,10 +9,8 @@ class ProductFilterSet(filters.FilterSet):
"""Product filter set."""
establishment_id = filters.NumberFilter()
product_type = filters.ChoiceFilter(method='by_product_type',
choices=models.ProductType.INDEX_NAME_TYPES)
product_subtype = filters.ChoiceFilter(method='by_product_subtype',
choices=models.ProductSubType.INDEX_NAME_TYPES)
product_type = filters.CharFilter(method='by_product_type')
product_subtype = filters.CharFilter(method='by_product_subtype')
class Meta:
"""Meta class."""

View 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'),
),
]

View File

@ -15,25 +15,16 @@ class ProductType(TranslatedFieldsMixin, ProjectBaseMixin):
STR_FIELD_NAME = 'name'
# INDEX NAME CHOICES
# EXAMPLE OF INDEX NAME CHOICES
FOOD = 'food'
WINE = 'wine'
LIQUOR = 'liquor'
SOUVENIR = 'souvenir'
BOOK = 'book'
INDEX_NAME_TYPES = (
(FOOD, _('Food')),
(WINE, _('Wine')),
(LIQUOR, _('Liquor')),
(SOUVENIR, _('Souvenir')),
(BOOK, _('Book')),
)
name = TJSONField(blank=True, null=True, default=None,
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
unique=True, db_index=True,
index_name = models.CharField(max_length=50, unique=True, db_index=True,
verbose_name=_('Index name'))
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
tag_categories = models.ManyToManyField('tag.TagCategory',
@ -52,24 +43,17 @@ class ProductSubType(TranslatedFieldsMixin, ProjectBaseMixin):
STR_FIELD_NAME = 'name'
# INDEX NAME CHOICES
# EXAMPLE OF INDEX NAME CHOICES
RUM = 'rum'
PLATE = 'plate'
OTHER = 'other'
INDEX_NAME_TYPES = (
(RUM, _('Rum')),
(PLATE, _('Plate')),
(OTHER, _('Other')),
)
product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE,
related_name='subtypes',
verbose_name=_('Product type'))
name = TJSONField(blank=True, null=True, default=None,
verbose_name=_('Name'), help_text='{"en-GB":"some text"}')
index_name = models.CharField(max_length=50, choices=INDEX_NAME_TYPES,
unique=True, db_index=True,
index_name = models.CharField(max_length=50, unique=True, db_index=True,
verbose_name=_('Index name'))
class Meta:
@ -101,15 +85,15 @@ class ProductQuerySet(models.QuerySet):
return self.filter(category=self.model.ONLINE)
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):
"""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):
"""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):
"""Filter by country of produce."""

View File

@ -30,9 +30,7 @@ class TagsBaseFilterSet(filters.FilterSet):
class TagCategoryFilterSet(TagsBaseFilterSet):
"""TagCategory filterset."""
establishment_type = filters.ChoiceFilter(
choices=EstablishmentType.INDEX_NAME_TYPES,
method='by_establishment_type')
establishment_type = filters.CharFilter(method='by_establishment_type')
class Meta:
"""Meta class."""