def handle_content_type(data):
"""Return HTML or JSON based on request type."""
from pybossa.model.project import Project
if request.headers.get('Content-Type') == 'application/json':
message_and_status = last_flashed_message()
if message_and_status:
data['flash'] = message_and_status[1]
data['status'] = message_and_status[0]
for item in data.keys():
if isinstance(data[item], Form):
data[item] = form_to_json(data[item])
if isinstance(data[item], Pagination):
data[item] = data[item].to_json()
if (item == 'announcements'):
data[item] = [announcement.to_public_json() for announcement in data[item]]
if (item == 'blogposts'):
data[item] = [blog.to_public_json() for blog in data[item]]
if (item == 'categories'):
tmp = []
for cat in data[item]:
if type(cat) != dict:
cat = cat.to_public_json()
tmp.append(cat)
data[item] = tmp
if (item == 'active_cat'):
if type(data[item]) != dict:
cat = data[item].to_public_json()
data[item] = cat
if (item == 'users') and type(data[item]) != str:
data[item] = [user_to_json(user) for user in data[item]]
if (item == 'users' or item =='projects' or item == 'tasks' or item == 'locs') and type(data[item]) == str:
data[item] = json.loads(data[item])
if (item == 'found'):
data[item] = [user_to_json(user) for user in data[item]]
if (item == 'category'):
data[item] = data[item].to_public_json()
if 'code' in data.keys():
return jsonify(data), data['code']
else:
return jsonify(data)
else:
template = data['template']
del data['template']
if 'code' in data.keys():
error_code = data['code']
del data['code']
return render_template(template, **data), error_code
else:
return render_template(template, **data)
评论列表
文章目录