Metadata-Version: 1.1
Name: django-graphql-geojson
Version: 0.0.3
Summary: GeoJSON support for Django GraphQL
Home-page: https://github.com/flavors/django-graphql-geojson/
Author: mongkok
Author-email: domake.io@gmail.com
License: MIT
Description: Django GraphQL GeoJSON
        ======================
        
        |Pypi| |Wheel| |Build Status| |Codecov| |Code Climate|
        
        `GeoJSON`_ support for `Django GraphQL`_
        
        .. _GeoJSON: http://geojson.org
        .. _Django GraphQL: https://github.com/graphql-python/graphene-django
        
        
        Dependencies
        ------------
        
        * Python ≥ 3.4
        * Django ≥ 1.11
        
        
        Installation
        ------------
        
        Update Graphene Django package.
        
        .. code:: sh
        
            pip install -U git+https://github.com/graphql-python/graphene-django.git@master
        
        Install last stable version from Pypi.
        
        .. code:: sh
        
            pip install django-graphql-geojson
        
        
        GeoJSONType
        -----------
        
        ``models.py``
        
        .. code:: python
        
            from django.contrib.gis.db import models
        
        
            class Place(models.Model):
                name = models.CharField(max_length=255)
                location = models.PointField()
        
        
        
        ``schema.py``
        
        .. code:: python
        
            import graphql_geojson
        
        
            class PlaceType(graphql_geojson.GeoJSONType):
        
                class Meta:
                    model = models.Place
                    geojson_field = 'location'
        
        
        **Query**
        
        .. code::
        
            query {
              places {
                id
                type
                geometry {
                  type
                  coordinates
                }
                bbox
                properties {
                  name
                }
              }
            }
        
        
        Geometry Type
        -------------
        
        ``schema.py``
        
        .. code:: python
        
            import graphene
            import graphql_geojson
        
        
            class CreatePlace(graphene.Mutation):
                place = graphene.Field(types.PlaceType)
        
                class Arguments:
                    name = graphene.String(required=True)
                    location = graphql_geojson.Geometry(required=True)
        
                @classmethod
                def mutate(cls, root, info, **args):
                    place = models.Place.objects.create(**args)
                    return cls(place=place)
        
        
        **Mutation**
        
        .. code::
        
            mutation CreatePlace($name: String!, $location: Geometry!) {
              createPlace(name: $name, location: $location) {
                place {
                  id
                }
              }
            }
        
        
        **Geometry** type may be initialized in a few ways:
        
        - Well-known text (WKT):
        
        .. code:: python
        
            'POINT(5 23)'
        
        - Hexadecimal (HEX):
        
        .. code:: python
        
            '010100000000000000000014400000000000003740'
        
        - GeoJSON:
        
        .. code:: python
        
            {
              "type": "Point",
              "coordinates": [
                5.000000,
                23.000000
              ]
            }
        
        
        GeometryFilterSet
        -----------------
        
        ``filters.py``
        
        .. code:: python
        
            from graphql_geojson.filters import GeometryFilterSet
        
        
            class PlaceFilter(GeometryFilterSet):
        
                class Meta:
                    model = models.Place
                    fields = {
                        'name': ['exact'],
                        'location': ['exact', 'intersects'],
                    }
        
        
        ``schema.py``
        
        .. code:: python
        
            import graphene
            import graphql_geojson
            from graphene import relay
            from graphene_django.filter import DjangoFilterConnectionField
        
        
            class PlaceNode(graphql_geojson.GeoJSONType):
        
                class Meta:
                    model = Place
                    interfaces = [relay.Node]
                    geojson_field = 'location'
        
        
            class Query(graphene.ObjectType):
                places = DjangoFilterConnectionField(
                    PlaceNode,
                    filterset_class=PlaceFilter)
        
        
        **Query**
        
        .. code::
        
              query Places($geometry: Geometry!){
                places(location_Intersects: $geometry) {
                  edges {
                    node {
                      id
                    }
                  }
                }
              }
        
        
        .. |Pypi| image:: https://img.shields.io/pypi/v/django-graphql-geojson.svg
           :target: https://pypi.python.org/pypi/django-graphql-geojson
        
        .. |Wheel| image:: https://img.shields.io/pypi/wheel/django-graphql-geojson.svg
           :target: https://pypi.python.org/pypi/django-graphql-geojson
        
        .. |Build Status| image:: https://travis-ci.org/flavors/django-graphql-geojson.svg?branch=master
           :target: https://travis-ci.org/flavors/django-graphql-geojson
        
        .. |Codecov| image:: https://img.shields.io/codecov/c/github/flavors/django-graphql-geojson.svg
           :target: https://codecov.io/gh/flavors/django-graphql-geojson
        
        .. |Code Climate| image:: https://api.codeclimate.com/v1/badges/67dbb917ad4cf8c422a6/maintainability
           :target: https://codeclimate.com/github/flavors/django-graphql-geojson
        
Platform: UNKNOWN
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
