mirror of
https://github.com/HelloZeroNet/ZeroNet.git
synced 2023-12-14 04:33:03 +01:00
51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
from Plugin import PluginManager
|
|
import re
|
|
|
|
@PluginManager.registerTo("UiWebsocket")
|
|
class UiWebsocketPlugin(object):
|
|
def actionFeedFollow(self, to, feeds):
|
|
self.user.setFeedFollow(self.site.address, feeds)
|
|
self.response(to, "ok")
|
|
|
|
def actionFeedListFollow(self, to):
|
|
feeds = self.user.sites[self.site.address].get("follow", {})
|
|
self.response(to, feeds)
|
|
|
|
def actionFeedQuery(self, to):
|
|
if "ADMIN" not in self.site.settings["permissions"]:
|
|
return self.response(to, "FeedQuery not allowed")
|
|
|
|
from Site import SiteManager
|
|
rows = []
|
|
for address, site_data in self.user.sites.iteritems():
|
|
feeds = site_data.get("follow")
|
|
if not feeds:
|
|
continue
|
|
for name, query_set in feeds.iteritems():
|
|
site = SiteManager.site_manager.get(address)
|
|
try:
|
|
query, params = query_set
|
|
if ":params" in query:
|
|
query = query.replace(":params", ",".join(["?"]*len(params)))
|
|
res = site.storage.query(query+" ORDER BY date_added DESC LIMIT 10", params)
|
|
else:
|
|
res = site.storage.query(query+" ORDER BY date_added DESC LIMIT 10")
|
|
except Exception, err: # Log error
|
|
self.log.error("%s feed query %s error: %s" % (address, name, err))
|
|
continue
|
|
for row in res:
|
|
row = dict(row)
|
|
row["site"] = address
|
|
row["feed_name"] = name
|
|
rows.append(row)
|
|
return self.response(to, rows)
|
|
|
|
|
|
@PluginManager.registerTo("User")
|
|
class UserPlugin(object):
|
|
# Set queries that user follows
|
|
def setFeedFollow(self, address, feeds):
|
|
site_data = self.getSiteData(address)
|
|
site_data["follow"] = feeds
|
|
self.save()
|
|
return site_data
|