Support limit and day limit parameter in feedQuery

This commit is contained in:
shortcutme 2017-01-29 19:02:26 +01:00
parent 2b389e4e85
commit 39e3f22d0b
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -16,7 +16,7 @@ class UiWebsocketPlugin(object):
feeds = self.user.sites[self.site.address].get("follow", {}) feeds = self.user.sites[self.site.address].get("follow", {})
self.response(to, feeds) self.response(to, feeds)
def actionFeedQuery(self, to): def actionFeedQuery(self, to, limit=10, day_limit=3):
if "ADMIN" not in self.site.settings["permissions"]: if "ADMIN" not in self.site.settings["permissions"]:
return self.response(to, "FeedQuery not allowed") return self.response(to, "FeedQuery not allowed")
@ -33,19 +33,20 @@ class UiWebsocketPlugin(object):
query_parts = query.split("UNION") query_parts = query.split("UNION")
for i, query_part in enumerate(query_parts): for i, query_part in enumerate(query_parts):
db_query = DbQuery(query_part) db_query = DbQuery(query_part)
where = " WHERE %s > strftime('%%s', 'now', '-3 day')" % db_query.fields.get("date_added", "date_added") if day_limit:
if "WHERE" in query_part: where = " WHERE %s > strftime('%%s', 'now', '-%s day')" % (db_query.fields.get("date_added", "date_added"), day_limit)
query_part = re.sub("WHERE (.*?)(?=$| GROUP BY)", where+" AND (\\1)", query_part) if "WHERE" in query_part:
else: query_part = re.sub("WHERE (.*?)(?=$| GROUP BY)", where+" AND (\\1)", query_part)
query_part += where else:
query_part += where
query_parts[i] = query_part query_parts[i] = query_part
query = " UNION ".join(query_parts) query = " UNION ".join(query_parts)
if ":params" in query: if ":params" in query:
query = query.replace(":params", ",".join(["?"] * len(params))) query = query.replace(":params", ",".join(["?"] * len(params)))
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT 10", params) res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit, params)
else: else:
res = site.storage.query(query + " ORDER BY date_added DESC LIMIT 10") res = site.storage.query(query + " ORDER BY date_added DESC LIMIT %s" % limit)
except Exception, err: # Log error except Exception, err: # Log error
self.log.error("%s feed query %s error: %s" % (address, name, err)) self.log.error("%s feed query %s error: %s" % (address, name, err))
continue continue