Skip to content

Commit

Permalink
Merge branch 'release/6.0.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
pavlov99 committed Feb 6, 2015
2 parents 65d4078 + 605dccb commit 4d81ad7
Show file tree
Hide file tree
Showing 19 changed files with 242 additions and 640 deletions.
2 changes: 1 addition & 1 deletion jsonapi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
""" JSON:API realization."""
__version = (0, 5, 9)
__version = (0, 6, 0)

__version__ = version = '.'.join(map(str, __version))
__project__ = PROJECT = __name__
66 changes: 32 additions & 34 deletions jsonapi/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ class Meta:
import logging
import json

from . import statuses
from .utils import Choices
from .model_inspector import ModelInspector

Expand All @@ -40,7 +39,7 @@ class API(object):
HTTP_METHODS = Choices(
('GET', 'get'),
('POST', 'create'),
('PATCH', 'update'),
('PUT', 'update'),
('DELETE', 'delete'),
)
CONTENT_TYPE = "application/vnd.api+json"
Expand Down Expand Up @@ -179,13 +178,6 @@ def map_view(self, request):
:return django.http.HttpResponse
"""
# content_type = request.META.get('content_type') or \
# request.META.get('CONTENT_TYPE')
# if content_type != API.CONTENT_TYPE:
# msg = "Content-Type SHOULD be {}".format(API.CONTENT_TYPE)
# return HttpResponse(
# msg, status=statuses.HTTP_415_UNSUPPORTED_MEDIA_TYPE)

self.update_urls(request)
resource_info = {
"resources": [{
Expand All @@ -200,6 +192,31 @@ def map_view(self, request):
response = json.dumps(resource_info)
return HttpResponse(response, content_type="application/vnd.api+json")

def handler_view_get(self, resource, **kwargs):
items = json.dumps(
resource.get(**kwargs),
cls=resource.Meta.encoder
)
return HttpResponse(items, content_type=self.CONTENT_TYPE)

def handler_view_post(self, resource, **kwargs):
response = resource.post(**kwargs)
return HttpResponse(
response, content_type=self.CONTENT_TYPE, status=201)

def handler_view_put(self, resource, **kwargs):
response = resource.put(**kwargs)
return HttpResponse(
response, content_type=self.CONTENT_TYPE, status=200)

def handler_view_delete(self, resource, **kwargs):
if 'ids' not in kwargs:
return HttpResponse("Resource ids not specified", status=404)

response = resource.delete(**kwargs)
return HttpResponse(
response, content_type=self.CONTENT_TYPE, status=204)

def handler_view(self, request, resource_name, ids=None):
""" Handler for resources.
Expand All @@ -209,20 +226,11 @@ def handler_view(self, request, resource_name, ids=None):
:return django.http.HttpResponse
"""
# content_type = request.META.get('content_type') or \
# request.META.get('CONTENT_TYPE')
# if content_type != API.CONTENT_TYPE:
# msg = "Content-Type SHOULD be {}".format(API.CONTENT_TYPE)
# return HttpResponse(
# msg, status=statuses.HTTP_415_UNSUPPORTED_MEDIA_TYPE)

self.update_urls(request, resource_name=resource_name, ids=ids)
resource = self.resource_map[resource_name]

allowed_http_methods = {
getattr(API.HTTP_METHODS, x) for x
in resource.Meta.allowed_methods
}
getattr(API.HTTP_METHODS, x) for x in resource.Meta.allowed_methods}
if request.method not in allowed_http_methods:
return HttpResponseNotAllowed(
permitted_methods=allowed_http_methods)
Expand All @@ -237,20 +245,10 @@ def handler_view(self, request, resource_name, ids=None):
kwargs['ids'] = ids.split(",")

if request.method == "GET":
kwargs.update(request.GET.dict())

items = json.dumps(
resource.get(**kwargs), cls=resource.Meta.encoder)
return HttpResponse(items, content_type=self.CONTENT_TYPE)
return self.handler_view_get(resource, **kwargs)
elif request.method == "POST":
data = request.body.decode('utf8')
response = resource.create(data, **kwargs)
return HttpResponse(
response, content_type=self.CONTENT_TYPE, status=201)
return self.handler_view_post(resource, **kwargs)
elif request.method == "PUT":
return self.handler_view_put(resource, **kwargs)
elif request.method == "DELETE":
if ids is None:
return HttpResponse("Resource ids not specified", status=404)

response = resource.delete(**kwargs)
return HttpResponse(
response, content_type=self.CONTENT_TYPE, status=204)
return self.handler_view_delete(resource, **kwargs)
35 changes: 0 additions & 35 deletions jsonapi/deserializer.py

This file was deleted.

2 changes: 1 addition & 1 deletion jsonapi/request_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def parse(cls, query):
include_params, querydict = cls.parse_include(querydict)
page, querydict = cls.parse_page(querydict)
fields_params, querydict = cls.parse_fields(querydict)
filters = ["{}={}".format(k, v[0]) for k, v in querydict.items()]
filters = {k: v[0] for k, v in querydict.items()}

result = {
"sort": sort_params,
Expand Down

0 comments on commit 4d81ad7

Please sign in to comment.