Establishment types
This commit is contained in:
parent
19b3502f58
commit
9661de4810
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Generated by Django 2.2.4 on 2019-10-16 11:33
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def fill_establishment_type(apps, schemaeditor):
|
||||||
|
import ipdb; ipdb.set_trace()
|
||||||
|
EstablishmentType = apps.get_model('establishment', 'EstablishmentType')
|
||||||
|
for n, et in enumerate(EstablishmentType.objects.all()):
|
||||||
|
et.index_name = f'Type {n}'
|
||||||
|
et.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('establishment', '0037_auto_20191015_1404'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='establishmenttype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(blank=True, db_index=True, max_length=50, null=True, unique=True, default=None, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
migrations.RunPython(fill_establishment_type, migrations.RunPython.noop),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='establishmenttype',
|
||||||
|
name='index_name',
|
||||||
|
field=models.CharField(choices=[('restaurant', 'Restaurant'), ('artisan', 'Artisan'),
|
||||||
|
('producer', 'Producer')], db_index=True, max_length=50,
|
||||||
|
unique=True, verbose_name='Index name'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -27,8 +27,22 @@ class EstablishmentType(TranslatedFieldsMixin, ProjectBaseMixin):
|
||||||
|
|
||||||
STR_FIELD_NAME = 'name'
|
STR_FIELD_NAME = 'name'
|
||||||
|
|
||||||
|
# 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'),
|
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,
|
||||||
|
unique=True, db_index=True,
|
||||||
|
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',
|
||||||
related_name='establishment_types',
|
related_name='establishment_types',
|
||||||
|
|
|
||||||
|
|
@ -40,12 +40,8 @@ def update_document(sender, **kwargs):
|
||||||
for establishment in establishments:
|
for establishment in establishments:
|
||||||
registry.update(establishment)
|
registry.update(establishment)
|
||||||
|
|
||||||
if app_label == 'main':
|
if app_label == 'tag':
|
||||||
if model_name == 'metadata':
|
if model_name == 'tag':
|
||||||
establishments = Establishment.objects.filter(tags__metadata=instance)
|
|
||||||
for establishment in establishments:
|
|
||||||
registry.update(establishment)
|
|
||||||
if model_name == 'metadatacontent':
|
|
||||||
establishments = Establishment.objects.filter(tags=instance)
|
establishments = Establishment.objects.filter(tags=instance)
|
||||||
for establishment in establishments:
|
for establishment in establishments:
|
||||||
registry.update(establishment)
|
registry.update(establishment)
|
||||||
|
|
@ -70,12 +66,8 @@ def update_news(sender, **kwargs):
|
||||||
for news in qs:
|
for news in qs:
|
||||||
registry.update(news)
|
registry.update(news)
|
||||||
|
|
||||||
if app_label == 'main':
|
if app_label == 'tag':
|
||||||
if model_name == 'metadata':
|
if model_name == 'tag':
|
||||||
qs = News.objects.filter(tags__metadata=instance)
|
|
||||||
for news in qs:
|
|
||||||
registry.update(news)
|
|
||||||
if model_name == 'metadatacontent':
|
|
||||||
qs = News.objects.filter(tags=instance)
|
qs = News.objects.filter(tags=instance)
|
||||||
for news in qs:
|
for news in qs:
|
||||||
registry.update(news)
|
registry.update(news)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
"""Tag app filters."""
|
"""Tag app filters."""
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
|
from establishment.models import EstablishmentType
|
||||||
from tag import models
|
from tag import models
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -18,16 +19,9 @@ class TagCategoryFilterSet(filters.FilterSet):
|
||||||
type = filters.MultipleChoiceFilter(choices=TYPE_CHOICES,
|
type = filters.MultipleChoiceFilter(choices=TYPE_CHOICES,
|
||||||
method='filter_by_type')
|
method='filter_by_type')
|
||||||
|
|
||||||
# Establishment type choices
|
establishment_type = filters.ChoiceFilter(
|
||||||
RESTAURANT = 'restaurant'
|
choices=EstablishmentType.INDEX_NAME_TYPES,
|
||||||
|
method='by_establishment_type')
|
||||||
ESTABLISHMENT_TYPE_CHOICES = (
|
|
||||||
(RESTAURANT, 'restaurant'),
|
|
||||||
)
|
|
||||||
|
|
||||||
establishment_type = filters.MultipleChoiceFilter(
|
|
||||||
choices=ESTABLISHMENT_TYPE_CHOICES,
|
|
||||||
method='filter_by_establishment_type')
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
@ -44,5 +38,5 @@ class TagCategoryFilterSet(filters.FilterSet):
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
# todo: filter by establishment type
|
# todo: filter by establishment type
|
||||||
def filter_by_establishment_type(self, queryset, name, value):
|
def by_establishment_type(self, queryset, name, value):
|
||||||
return queryset.for_establishments()
|
return queryset.by_establishment_type(value)
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,10 @@ class TagCategoryQuerySet(models.QuerySet):
|
||||||
return self.filter(models.Q(establishment_types__isnull=False) |
|
return self.filter(models.Q(establishment_types__isnull=False) |
|
||||||
models.Q(establishment_subtypes__isnull=False))
|
models.Q(establishment_subtypes__isnull=False))
|
||||||
|
|
||||||
|
def by_establishment_type(self, index_name):
|
||||||
|
"""Filter by establishment type index name."""
|
||||||
|
return self.filter(establishment_types__index_name=index_name)
|
||||||
|
|
||||||
def with_tags(self, switcher=True):
|
def with_tags(self, switcher=True):
|
||||||
"""Filter by existing tags."""
|
"""Filter by existing tags."""
|
||||||
return self.filter(tags__isnull=not switcher)
|
return self.filter(tags__isnull=not switcher)
|
||||||
|
|
|
||||||
|
|
@ -20,5 +20,6 @@ class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
|
||||||
filterset_class = filters.TagCategoryFilterSet
|
filterset_class = filters.TagCategoryFilterSet
|
||||||
pagination_class = None
|
pagination_class = None
|
||||||
permission_classes = (permissions.AllowAny, )
|
permission_classes = (permissions.AllowAny, )
|
||||||
queryset = models.TagCategory.objects.with_tags().with_base_related()
|
queryset = models.TagCategory.objects.with_tags().with_base_related().\
|
||||||
|
distinct()
|
||||||
serializer_class = serializers.TagCategoryBaseSerializer
|
serializer_class = serializers.TagCategoryBaseSerializer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user