Repository URL to install this package:
|
Version:
0.0.44 ▾
|
# -*- coding: utf-8 -*-
# Python
# Third
from bson.objectid import ObjectId
from mongoengine import (
Document,
EmbeddedDocument,
EmbeddedDocumentListField,
EmbeddedDocumentField,
ListField,
FloatField,
StringField,
BooleanField,
IntField,
ObjectIdField,
)
# Apps
from oyaji.core.models import Description
from oyaji.cities.models import City
from oyaji.places.consts import PROVIDERS_VIDEOS, PROVIDER_YOUTUBE
class ArticlesRelated(EmbeddedDocument):
key = StringField(required=True)
spotlight = BooleanField(default=False)
title = StringField(required=True)
url = StringField(required=False)
class VideosRelated(EmbeddedDocument):
key = StringField(required=True)
spotlight = BooleanField(default=False)
title = StringField(required=True)
provider = StringField(
required=False, choices=PROVIDERS_VIDEOS, default=PROVIDER_YOUTUBE
)
url = StringField(required=False)
video_id = StringField(required=False)
class Location(EmbeddedDocument):
latitude = StringField(required=True)
longitude = StringField(required=True)
class NameMixin:
name = StringField(required=True)
slug = StringField(required=True, unique=True)
name_en = StringField()
slug_en = StringField()
name_es = StringField()
slug_es = StringField()
class RelatedPlaceLocation(EmbeddedDocument):
key = StringField(required=True)
name = StringField(required=True)
slug = StringField(required=True)
name_en = StringField()
slug_en = StringField()
name_es = StringField()
slug_es = StringField()
latitude = StringField(required=True)
longitude = StringField(required=True)
class PlaceAbstract(NameMixin):
meta = {"abstract": True, "collection": "places"}
description = EmbeddedDocumentField(Description, required=True, default=Description)
description_en = EmbeddedDocumentField(
Description, required=False, default=Description
)
description_es = EmbeddedDocumentField(
Description, required=False, default=Description
)
types = ListField(StringField, default=[])
rating = FloatField(deafault=0)
likes = IntField(default=0)
views = IntField(default=0)
city = EmbeddedDocumentField(City, required=True, default=City)
location = EmbeddedDocumentField(Location, required=False)
articles_related = EmbeddedDocumentListField(ArticlesRelated, default=[])
videos_related = EmbeddedDocumentListField(VideosRelated, default=[])
places_related = EmbeddedDocumentListField(RelatedPlaceLocation, default=[])
created_elastic_search_index = BooleanField(default=False)
class Place(Document, PlaceAbstract):
pass