diff --git a/api/feeds/models.py b/api/feeds/models.py index 070bd32..2f9f37d 100644 --- a/api/feeds/models.py +++ b/api/feeds/models.py @@ -31,6 +31,10 @@ def getFeedById(cls, feedId): def getEntries(cls, pagingKey): return EntryModel.gql('WHERE pagingKey < :1 ORDER BY pagingKey DESC LIMIT 100', float(pagingKey)) + @classmethod + def getAllEntriesByFeed(cls, feed): + return EntryModel.gql('WHERE ANCESTOR IS :1', feed) + @classmethod def getUnreadEntries(cls, pagingKey): return EntryModel.gql('WHERE pagingKey < :1 AND read = :2 ORDER BY pagingKey DESC LIMIT 100', float(pagingKey), False) diff --git a/api/feeds/reader.py b/api/feeds/reader.py index 28d20ae..f13a6fe 100644 --- a/api/feeds/reader.py +++ b/api/feeds/reader.py @@ -103,6 +103,23 @@ def post(self, feedId): self.response.out.write(utils.dumpsJSON(feed.toDict())) + def delete(self, feedId): + self.response.headers['Content-Type'] = 'application/json' + + feed = models.FeedManager.getFeedById(feedId) + if not feed: + self.writeNotFound() + return + + feeds = models.FeedManager.getAllEntriesByFeed(feed) + if not feeds: + self.writeNotFound() + return + + db.delete(feeds) + feed.delete() + + class FeedEntryHandler(HandlerBase): def get(self, feedId, action, pagingKey=None): self.response.headers['Content-Type'] = 'application/json' diff --git a/webui/sample/index.html b/webui/sample/index.html index 985b6a4..ed57e0f 100644 --- a/webui/sample/index.html +++ b/webui/sample/index.html @@ -16,6 +16,9 @@ @@ -38,6 +41,8 @@ @@ -81,6 +86,22 @@ + +
@@ -125,6 +146,7 @@