Skip to content

Commit

Permalink
Covering restfulpy.controllers submodule, pylover#182
Browse files Browse the repository at this point in the history
  • Loading branch information
pylover committed Jun 5, 2019
1 parent aec7c0c commit 8824da2
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 18 deletions.
21 changes: 3 additions & 18 deletions restfulpy/controllers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import types
from urllib.parse import parse_qs

from nanohttp import Controller, context, json, RestController, action

from restfulpy.orm import DBSession
from restfulpy.utils import split_url


class RootController(Controller):
Expand All @@ -29,18 +29,6 @@ def metadata(self):
return self.__model__.json_metadata()


def split_path(url):
if '?' in url:
path, query = url.split('?')
else:
path, query = url, ''

return path, {k: v[0] if len(v) == 1 else v for k, v in parse_qs(
query,
keep_blank_values=True,
strict_parsing=False
).items()}


class JsonPatchControllerMixin:

Expand All @@ -59,7 +47,7 @@ def patch(self: Controller):
try:
for patch in patches:
context.form = patch.get('value', {})
path, context.query = split_path(patch['path'])
path, context.query = split_url(patch['path'])
context.method = patch['op'].lower()
context.request_content_length = \
len(context.form) if context.form else 0
Expand All @@ -70,10 +58,7 @@ def patch(self: Controller):
else:
return_data = self(*remaining_paths)

if isinstance(return_data, types.GeneratorType):
results.append('"%s"' % ''.join(list(return_data)))
else:
results.append(return_data)
results.append(return_data)

DBSession.flush()
context.query = {}
Expand Down
16 changes: 16 additions & 0 deletions restfulpy/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
import warnings
from hashlib import md5
from os.path import dirname, abspath
from urllib.parse import parse_qs

# TODO: Rename this module to helpers


def import_python_module_by_filename(name, module_filename):
Expand Down Expand Up @@ -97,3 +100,16 @@ def md5sum(f):
if file_obj is not f:
file_obj.close()


def split_url(url):
if '?' in url:
path, query = url.split('?')
else:
path, query = url, ''

return path, {k: v[0] if len(v) == 1 else v for k, v in parse_qs(
query,
keep_blank_values=True,
strict_parsing=False
).items()}

0 comments on commit 8824da2

Please sign in to comment.