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'
|
||||
|
||||
# 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,
|
||||
verbose_name=_('Index name'))
|
||||
use_subtypes = models.BooleanField(_('Use subtypes'), default=True)
|
||||
tag_categories = models.ManyToManyField('tag.TagCategory',
|
||||
related_name='establishment_types',
|
||||
|
|
|
|||
|
|
@ -40,12 +40,8 @@ def update_document(sender, **kwargs):
|
|||
for establishment in establishments:
|
||||
registry.update(establishment)
|
||||
|
||||
if app_label == 'main':
|
||||
if model_name == 'metadata':
|
||||
establishments = Establishment.objects.filter(tags__metadata=instance)
|
||||
for establishment in establishments:
|
||||
registry.update(establishment)
|
||||
if model_name == 'metadatacontent':
|
||||
if app_label == 'tag':
|
||||
if model_name == 'tag':
|
||||
establishments = Establishment.objects.filter(tags=instance)
|
||||
for establishment in establishments:
|
||||
registry.update(establishment)
|
||||
|
|
@ -70,12 +66,8 @@ def update_news(sender, **kwargs):
|
|||
for news in qs:
|
||||
registry.update(news)
|
||||
|
||||
if app_label == 'main':
|
||||
if model_name == 'metadata':
|
||||
qs = News.objects.filter(tags__metadata=instance)
|
||||
for news in qs:
|
||||
registry.update(news)
|
||||
if model_name == 'metadatacontent':
|
||||
if app_label == 'tag':
|
||||
if model_name == 'tag':
|
||||
qs = News.objects.filter(tags=instance)
|
||||
for news in qs:
|
||||
registry.update(news)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
"""Tag app filters."""
|
||||
from django_filters import rest_framework as filters
|
||||
from establishment.models import EstablishmentType
|
||||
from tag import models
|
||||
|
||||
|
||||
|
|
@ -18,16 +19,9 @@ class TagCategoryFilterSet(filters.FilterSet):
|
|||
type = filters.MultipleChoiceFilter(choices=TYPE_CHOICES,
|
||||
method='filter_by_type')
|
||||
|
||||
# Establishment type choices
|
||||
RESTAURANT = 'restaurant'
|
||||
|
||||
ESTABLISHMENT_TYPE_CHOICES = (
|
||||
(RESTAURANT, 'restaurant'),
|
||||
)
|
||||
|
||||
establishment_type = filters.MultipleChoiceFilter(
|
||||
choices=ESTABLISHMENT_TYPE_CHOICES,
|
||||
method='filter_by_establishment_type')
|
||||
establishment_type = filters.ChoiceFilter(
|
||||
choices=EstablishmentType.INDEX_NAME_TYPES,
|
||||
method='by_establishment_type')
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
|
|
@ -44,5 +38,5 @@ class TagCategoryFilterSet(filters.FilterSet):
|
|||
return queryset
|
||||
|
||||
# todo: filter by establishment type
|
||||
def filter_by_establishment_type(self, queryset, name, value):
|
||||
return queryset.for_establishments()
|
||||
def by_establishment_type(self, queryset, name, value):
|
||||
return queryset.by_establishment_type(value)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@ class TagCategoryQuerySet(models.QuerySet):
|
|||
return self.filter(models.Q(establishment_types__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):
|
||||
"""Filter by existing tags."""
|
||||
return self.filter(tags__isnull=not switcher)
|
||||
|
|
|
|||
|
|
@ -20,5 +20,6 @@ class TagCategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
|
|||
filterset_class = filters.TagCategoryFilterSet
|
||||
pagination_class = None
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user