this repo has no description
1from fnmatch import fnmatchcase
2
3from feeds.battle import BattleFeed
4from feeds.rapidfire import RapidFireFeed
5from feeds.homeruns import HomeRunsTeamFeed
6from feeds.norazone_interesting import NoraZoneInteresting
7from feeds.sevendirtywords import SevenDirtyWordsFeed
8from feeds.ratio import RatioFeed
9from feeds.outlinetags import OutlineTagsFeed
10from feeds.popqp import PopularQuotePostsFeed
11
12class FeedManager:
13 def __init__(self):
14 self.feeds = {}
15
16 def register(self, feed):
17 self.feeds[feed.FEED_URI] = feed()
18
19 def process_commit(self, commit):
20 for feed in self.feeds.values():
21 feed.process_commit(commit)
22
23 def serve_feed(self, feed_uri, limit, offset, langs, debug=False):
24 for pattern, feed in self.feeds.items():
25 if fnmatchcase(feed_uri, pattern):
26 break
27 else:
28 raise Exception('no matching feed pattern found')
29
30 if '*' in pattern and debug:
31 return feed.serve_wildcard_feed_debug(feed_uri, limit, offset, langs)
32
33 elif '*' in pattern and not debug:
34 return feed.serve_wildcard_feed(feed_uri, limit, offset, langs)
35
36 elif '*' not in pattern and debug:
37 return feed.serve_feed_debug(limit, offset, langs)
38
39 elif '*' not in pattern and not debug:
40 return feed.serve_feed(limit, offset, langs)
41
42 def commit_changes(self):
43 for feed in self.feeds.values():
44 feed.commit_changes()
45
46 def stop_all(self):
47 for feed in self.feeds.values():
48 try:
49 feed.stop_db_worker()
50 except AttributeError:
51 pass
52
53feed_manager = FeedManager()