98 lines
3.6 KiB
Python
98 lines
3.6 KiB
Python
"""Establishment app documents."""
|
|
from django.conf import settings
|
|
from django_elasticsearch_dsl import Document, Index, fields
|
|
from search_indexes.utils import OBJECT_FIELD_PROPERTIES
|
|
from establishment import models
|
|
|
|
|
|
EstablishmentIndex = Index(settings.ELASTICSEARCH_INDEX_NAMES.get(__name__,
|
|
'establishment'))
|
|
EstablishmentIndex.settings(number_of_shards=1, number_of_replicas=1)
|
|
|
|
|
|
@EstablishmentIndex.doc_type
|
|
class EstablishmentDocument(Document):
|
|
"""Establishment document."""
|
|
|
|
preview_image = fields.KeywordField(attr='preview_image_url')
|
|
description = fields.ObjectField(attr='description_indexing',
|
|
properties=OBJECT_FIELD_PROPERTIES)
|
|
establishment_type = fields.ObjectField(
|
|
properties={
|
|
'id': fields.IntegerField(),
|
|
'name': fields.ObjectField(attr='name_indexing',
|
|
properties=OBJECT_FIELD_PROPERTIES)
|
|
})
|
|
establishment_subtypes = fields.ObjectField(
|
|
properties={
|
|
'id': fields.IntegerField(),
|
|
'name': fields.ObjectField(attr='name_indexing',
|
|
properties=OBJECT_FIELD_PROPERTIES)
|
|
},
|
|
multi=True)
|
|
# todo: need to fix
|
|
# tags = fields.ObjectField(
|
|
# properties={
|
|
# 'id': fields.IntegerField(attr='metadata.id'),
|
|
# 'label': fields.ObjectField(attr='metadata.label_indexing',
|
|
# properties=OBJECT_FIELD_PROPERTIES),
|
|
# 'category': fields.ObjectField(attr='metadata.category',
|
|
# properties={
|
|
# 'id': fields.IntegerField(),
|
|
# })
|
|
# },
|
|
# multi=True)
|
|
address = fields.ObjectField(
|
|
properties={
|
|
'id': fields.IntegerField(),
|
|
'street_name_1': fields.TextField(
|
|
fields={'raw': fields.KeywordField()}
|
|
),
|
|
'street_name_2': fields.TextField(
|
|
fields={'raw': fields.KeywordField()}
|
|
),
|
|
'number': fields.IntegerField(),
|
|
'postal_code': fields.KeywordField(),
|
|
'coordinates': fields.GeoPointField(attr='location_field_indexing'),
|
|
# todo: remove if not used
|
|
'city': fields.ObjectField(
|
|
properties={
|
|
'id': fields.IntegerField(),
|
|
'name': fields.KeywordField(),
|
|
'is_island': fields.BooleanField(),
|
|
'country': fields.ObjectField(
|
|
properties={
|
|
'id': fields.IntegerField(),
|
|
'name': fields.ObjectField(attr='name_indexing',
|
|
properties=OBJECT_FIELD_PROPERTIES),
|
|
'code': fields.KeywordField(),
|
|
}
|
|
),
|
|
}
|
|
),
|
|
}
|
|
)
|
|
# todo: need to fix
|
|
# collections = fields.ObjectField(
|
|
# properties={
|
|
# 'id': fields.IntegerField(attr='collection.id'),
|
|
# 'collection_type': fields.IntegerField(attr='collection.collection_type'),
|
|
# },
|
|
# multi=True)
|
|
|
|
class Django:
|
|
|
|
model = models.Establishment
|
|
fields = (
|
|
'id',
|
|
'name',
|
|
'name_translated',
|
|
'price_level',
|
|
'toque_number',
|
|
'public_mark',
|
|
'slug',
|
|
)
|
|
|
|
def get_queryset(self):
|
|
return super().get_queryset().published()
|