Skip to content

Extended the example app and added a sqlite db to make it easy to run #96

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 18, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ From PyPI

::

pip install djangorestframework-jsonapi
$ pip install djangorestframework-jsonapi


From Source
Expand All @@ -86,6 +86,18 @@ From Source
$ cd django-rest-framework-json-api && pip install -e .


Running the example app
^^^^^^^^^^^^^^^^^^^^^^^

::

$ git clone https://github.com/django-json-api/django-rest-framework-json-api.git
$ cd django-rest-framework-json-api && pip install -e .
$ django-admin.py runserver

Browse to http://localhost:8000


Running Tests
^^^^^^^^^^^^^

Expand Down
8 changes: 8 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,14 @@ From Source
git clone https://github.com/django-json-api/django-rest-framework-json-api.git
cd django-rest-framework-json-api && pip install -e .

## Running the example app

git clone https://github.com/django-json-api/django-rest-framework-json-api.git
cd django-rest-framework-json-api && pip install -e .
django-admin.py runserver

Browse to http://localhost:8000

## Running Tests

python runtests.py
Expand Down
Binary file added drf_example
Binary file not shown.
7 changes: 4 additions & 3 deletions example/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,10 @@ class Entry(BaseModel):
pub_date = models.DateField()
mod_date = models.DateField()
authors = models.ManyToManyField(Author)
n_comments = models.IntegerField()
n_pingbacks = models.IntegerField()
rating = models.IntegerField()
n_comments = models.IntegerField(default=0)
n_pingbacks = models.IntegerField(default=0)
rating = models.IntegerField(default=0)

def __str__(self):
return self.headline

15 changes: 14 additions & 1 deletion example/serializers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
from rest_framework import serializers
from example.models import Blog
from example.models import Blog, Entry, Author


class BlogSerializer(serializers.ModelSerializer):

class Meta:
model = Blog
fields = ('name', )

class EntrySerializer(serializers.ModelSerializer):
class Meta:
model = Entry
fields = ('blog', 'headline', 'body_text', 'pub_date', 'mod_date',
'authors',)

class AuthorSerializer(serializers.ModelSerializer):

class Meta:
model = Author
fields = ('name', 'email',)

1 change: 1 addition & 0 deletions example/settings/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .dev import *
13 changes: 5 additions & 8 deletions example/settings.py → example/settings/dev.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
'NAME': 'drf_example',
}
}

Expand All @@ -36,26 +36,23 @@

MIDDLEWARE_CLASSES = ()

JSON_API_FORMAT_KEYS = 'dasherize'
JSON_API_FORMAT_KEYS = 'camelize'
JSON_API_FORMAT_RELATION_KEYS = 'camelize'
REST_FRAMEWORK = {
'PAGINATE_BY': 1,
'PAGINATE_BY': 5,
'PAGINATE_BY_PARAM': 'page_size',
'MAX_PAGINATE_BY': 100,
'EXCEPTION_HANDLER': 'rest_framework_json_api.exceptions.exception_handler',
# DRF v3.1+
'DEFAULT_PAGINATION_CLASS':
'rest_framework_json_api.pagination.PageNumberPagination',
# DRF v3.0 and older
'DEFAULT_PAGINATION_SERIALIZER_CLASS':
'rest_framework_json_api.pagination.PaginationSerializer',
'DEFAULT_PARSER_CLASSES': (
'rest_framework_json_api.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework_json_api.renderers.JSONRenderer',
'rest_framework.renderers.JSONRenderer',
'rest_framework.renderers.BrowsableAPIRenderer',
),
'DEFAULT_METADATA_CLASS': 'rest_framework_json_api.metadata.JSONAPIMetadata',
}
16 changes: 16 additions & 0 deletions example/settings/test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from .dev import *

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}

ROOT_URLCONF = 'example.urls_test'

JSON_API_FORMAT_KEYS = 'camelize'
JSON_API_FORMAT_RELATION_KEYS = 'camelize'
REST_FRAMEWORK.update({
'PAGINATE_BY': 1,
})
17 changes: 4 additions & 13 deletions example/urls.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,14 @@
from django.conf.urls import include, url
from rest_framework import routers

from example.views import BlogViewSet
from .api.resources.identity import Identity, GenericIdentity
from example.views import BlogViewSet, EntryViewSet, AuthorViewSet

router = routers.DefaultRouter(trailing_slash=False)

router.register(r"blogs", BlogViewSet)

# for the old tests
router.register(r'identities', Identity)

router.register(r'blogs', BlogViewSet)
router.register(r'entries', EntryViewSet)
router.register(r'authors', AuthorViewSet)

urlpatterns = [

url(r'^', include(router.urls)),

# old tests
url(r'identities/default/(?P<pk>\d+)',
GenericIdentity.as_view(), name='user-default'),

]
23 changes: 23 additions & 0 deletions example/urls_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from django.conf.urls import include, url
from rest_framework import routers

from example.views import BlogViewSet, EntryViewSet, AuthorViewSet
from .api.resources.identity import Identity, GenericIdentity

router = routers.DefaultRouter(trailing_slash=False)

router.register(r'blogs', BlogViewSet)
router.register(r'entries', EntryViewSet)
router.register(r'authors', AuthorViewSet)

# for the old tests
router.register(r'identities', Identity)

urlpatterns = [
url(r'^', include(router.urls)),

# old tests
url(r'identities/default/(?P<pk>\d+)',
GenericIdentity.as_view(), name='user-default'),
]

16 changes: 14 additions & 2 deletions example/views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
from rest_framework import viewsets
from example.models import Blog
from example.serializers import BlogSerializer
from example.models import Blog, Entry, Author
from example.serializers import BlogSerializer, EntrySerializer, AuthorSerializer


class BlogViewSet(viewsets.ModelViewSet):

queryset = Blog.objects.all()
serializer_class = BlogSerializer

class EntryViewSet(viewsets.ModelViewSet):

queryset = Entry.objects.all()
serializer_class = EntrySerializer
resource_name = 'posts'

class AuthorViewSet(viewsets.ModelViewSet):

queryset = Author.objects.all()
serializer_class = AuthorSerializer

2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
[pytest]
DJANGO_SETTINGS_MODULE=example.settings
DJANGO_SETTINGS_MODULE=example.settings.test
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ deps =
drf32: djangorestframework>=3.2
-r{toxinidir}/requirements-development.txt

setenv= DJANGO_SETTINGS_MODULE=example.settings
setenv= DJANGO_SETTINGS_MODULE=example.settings.test

commands =
py.test --basetemp={envtmpdir}
Expand Down