class ChargeStation(Document): meta = { "indexes": [ 'network', 'locationId', ] } id = fields.IntField(required=True, primary_key=True) network = fields.ReferenceField(Network) locationId = fields.IntField(required=True) name = fields.StringField(required=True, max_length=200) #0 = Unknown #1 = Free #2 = Fee cost = fields.IntField() cost_description = fields.StringField(max_length=1000) address = fields.StringField(max_length=300) available = fields.IntField(required=True) hours = fields.StringField(max_length=400) geoLocation = fields.PointField(auto_index=True) score = fields.FloatField(min_value=0, max_value=10.0, required=True) images = fields.ListField(fields.URLField()) chargePoints = fields.ListField(fields.ReferenceField(ChargePoint)) created_at = fields.DateTimeField() modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
class GeoModel(Document): geo_point_field = fields.PointField() geo_line_field = fields.LineStringField() geo_polygon_field = fields.PolygonField() geo_multi_point_field = fields.MultiPointField() geo_multi_line_field = fields.MultiLineStringField() geo_multi_poly_field = fields.MultiPolygonField()
class GeoDoc(Document): geo_point_field = fields.GeoPointField() point_field = fields.PointField() line_field = fields.LineStringField() poly_field = fields.PolygonField() multi_point_field = fields.MultiPointField() multi_line_field = fields.MultiLineStringField() multi_poly_field = fields.MultiPolygonField()
class FavoriteShop(Document): user = fields.ReferenceField(User, reverse_delete_rule=mongoengine.CASCADE) shop = fields.ReferenceField(Shop, reverse_delete_rule=mongoengine.CASCADE) created_at = fields.DateTimeField(auto_now = True, default=timezone.now) location = fields.PointField() def __str__(self): return self.shop
class Shop(Document): name = fields.StringField() picture = fields.URLField() email = fields.EmailField() city = fields.StringField() location = fields.PointField() def __str__(self): return self.name
class Shops(Document): meta = {'db_alias': 'shops', 'collection': 'shops'} name = fields.StringField() picture = fields.URLField() email = fields.EmailField() city = fields.StringField() location = fields.PointField() def __str__(self): return self.name
class Advert(Category): parent = fields.ReferenceField('Category', reverse_delete_rule=CASCADE) title = fields.StringField(required=True, max_length=300) loc = fields.PointField(required=True, default=[0.0, 0.0]) country = fields.StringField(max_length=30) region = fields.StringField(max_length=30) city = fields.StringField(max_length=30) street = fields.StringField(max_length=100) rooms = fields.IntField(required=True, default=0) square_gen = fields.IntField(required=True, default=0) square_live = fields.IntField(required=True, default=0) room_height = fields.IntField(required=True, default=0) floors = fields.IntField(required=True, default=0) floor = fields.IntField(required=True, default=0) wall_type = fields.IntField(choices=WALL_TYPES, required=True, default=WALL_TYPES[0][0]) build_type = fields.IntField(choices=BUILD_TYPES, required=True, default=BUILD_TYPES[0][0]) price = fields.DecimalField() finished = fields.DateTimeField() #language field is needed for full text search. language = fields.StringField(default='english') text = fields.StringField(max_length=5000) meta = { 'indexes': [('kind', 'path', 'loc', 'parent'), ('kind', 'path', 'loc', 'parent', 'finished')] } @queryset_manager def nodes(cls, queryset, uid, gids): return search_nodes(queryset, cls.get_kind(), uid, gids).filter( Q(finished__exists=False) | Q(finished__gt=datetime.datetime.now())) @queryset_manager def nearest(cls, queryset, uid, gids, lat, lon, parent=None): try: lon, lat = float(lon), float(lat) except (TypeError, ValueError): lon, lat = 0.0, 0.0 return search_children( queryset, cls.get_kind(), uid, gids, pid=parent, direct=False).filter(loc__near=[lon, lat]).filter( Q(finished__exists=False) | Q(finished__gt=datetime.datetime.now()))
class Place(Document): id = fields.StringField(primary_key=True) name = fields.StringField() rating = fields.DynamicField() loc = fields.PointField() lat = fields.FloatField() lng = fields.FloatField() vicinity = fields.StringField() opening_hours = fields.DynamicField(null=True) types = fields.DynamicField(null=True) photo_reference = fields.StringField() user_rating = fields.StringField() twitter_rating = fields.StringField()
class Request(Document): category_id = fields.StringField(required=True) mobile = fields.StringField(max_length=11) # todo keep a check radius = fields.IntField(required=True) location = fields.PointField(required=True) comment = fields.StringField(max_length=1000) created_at = fields.DateTimeField(required=True) user_id = fields.StringField(max_length=300) isCompleted = fields.BooleanField(default=False) isPaid = fields.BooleanField(default=False) isExpired = fields.BooleanField(default=False) provider_id = fields.StringField(max_length=300) complaints = fields.ListField(fields.StringField()) meta = {"db_alias": "default"}
class Trip(Document): start = fields.EmbeddedDocumentField(DateInput) end = fields.EmbeddedDocumentField(DateInput) country = fields.EmbeddedDocumentField(CountryInput) city = fields.EmbeddedDocumentField(CityInput) passenger = fields.EmbeddedDocumentField(PersonInput, required=True) driver = fields.EmbeddedDocumentField(PersonInput, required=True) car = fields.EmbeddedDocumentField(CarInput, required=True) status = fields.StringField(choices = ['onWay','near','started']) check_code = fields.StringField() createdAt = fields.DateTimeField(required=True) updatedAt = fields.DateTimeField(required=True) price = fields.FloatField() driver_location = fields.PointField() meta = {'collection': 'trips'}
class CovidPersonalUser(Document): user = fields.LongField(required=True) date_birth = fields.DateField(required=True) last_send_geo = fields.DateTimeField() last_update_status = fields.DateTimeField(default=datetime.now) created_at = fields.DateTimeField(default=datetime.now) status = fields.StringField(required=True) observation = fields.StringField() coordinates = fields.PointField() class Meta: verbose_name = 'CovidPersonalUser' verbose_name_plural = 'CovidPersonalUsers' def __str__(self): return User.objects.get(pk=self.user).name
class Foo(Document): string = fields.StringField() required = fields.StringField(required=True) choices = fields.StringField(choices=('foo', 'bar', 'baz')) regex = fields.StringField(regex=r'^[a-z]*$') length = fields.StringField(min_length=1, max_length=3) strings = fields.ListField(fields.StringField()) sorted_strings = fields.SortedListField(fields.StringField()) integer = fields.IntField() bounded_int = fields.IntField(min_value=0, max_value=10) longeger = fields.LongField() bounded_long = fields.LongField(min_value=0, max_value=10) floating = fields.FloatField() bounded_float = fields.FloatField(min_value=0.0, max_value=1.0) boolean = fields.BooleanField() datetime = fields.DateTimeField() complex_datetime = fields.ComplexDateTimeField() binary = fields.BinaryField() bounded_binary = fields.BinaryField(max_bytes=8) mapping = fields.MapField(fields.StringField()) uuid = fields.UUIDField() old_geopoint = fields.GeoPointField() point = fields.PointField() line = fields.LineStringField() polygon = fields.PolygonField() points = fields.MultiPointField() lines = fields.MultiLineStringField() polygons = fields.MultiPolygonField() even_length_string = fields.StringField( validation=lambda s: len(s) % 2 == 0) @fields.EmbeddedDocumentField class embedded_bar(EmbeddedDocument): bar = fields.StringField() @fields.EmbeddedDocumentListField class embedded_baz(EmbeddedDocument): baz = fields.StringField()
class Location(Document): meta = {"indexes": []} id = fields.IntField(required=True, primary_key=True) address = fields.StringField(required=True, max_length=300) name = fields.StringField(required=True, max_length=200) description = fields.StringField(max_length=8192) phone = fields.StringField(max_length=20) poi_name = fields.StringField(max_length=30) parking_type_name = fields.StringField(max_length=20) cost_description = fields.StringField(max_length=1024) open247 = fields.BooleanField() amenities = fields.ListField(fields.StringField()) stations = fields.ListField(fields.ReferenceField(ChargeStation)) hours = fields.StringField(max_length=2048) score = fields.FloatField(min_value=0.0, max_value=10.0) photos = fields.ListField(fields.URLField()) geoLocation = fields.PointField(auto_index=True) created_at = fields.DateTimeField() modified_at = fields.DateTimeField(default=datetime.datetime.utcnow())
class GeoDoc(Document): location = fields.PointField()
class DateInput(EmbeddedDocument): date = fields.DateTimeField(null=True) pickup_address = fields.StringField() pickup_location = fields.PointField()
class Shop(Document): name = fields.StringField() email = fields.StringField() picture = fields.StringField() city = fields.StringField() location = fields.PointField()