From a4678efc5cd96e57c462a57be02194916c9311cd Mon Sep 17 00:00:00 2001 From: cedricbonhomme Date: Sat, 3 Mar 2012 21:06:26 +0100 Subject: Like/Unlike an article is now working with MongoDB. --- mongodb.py | 7 ++++++- pyAggr3g470r.py | 62 +++++---------------------------------------------------- 2 files changed, 11 insertions(+), 58 deletions(-) diff --git a/mongodb.py b/mongodb.py index 2360d1a1..3c03c8ed 100644 --- a/mongodb.py +++ b/mongodb.py @@ -122,7 +122,12 @@ class Articles(object): return unread_articles - + def like_article(self, like, feed_id, article_id): + """ + Like or unlike an article. + """ + collection = self.db[str(feed_id)] + collection.update({"article_id": article_id}, {"$set": {"article_like": like}}) def list_collections(self): """ diff --git a/pyAggr3g470r.py b/pyAggr3g470r.py index 2658e1e6..9135e3d5 100755 --- a/pyAggr3g470r.py +++ b/pyAggr3g470r.py @@ -702,7 +702,6 @@ class Root: """ This page displays all articles of a feed. """ - print "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" try: feed = self.articles.get_articles_from_collection(feed_id) except KeyError: @@ -832,7 +831,7 @@ class Root: html += htmlnav html += """
\n""" - # Get the date from the tag cloud + # Get the date from the tag cloud # Format: /history/?querystring=year:2011-month:06 to get the # list of articles of June, 2011. if m != "": @@ -894,7 +893,7 @@ class Root: (feed.feed_id, feed.feed_site_link, feed.feed_title, feed.feed_link, feed.feed_image) html += article.article_date.split(' ')[0][-2:] + " (" + \ - article.article_date.split(' ')[1] + ") - " + \ + article.article_date.split(' ')[1] + ") - " + \ """%s%s%s%s""" % \ (feed.feed_id, article.article_id, not_read_begin, \ article_title, not_read_end, description) + like + "
\n" @@ -1036,19 +1035,11 @@ class Root: Mark or unmark an article as favorites. """ try: - action, feed_id, article_id = param.split(':') - article = self.feeds[feed_id].articles[article_id] + like, feed_id, article_id = param.split(':') + articles = self.articles.get_article(feed_id, article_id) except: return self.error_page("Bad URL. This article do not exists.") - conn = sqlite3.connect(utils.sqlite_base, isolation_level = None) - try: - c = conn.cursor() - c.execute("""UPDATE articles SET like=%s WHERE article_link='%s'""" % (action, article.article_link)) - except Exception: - self.error_page("Impossible to like/dislike this article (database error).") - finally: - conn.commit() - c.close() + self.articles.like_article("1"==like, feed_id, article_id) return self.article(feed_id+":"+article_id) like.exposed = True @@ -1295,49 +1286,6 @@ class Root: else: print "Base (%s) empty!" % utils.sqlite_base - def watch_base(self): - """Monitor a file. - - Detect the changes in base of feeds. - When a change is detected, reload the base. - """ - mon = gamin.WatchMonitor() - time.sleep(10) - mon.watch_file(utils.sqlite_base, self.update) - ret = mon.event_pending() - try: - print "Watching %s" % utils.sqlite_base - while True: - ret = mon.event_pending() - if ret > 0: - print "The base of feeds (%s) has changed.\nReloading..." % utils.sqlite_base - ret = mon.handle_one_event() - time.sleep(1) - except KeyboardInterrupt: - pass - print "Stop watching", sqlite_base - mon.stop_watch(sqlite_base) - del mon - - def watch_base_classic(self): - """ - Monitor the base of feeds if the module gamin is not installed. - """ - time.sleep(10) - old_time = os.path.getmtime(utils.sqlite_base) - try: - print "Watching %s" % utils.sqlite_base - while True: - time.sleep(1) - # simple test (date of last modification: getmtime) - if os.path.getmtime(utils.sqlite_base) != old_time: - print "The base of feeds (%s) has changed.\nReloading..." % utils.sqlite_base - self.update() - old_time = os.path.getmtime(utils.sqlite_base) - except KeyboardInterrupt: - pass - print "Stop watching", utils.sqlite_base - if __name__ == '__main__': # Point of entry in execution mode -- cgit