Skip to content

Commit 0ac4144

Browse files
author
Colton Provias
committed
Finalizing more functions
1 parent e461c23 commit 0ac4144

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

sqlalchemy_jsonapi/serializer.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -435,19 +435,29 @@ def _render_full_resource(self, instance, include, fields):
435435
return to_ret
436436

437437
def _check_instance_relationships_for_delete(self, instance):
438+
"""
439+
Ensure we are authorized to delete this and all cascaded resources.
440+
441+
:param instance: The instance to check the relationships of.
442+
"""
438443
check_permission(instance, None, Permissions.DELTE)
439444
for rel_key, rel in instance.__mapper__.relationships.items():
440445
check_permission(instance, rel_key, Permissions.EDIT)
441446
if rel.cascade.delete:
442447
if rel.direction == MANYTOONE:
443-
self._check_instance_relationships_for_delete(getattr(
444-
instance, rel_key))
448+
related = getattr(instance, rel_key)
449+
self._check_instance_relationships_for_delete(related)
445450
else:
446451
instances = getattr(instance, rel_key)
447452
for to_check in instances:
448453
self._check_instance_relationships_for_delete(to_check)
449454

450455
def _parse_fields(self, query):
456+
"""
457+
Parse the querystring args for fields.
458+
459+
:param query: Dict of query args
460+
"""
451461
field_args = {
452462
k: v
453463
for k, v in query.items() if k.startswith('fields[')
@@ -458,6 +468,11 @@ def _parse_fields(self, query):
458468
return fields
459469

460470
def _parse_include(self, include):
471+
"""
472+
Parse the querystring args or parent includes for includes.
473+
474+
:param include: Dict of query args or includes
475+
"""
461476
ret = {}
462477
for item in include:
463478
if '.' in item:
@@ -471,6 +486,11 @@ def _parse_include(self, include):
471486
return ret
472487

473488
def _parse_page(self, query):
489+
"""
490+
Parse the querystring args for pagination.
491+
492+
:param query: Dict of query args
493+
"""
474494
args = {k[5:-1]: v for k, v in query.items() if k.startswith('page[')}
475495
if {'number', 'size'} == set(args.keys()):
476496
if not args['number'].isdecimal() or not args['size'].isdecimal():

0 commit comments

Comments
 (0)