Source code for graphene_elastic.advanced_types

import base64
import graphene

__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2019-2022 Artur Barseghyan'
__license__ = 'GPL 2.0/LGPL 2.1'
__all__ = (
    'FileFieldType',
    '_CoordinatesTypeField',
    'PointFieldType',
    'PolygonFieldType',
    'MultiPolygonFieldType',
)


[docs]class FileFieldType(graphene.ObjectType): content_type = graphene.String() md5 = graphene.String() chunk_size = graphene.Int() length = graphene.Int() data = graphene.String() @classmethod def _resolve_fs_field(cls, field, name, default_value=None): v = getattr(field.instance, field.key) return getattr(v, name, default_value)
[docs] def resolve_content_type(self, info): return FileFieldType._resolve_fs_field(self, "content_type")
[docs] def resolve_md5(self, info): return FileFieldType._resolve_fs_field(self, "md5")
[docs] def resolve_chunk_size(self, info): return FileFieldType._resolve_fs_field(self, "chunk_size", 0)
[docs] def resolve_length(self, info): return FileFieldType._resolve_fs_field(self, "length", 0)
[docs] def resolve_data(self, info): v = getattr(self.instance, self.key) data = v.read() if data is not None: return base64.b64encode(data) return None
class _CoordinatesTypeField(graphene.ObjectType): type = graphene.String() def resolve_type(self, info): return self["type"] def resolve_coordinates(self, info): return self["coordinates"]
[docs]class PointFieldType(_CoordinatesTypeField): coordinates = graphene.List(graphene.Float)
[docs]class PolygonFieldType(_CoordinatesTypeField): coordinates = graphene.List(graphene.List(graphene.List(graphene.Float)))
[docs]class MultiPolygonFieldType(_CoordinatesTypeField): coordinates = graphene.List( graphene.List(graphene.List(graphene.List(graphene.Float))) )