2016-12-18 13:12:14 +00:00
|
|
|
import flask
|
2016-11-06 04:24:43 +00:00
|
|
|
import helpers
|
2016-12-18 13:12:14 +00:00
|
|
|
import json
|
|
|
|
|
|
|
|
def make_json_response(j, *args, **kwargs):
|
|
|
|
dumped = json.dumps(j)
|
|
|
|
response = flask.Response(dumped, *args, **kwargs)
|
|
|
|
response.headers['Content-Type'] = 'application/json;charset=utf-8'
|
|
|
|
return response
|
2016-11-06 04:24:43 +00:00
|
|
|
|
|
|
|
def album(a, minimal=False):
|
|
|
|
j = {
|
|
|
|
'id': a.id,
|
|
|
|
'description': a.description,
|
|
|
|
'title': a.title,
|
|
|
|
}
|
|
|
|
if not minimal:
|
|
|
|
j['photos'] = [photo(p) for p in a.photos()]
|
|
|
|
j['parent'] = a.parent()
|
|
|
|
j['sub_albums'] = [child.id for child in a.children()]
|
|
|
|
|
|
|
|
return j
|
|
|
|
|
|
|
|
def photo(p, include_albums=True, include_tags=True):
|
|
|
|
tags = p.tags()
|
|
|
|
tags.sort(key=lambda x: x.name)
|
|
|
|
j = {
|
|
|
|
'id': p.id,
|
|
|
|
'extension': p.extension,
|
|
|
|
'width': p.width,
|
|
|
|
'height': p.height,
|
|
|
|
'ratio': p.ratio,
|
|
|
|
'area': p.area,
|
|
|
|
'bytes': p.bytes,
|
2016-12-21 00:33:40 +00:00
|
|
|
'duration_str': p.duration_string(),
|
2016-11-06 04:24:43 +00:00
|
|
|
'duration': p.duration,
|
2016-11-07 02:00:30 +00:00
|
|
|
'bytes_str': p.bytestring(),
|
2016-11-06 04:24:43 +00:00
|
|
|
'has_thumbnail': bool(p.thumbnail),
|
|
|
|
'created': p.created,
|
|
|
|
'filename': p.basename,
|
2016-12-24 03:49:51 +00:00
|
|
|
'mimetype': p.mimetype,
|
2016-11-06 04:24:43 +00:00
|
|
|
}
|
|
|
|
if include_albums:
|
|
|
|
j['albums'] = [album(a, minimal=True) for a in p.albums()]
|
|
|
|
|
|
|
|
if include_tags:
|
|
|
|
j['tags'] = [tag(t) for t in tags]
|
|
|
|
|
|
|
|
return j
|
|
|
|
|
|
|
|
def tag(t):
|
|
|
|
j = {
|
|
|
|
'id': t.id,
|
|
|
|
'name': t.name,
|
|
|
|
'qualified_name': t.qualified_name(),
|
|
|
|
}
|
2016-12-16 11:27:39 +00:00
|
|
|
return j
|
2017-02-05 02:30:02 +00:00
|
|
|
|
|
|
|
def user(u):
|
|
|
|
j = {
|
|
|
|
'id': u.id,
|
|
|
|
'username': u.username,
|
|
|
|
'created': u.created,
|
|
|
|
}
|
|
|
|
return j
|