fix lists, handle async requests
This commit is contained in:
parent
39ea0437df
commit
d451eb3063
9 changed files with 25 additions and 30 deletions
|
|
@ -87,11 +87,15 @@ def find(data):
|
|||
j = i.json()
|
||||
response['items'].append({k:j[k] for k in j if not data['keys'] or k in data['keys']})
|
||||
else:
|
||||
response['items'] = q['qs'].count()
|
||||
#from sqlalchemy.sql import func
|
||||
#models.db.session.query(func.sum(models.Item.sort_size).label("size"))
|
||||
#response['size'] = x.scalar()
|
||||
response['size'] = sum([i.info.get('size', 0) for i in q['qs'].join(models.Sort).options(load_only('id', 'info'))])
|
||||
key = 'stats:' + hashlib.sha1(json.dumps(data)).hexdigest()
|
||||
stats = state.cache.get(key)
|
||||
if stats is None:
|
||||
stats = {}
|
||||
size = [i.info.get('size', 0) for i in q['qs'].join(models.Sort).options(load_only('id', 'info'))]
|
||||
stats['items'] = len(size)
|
||||
stats['size'] = sum(size)
|
||||
state.cache.set(key, stats, ttl=60)
|
||||
response = stats
|
||||
return response
|
||||
actions.register(find)
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ class EpubHandler(OMLHandler):
|
|||
}.get(filename.split('.')[0], mimetypes.guess_type(filename)[0]) or 'text/plain'
|
||||
self.set_header('Content-Type', content_type)
|
||||
self.write(z.read(filename))
|
||||
self.finish()
|
||||
|
||||
def serve_static(handler, path, mimetype, include_body=True):
|
||||
#fixme use static file handler / serve ranges
|
||||
|
|
@ -47,7 +46,6 @@ def serve_static(handler, path, mimetype, include_body=True):
|
|||
if include_body:
|
||||
with open(path) as fd:
|
||||
handler.write(fd.read())
|
||||
handler.finish()
|
||||
return
|
||||
|
||||
class FileHandler(OMLHandler):
|
||||
|
|
@ -61,7 +59,6 @@ class FileHandler(OMLHandler):
|
|||
path = item.get_path() if item else None
|
||||
if not item or not path:
|
||||
self.set_status(404)
|
||||
self.finish()
|
||||
return
|
||||
mimetype={
|
||||
'epub': 'application/epub+zip',
|
||||
|
|
@ -77,7 +74,6 @@ class ReaderHandler(OMLHandler):
|
|||
item = Item.get(id)
|
||||
if not item:
|
||||
self.set_status(404)
|
||||
self.finish()
|
||||
return
|
||||
if item.info['extension'] == 'epub':
|
||||
html = 'html/epub.html'
|
||||
|
|
@ -87,7 +83,6 @@ class ReaderHandler(OMLHandler):
|
|||
html = 'html/txt.html'
|
||||
else:
|
||||
self.set_status(404)
|
||||
self.finish()
|
||||
return
|
||||
item.accessed = datetime.utcnow()
|
||||
item.timesaccessed = (item.timesaccessed or 0) + 1
|
||||
|
|
|
|||
|
|
@ -160,7 +160,6 @@ class IconHandler(tornado.web.RequestHandler):
|
|||
|
||||
if type_ not in ('cover', 'preview'):
|
||||
self.set_status(404)
|
||||
self.finish()
|
||||
return
|
||||
|
||||
self.set_header('Content-Type', 'image/jpeg')
|
||||
|
|
@ -168,7 +167,6 @@ class IconHandler(tornado.web.RequestHandler):
|
|||
response = yield tornado.gen.Task(get_icon, self._app, id, type_, size)
|
||||
if not response:
|
||||
self.set_status(404)
|
||||
self.finish()
|
||||
return
|
||||
if self._finished:
|
||||
return
|
||||
|
|
|
|||
|
|
@ -192,15 +192,15 @@ class Item(db.Model):
|
|||
f.item_id = self.id
|
||||
f.key = 'list'
|
||||
if p.id == settings.USER_ID:
|
||||
f.value = ':'
|
||||
f.findvalue = f.value = ':'
|
||||
else:
|
||||
f.value = '%s:' % p.id
|
||||
f.findvalue = f.value = '%s:' % p.id
|
||||
db.session.add(f)
|
||||
for l in self.lists:
|
||||
f = Find()
|
||||
f.item_id = self.id
|
||||
f.key = 'list'
|
||||
f.value = l.find_id
|
||||
f.findvalue = f.value = l.find_id
|
||||
db.session.add(f)
|
||||
|
||||
def update(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue