aboutsummaryrefslogtreecommitdiff
path: root/web/controllers/article.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/controllers/article.py')
-rw-r--r--web/controllers/article.py73
1 files changed, 0 insertions, 73 deletions
diff --git a/web/controllers/article.py b/web/controllers/article.py
deleted file mode 100644
index 8b6926b7..00000000
--- a/web/controllers/article.py
+++ /dev/null
@@ -1,73 +0,0 @@
-import re
-import logging
-from sqlalchemy import func
-
-from bootstrap import db
-from .abstract import AbstractController
-from web.controllers import FeedController
-from web.models import Article
-
-logger = logging.getLogger(__name__)
-
-
-class ArticleController(AbstractController):
- _db_cls = Article
-
- def get(self, **filters):
- article = super(ArticleController, self).get(**filters)
- if not article.readed:
- self.update({'id': article.id}, {'readed': True})
- return article
-
- def challenge(self, ids):
- """Will return each id that wasn't found in the database."""
- for id_ in ids:
- if self.read(**id_).first():
- continue
- yield id_
-
- def count_by_feed(self, **filters):
- if self.user_id:
- filters['user_id'] = self.user_id
- return dict(db.session.query(Article.feed_id, func.count(Article.id))
- .filter(*self._to_filters(**filters))
- .group_by(Article.feed_id).all())
-
- def count_by_user_id(self, **filters):
- return dict(db.session.query(Article.user_id,
- func.count(Article.id))
- .filter(*self._to_filters(**filters))
- .group_by(Article.user_id).all())
-
- def create(self, **attrs):
- # handling special denorm for article rights
- assert 'feed_id' in attrs
- feed = FeedController(
- attrs.get('user_id', self.user_id)).get(id=attrs['feed_id'])
- if 'user_id' in attrs:
- assert feed.user_id == attrs['user_id'] or self.user_id is None
- attrs['user_id'] = feed.user_id
-
- # handling feed's filters
- for filter_ in feed.filters or []:
- match = False
- if filter_.get('type') == 'regex':
- match = re.match(filter_['pattern'], attrs.get('title', ''))
- elif filter_.get('type') == 'simple match':
- match = filter_['pattern'] in attrs.get('title', '')
- take_action = match and filter_.get('action on') == 'match' \
- or not match and filter_.get('action on') == 'no match'
-
- if not take_action:
- continue
-
- if filter_.get('action') == 'mark as read':
- attrs['readed'] = True
- logger.warn("article %s will be created as read",
- attrs['link'])
- elif filter_.get('action') == 'mark as favorite':
- attrs['like'] = True
- logger.warn("article %s will be created as liked",
- attrs['link'])
-
- return super().create(**attrs)
bgstack15