hash, set, and file retrival endpoints
This commit is contained in:
parent
16271aa54a
commit
91b84710a4
|
@ -21,10 +21,6 @@ class PhotosApi(object):
|
||||||
|
|
||||||
class PhotosApiV1(object):
|
class PhotosApiV1(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# self.tpl.filters.update(mime2ext=mime2ext,
|
|
||||||
# basename=os.path.basename,
|
|
||||||
# ceil=math.ceil,
|
|
||||||
# statusstr=lambda x: str(x).split(".")[-1])
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
|
@ -37,5 +33,18 @@ class PhotosApiV1(object):
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
@cherrypy.tools.json_out()
|
@cherrypy.tools.json_out()
|
||||||
def findbysha(self, sha):
|
def byhash(self, sha):
|
||||||
pass
|
f = db().query(Photo).filter(Photo.hash == sha).first()
|
||||||
|
return f.to_json()
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
@cherrypy.tools.json_out()
|
||||||
|
def set(self, uuid):
|
||||||
|
s = db().query(PhotoSet).filter(PhotoSet.uuid == uuid).first()
|
||||||
|
return s.to_json()
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
def download(self, uuid):
|
||||||
|
f = db().query(Photo).filter(Photo.uuid == uuid).first()
|
||||||
|
return cherrypy.lib.static.serve_file(os.path.abspath(os.path.join("./library", f.path)),
|
||||||
|
f.format)#TODO no hardcode path
|
||||||
|
|
|
@ -33,6 +33,15 @@ class PhotoSet(Base):
|
||||||
|
|
||||||
status = Column(Enum(PhotoStatus), default=PhotoStatus.private)
|
status = Column(Enum(PhotoStatus), default=PhotoStatus.private)
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
s = {attr: getattr(self, attr) for attr in {"uuid", "title", "description"}}
|
||||||
|
s["lat"] = str(self.lat)
|
||||||
|
s["lon"] = str(self.lon)
|
||||||
|
s["date"] = self.date.isoformat()
|
||||||
|
s["files"] = {i.uuid: i.to_json() for i in self.files}
|
||||||
|
s["tags"] = [t.name for t in self.tags]
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
class Photo(Base):
|
class Photo(Base):
|
||||||
__tablename__ = 'files'
|
__tablename__ = 'files'
|
||||||
|
@ -51,6 +60,12 @@ class Photo(Base):
|
||||||
path = Column(Unicode)
|
path = Column(Unicode)
|
||||||
format = Column(String(length=64)) # TODO how long can a mime string be
|
format = Column(String(length=64)) # TODO how long can a mime string be
|
||||||
|
|
||||||
|
def to_json(self):
|
||||||
|
j = {attr: getattr(self, attr) for attr in
|
||||||
|
{"uuid", "size", "width", "height", "orientation", "format"}}
|
||||||
|
j["set"] = self.set.uuid
|
||||||
|
return j
|
||||||
|
|
||||||
|
|
||||||
class Tag(Base):
|
class Tag(Base):
|
||||||
__tablename__ = 'tags'
|
__tablename__ = 'tags'
|
||||||
|
|
Loading…
Reference in New Issue