-
Notifications
You must be signed in to change notification settings - Fork 766
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Isolated Graphene Django in a new package
- Loading branch information
0 parents
commit 0434899
Showing
82 changed files
with
3,891 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# Created by https://www.gitignore.io | ||
|
||
### Python ### | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
|
||
# C extensions | ||
*.so | ||
|
||
# Distribution / packaging | ||
.Python | ||
env/ | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*,cover | ||
|
||
# Translations | ||
*.mo | ||
*.pot | ||
|
||
# Django stuff: | ||
*.log | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ | ||
|
||
|
||
/tests/django.sqlite | ||
|
||
/graphene/index.json | ||
/graphene/meta.json | ||
|
||
/meta.json | ||
/index.json | ||
|
||
/docs/playground/graphene-js/pypyjs-release-nojit/ | ||
/docs/static/playground/lib | ||
|
||
/docs/static/playground | ||
|
||
# PyCharm | ||
.idea | ||
|
||
# Databases | ||
*.sqlite3 | ||
.vscode |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
language: python | ||
sudo: false | ||
python: | ||
- 2.7 | ||
- 3.4 | ||
- 3.5 | ||
- pypy | ||
before_install: | ||
- | | ||
if [ "$TRAVIS_PYTHON_VERSION" = "pypy" ]; then | ||
export PYENV_ROOT="$HOME/.pyenv" | ||
if [ -f "$PYENV_ROOT/bin/pyenv" ]; then | ||
cd "$PYENV_ROOT" && git pull | ||
else | ||
rm -rf "$PYENV_ROOT" && git clone --depth 1 https://github.com/yyuu/pyenv.git "$PYENV_ROOT" | ||
fi | ||
export PYPY_VERSION="4.0.1" | ||
"$PYENV_ROOT/bin/pyenv" install "pypy-$PYPY_VERSION" | ||
virtualenv --python="$PYENV_ROOT/versions/pypy-$PYPY_VERSION/bin/python" "$HOME/virtualenvs/pypy-$PYPY_VERSION" | ||
source "$HOME/virtualenvs/pypy-$PYPY_VERSION/bin/activate" | ||
fi | ||
install: | ||
- | | ||
if [ "$TEST_TYPE" = build ]; then | ||
pip install pytest pytest-cov pytest-benchmark coveralls six pytest-django mock django-filter | ||
pip install -e . | ||
python setup.py develop | ||
elif [ "$TEST_TYPE" = lint ]; then | ||
pip install flake8 | ||
fi | ||
script: | ||
- | | ||
if [ "$TEST_TYPE" = lint ]; then | ||
echo "Checking Python code lint." | ||
flake8 graphene_django | ||
exit | ||
elif [ "$TEST_TYPE" = build ]; then | ||
py.test --cov=graphene_django graphene_django examples | ||
fi | ||
after_success: | ||
- | | ||
if [ "$TEST_TYPE" = build ]; then | ||
coveralls | ||
fi | ||
matrix: | ||
fast_finish: true | ||
include: | ||
- python: '2.7' | ||
env: TEST_TYPE=lint |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
You are in the `next` unreleased version of Graphene-Django (`1.0.dev`). | ||
Please read [UPGRADE-v1.0.md](https://github.com/graphql-python/graphene/blob/master/UPGRADE-v1.0.md) to learn how to upgrade. | ||
|
||
--- | ||
|
||
#  [Graphene-Django](http://graphene-python.org) [](https://travis-ci.org/graphql-python/graphene-django) [](https://badge.fury.io/py/graphene-django) [](https://coveralls.io/github/graphql-python/graphene-django?branch=master) | ||
|
||
|
||
[Graphene](http://graphene-python.org) is a Python library for building GraphQL schemas/types fast and easily. | ||
|
||
- **Easy to use:** Graphene helps you use GraphQL in Python without effort. | ||
- **Relay:** Graphene has builtin support for Relay | ||
- **Django:** Automatic *Django model* mapping to Graphene Types. Check a fully working [Django](http://github.com/graphql-python/swapi-graphene) implementation | ||
|
||
Graphene also supports *SQLAlchemy*! | ||
|
||
*What is supported in this Python version?* **Everything**: Interfaces, ObjectTypes, Scalars, Unions and Relay (Nodes, Connections), in addition to queries, mutations and subscriptions. | ||
|
||
**NEW**!: [Try graphene online](http://graphene-python.org/playground/) | ||
|
||
## Installation | ||
|
||
For instaling graphene, just run this command in your shell | ||
|
||
```bash | ||
pip install "graphene-django>=1.0.dev" | ||
``` | ||
|
||
## Examples | ||
|
||
Here is one example for get you started: | ||
|
||
```python | ||
from django.db import models | ||
from graphene_django import DjangoObjectType | ||
|
||
class UserModel(models.Model): | ||
name = models.CharField(max_length=100) | ||
last_name = models.CharField(max_length=100) | ||
|
||
class User(DjangoObjectType): | ||
class Meta: | ||
# This type will transform all the UserModel fields | ||
# into Graphene fields automatically | ||
model = UserModel | ||
|
||
# An extra field in the User Type | ||
full_name = graphene.String() | ||
|
||
def resolve_full_name(self, args, context, info): | ||
return "{} {}".format(self.name, self.last_name) | ||
``` | ||
|
||
If you want to learn even more, you can also check the following [examples](examples/): | ||
|
||
* **Schema with Filtering**: [Cookbook example](examples/cookbook) | ||
* **Relay Schema**: [Starwars Relay example](examples/starwars) | ||
|
||
|
||
## Contributing | ||
|
||
After cloning this repo, ensure dependencies are installed by running: | ||
|
||
```sh | ||
python setup.py install | ||
``` | ||
|
||
After developing, the full test suite can be evaluated by running: | ||
|
||
```sh | ||
python setup.py test # Use --pytest-args="-v -s" for verbose mode | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
#!/bin/bash | ||
|
||
# Install the required scripts with | ||
# pip install autoflake autopep8 isort | ||
autoflake ./examples/ ./graphene_django/ -r --remove-unused-variables --remove-all-unused-imports --in-place | ||
autopep8 ./examples/ ./graphene_django/ -r --in-place --experimental --aggressive --max-line-length 120 | ||
isort -rc ./examples/ ./graphene_django/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
|
||
pandoc README.md --from markdown --to rst -s -o README.rst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import sys, os | ||
ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) | ||
sys.path.insert(0, ROOT_PATH + '/examples/') | ||
|
||
SECRET_KEY = 1 | ||
|
||
INSTALLED_APPS = [ | ||
'graphene_django', | ||
'graphene_django.tests', | ||
'starwars', | ||
] | ||
|
||
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.sqlite3', | ||
'NAME': 'django_test.sqlite', | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
Cookbook Example Django Project | ||
=============================== | ||
|
||
This example project demos integration between Graphene and Django. | ||
The project contains two apps, one named `ingredients` and another | ||
named `recepies`. | ||
|
||
Getting started | ||
--------------- | ||
|
||
First you'll need to get the source of the project. Do this by cloning the | ||
whole Graphene repository: | ||
|
||
```bash | ||
# Get the example project code | ||
git clone https://github.com/graphql-python/graphene.git | ||
cd graphene/examples/cookbook | ||
``` | ||
|
||
It is good idea (but not required) to create a virtual environment | ||
for this project. We'll do this using | ||
[virtualenv](http://docs.python-guide.org/en/latest/dev/virtualenvs/) | ||
to keep things simple, | ||
but you may also find something like | ||
[virtualenvwrapper](https://virtualenvwrapper.readthedocs.org/en/latest/) | ||
to be useful: | ||
|
||
```bash | ||
# Create a virtualenv in which we can install the dependencies | ||
virtualenv env | ||
source env/bin/activate | ||
``` | ||
|
||
Now we can install our dependencies: | ||
|
||
```bash | ||
pip install -r requirements.txt | ||
``` | ||
|
||
Now setup our database: | ||
|
||
```bash | ||
# Setup the database | ||
./manage.py migrate | ||
|
||
# Load some example data | ||
./manage.py loaddata ingredients | ||
|
||
# Create an admin user (useful for logging into the admin UI | ||
# at http://127.0.0.1:8000/admin) | ||
./manage.py createsuperuser | ||
``` | ||
|
||
Now you should be ready to start the server: | ||
|
||
```bash | ||
./manage.py runserver | ||
``` | ||
|
||
Now head on over to | ||
[http://127.0.0.1:8000/graphiql](http://127.0.0.1:8000/graphiql) | ||
and run some queries! | ||
(See the [Django quickstart guide](http://graphene-python.org/docs/quickstart-django/) | ||
for some example queries) |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
from django.contrib import admin | ||
|
||
from cookbook.ingredients.models import Category, Ingredient | ||
|
||
admin.site.register(Ingredient) | ||
admin.site.register(Category) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
from django.apps import AppConfig | ||
|
||
|
||
class IngredientsConfig(AppConfig): | ||
name = 'cookbook.ingredients' | ||
label = 'ingredients' | ||
verbose_name = 'Ingredients' |
1 change: 1 addition & 0 deletions
1
examples/cookbook/cookbook/ingredients/fixtures/ingredients.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
[{"model": "ingredients.category", "pk": 1, "fields": {"name": "Dairy"}}, {"model": "ingredients.category", "pk": 2, "fields": {"name": "Meat"}}, {"model": "ingredients.ingredient", "pk": 1, "fields": {"name": "Eggs", "notes": "Good old eggs", "category": 1}}, {"model": "ingredients.ingredient", "pk": 2, "fields": {"name": "Milk", "notes": "Comes from a cow", "category": 1}}, {"model": "ingredients.ingredient", "pk": 3, "fields": {"name": "Beef", "notes": "Much like milk, this comes from a cow", "category": 2}}, {"model": "ingredients.ingredient", "pk": 4, "fields": {"name": "Chicken", "notes": "Definitely doesn't come from a cow", "category": 2}}] |
33 changes: 33 additions & 0 deletions
33
examples/cookbook/cookbook/ingredients/migrations/0001_initial.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# -*- coding: utf-8 -*- | ||
# Generated by Django 1.9 on 2015-12-04 18:15 | ||
from __future__ import unicode_literals | ||
|
||
import django.db.models.deletion | ||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
initial = True | ||
|
||
dependencies = [ | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='Category', | ||
fields=[ | ||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('name', models.CharField(max_length=100)), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name='Ingredient', | ||
fields=[ | ||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('name', models.CharField(max_length=100)), | ||
('notes', models.TextField()), | ||
('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ingredients', to='ingredients.Category')), | ||
], | ||
), | ||
] |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from django.db import models | ||
|
||
|
||
class Category(models.Model): | ||
name = models.CharField(max_length=100) | ||
|
||
def __str__(self): | ||
return self.name | ||
|
||
|
||
class Ingredient(models.Model): | ||
name = models.CharField(max_length=100) | ||
notes = models.TextField() | ||
category = models.ForeignKey(Category, related_name='ingredients') | ||
|
||
def __str__(self): | ||
return self.name |
Oops, something went wrong.