-
-
Notifications
You must be signed in to change notification settings - Fork 72
/
utils.py
41 lines (35 loc) · 1.49 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# -*- coding: utf-8 -*-
from zope.schema import getFields
from zope.interface import providedBy
from plone.behavior.interfaces import IBehaviorAssignable
def get_object_schema(obj):
# Iterate over all interfaces that are provided by the object and filter
# out all attributes that start with '_' or 'manage'.
for iface in providedBy(obj).flattened():
for name, field in getFields(iface).items():
no_underscore_method = not name.startswith('_')
no_manage_method = not name.startswith('manage')
if no_underscore_method and no_manage_method:
yield name, field
# Iterate over all behaviors that are assigned to the object.
assignable = IBehaviorAssignable(obj, None)
if assignable:
for behavior in assignable.enumerateBehaviors():
for name, field in getFields(behavior.interface).items():
yield name, field
def append_json_to_links(result):
"""
"""
if '@id' in result:
result['@id'] = '{0}?format=json'.format(result['@id'])
if 'member' in result:
for index, item in enumerate(result['member']):
if '@id' in item:
result['member'][index]['@id'] = '{0}?format=json'.format(
result['member'][index]['@id']
)
if 'parent' in result and result != {} and '@id' in result['parent']:
result['parent']['@id'] = '{0}?format=json'.format(
result['parent']['@id']
)
return result