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',)
|
||||
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."""
|
||||
|
|
|
|||
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'
|
||||
|
||||
# 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."""
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
|
|
|||
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'
|
||||
|
||||
# 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."""
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user