def user_article_info(user: User, article: Article, with_content=False, with_translations=True): from zeeguu_core.model import UserArticle prior_info = UserArticle.find(user, article) ua_info = article.article_info(with_content=with_content) if not prior_info: ua_info['starred'] = False ua_info['opened'] = False ua_info['liked'] = False ua_info['translations'] = [] return ua_info ua_info['starred'] = prior_info.starred is not None ua_info['opened'] = prior_info.opened is not None ua_info['liked'] = prior_info.liked if with_translations: translations = Bookmark.find_all_for_user_and_url(user, article.url) ua_info['translations'] = [ each.serializable_dictionary() for each in translations ] return ua_info
def article_opened(session, article_id, user): article = Article.query.filter_by(id=article_id).one() ua = UserArticle.find(user, article) if not ua: ua = UserArticle.find_or_create(session, user, article, opened=datetime.now()) ua.opened = datetime.now() session.add(ua) session.commit() log(f"{ua}")
def article_liked(session, article_id, user, like_value): from zeeguu_core.emailer.user_activity import send_notification_article_feedback article = Article.query.filter_by(id=article_id).one() ua = UserArticle.find(user, article) ua.liked = like_value session.add(ua) session.commit() log(f"{ua}") send_notification_article_feedback('Liked', user, article.title, article.url.as_string(), article.id)