本文整理汇总了Python中web.controllers.ArticleController类的典型用法代码示例。如果您正苦于以下问题:Python ArticleController类的具体用法?Python ArticleController怎么用?Python ArticleController使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ArticleController类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_menu
def get_menu():
categories_order = [0]
categories = {0: {'name': 'No category', 'id': 0}}
for cat in CategoryController(current_user.id).read().order_by('name'):
categories_order.append(cat.id)
categories[cat.id] = cat
unread = ArticleController(current_user.id).count_by_feed(readed=False)
for cat_id in categories:
categories[cat_id]['unread'] = 0
categories[cat_id]['feeds'] = []
feeds = {feed.id: feed for feed in FeedController(current_user.id).read()}
for feed_id, feed in feeds.items():
feed['created_stamp'] = timegm(feed.created_date.timetuple()) * 1000
feed['last_stamp'] = timegm(feed.last_retrieved.timetuple()) * 1000
feed['category_id'] = feed.category_id or 0
feed['unread'] = unread.get(feed.id, 0)
if not feed.filters:
feed['filters'] = []
if feed.icon_url:
feed['icon_url'] = url_for('icon.icon', url=feed.icon_url)
categories[feed['category_id']]['unread'] += feed['unread']
categories[feed['category_id']]['feeds'].append(feed_id)
return {'feeds': feeds, 'categories': categories,
'categories_order': categories_order,
'crawling_method': conf.CRAWLING_METHOD,
'max_error': conf.DEFAULT_MAX_ERROR,
'error_threshold': conf.ERROR_THRESHOLD,
'is_admin': current_user.is_admin,
'all_unread_count': sum(unread.values())}
开发者ID:blatinier,项目名称:JARR,代码行数:29,代码来源:home.py
示例2: populate_db
def populate_db():
db_create()
ucontr = UserController()
ccontr = CategoryController()
fcontr = FeedController()
acontr = ArticleController()
ccontr = CategoryController()
user1, user2 = [ucontr.create(login=name, email="%[email protected]" % name,
password=name)
for name in ["user1", "user2"]]
article_total = 0
for user in (user1, user2):
for i in range(3):
cat_id = None
if i:
cat_id = ccontr.create(user_id=user.id,
name="category%d" % i).id
feed = fcontr.create(link="feed%d" % i, user_id=user.id,
category_id=cat_id,
title="%s feed%d" % (user.login, i))
for j in range(3):
entry = "%s %s article%d" % (user.login, feed.title, j)
article_total += 1
acontr.create(entry_id=entry,
link='http://test.te/%d' % article_total,
feed_id=feed.id, user_id=user.id, category_id=cat_id,
title=entry, content="content %d" % article_total)
开发者ID:blatinier,项目名称:JARR,代码行数:28,代码来源:filler.py
示例3: feeds
def feeds():
"Lists the subscribed feeds in a table."
art_contr = ArticleController(g.user.id)
return render_template('feeds.html',
feeds=FeedController(g.user.id).read(),
unread_article_count=art_contr.count_by_feed(readed=False),
article_count=art_contr.count_by_feed())
开发者ID:bzero,项目名称:JARR,代码行数:7,代码来源:feed.py
示例4: list_
def list_():
"Lists the subscribed feeds in a table."
art_contr = ArticleController(g.user.id)
return render_template('categories.html',
categories=list(CategoryController(g.user.id).read()),
feeds_count=FeedController(g.user.id).count_by_category(),
unread_article_count=art_contr.count_by_category(readed=False),
article_count=art_contr.count_by_category())
开发者ID:bzero,项目名称:JARR,代码行数:8,代码来源:category.py
示例5: like
def like(article_id=None):
"""
Mark or unmark an article as favorites.
"""
art_contr = ArticleController(current_user.id)
article = art_contr.get(id=article_id)
art_contr = art_contr.update({'id': article_id},
{'like': not article.like})
return redirect(redirect_url())
开发者ID:JARR,项目名称:JARR,代码行数:9,代码来源:article.py
示例6: get_middle_panel
def get_middle_panel():
filters = _get_filters(request.args)
art_contr = ArticleController(g.user.id)
fd_hash = {feed.id: {'title': feed.title,
'icon_url': url_for('icon.icon', url=feed.icon_url)
if feed.icon_url else None}
for feed in FeedController(g.user.id).read()}
articles = art_contr.read(**filters).order_by(Article.date.desc())
return _articles_to_json(articles, fd_hash)
开发者ID:bzero,项目名称:JARR,代码行数:9,代码来源:views.py
示例7: get_article
def get_article(article_id):
contr = ArticleController(g.user.id)
article = contr.get(id=article_id).dump()
if not article['readed']:
contr.update({'id': article_id}, {'readed': True})
article['category_id'] = article['category_id'] or 0
feed = FeedController(g.user.id).get(id=article['feed_id'])
article['icon_url'] = url_for('icon.icon', url=feed.icon_url) \
if feed.icon_url else None
return jsonify(**article)
开发者ID:bzero,项目名称:JARR,代码行数:10,代码来源:views.py
示例8: get_article
def get_article(article_id, parse=False):
locale = get_locale()
contr = ArticleController(current_user.id)
article = contr.get(id=article_id)
if not article.readed:
article['readed'] = True
contr.update({'id': article_id}, {'readed': True})
article['category_id'] = article.category_id or 0
feed = FeedController(current_user.id).get(id=article.feed_id)
article['icon_url'] = url_for('icon.icon', url=feed.icon_url) \
if feed.icon_url else None
article['date'] = format_datetime(localize(article.date), locale=locale)
return article
开发者ID:JARR,项目名称:JARR,代码行数:13,代码来源:home.py
示例9: expire
def expire():
"""
Delete articles older than the given number of weeks.
"""
current_time = datetime.utcnow()
weeks_ago = current_time - timedelta(int(request.args.get('weeks', 10)))
art_contr = ArticleController(g.user.id)
query = art_contr.read(__or__={'date__lt': weeks_ago,
'retrieved_date__lt': weeks_ago})
count = query.count()
query.delete()
flash(gettext('%(count)d articles deleted', count=count), 'info')
return redirect(redirect_url())
开发者ID:bzero,项目名称:JARR,代码行数:14,代码来源:article.py
示例10: user
def user(user_id=None):
"""
See information about a user (stations, etc.).
"""
user = UserController().get(id=user_id)
if user is not None:
article_contr = ArticleController(user_id)
return render_template('/admin/user.html', user=user, feeds=user.feeds,
article_count=article_contr.count_by_feed(),
unread_article_count=article_contr.count_by_feed(readed=False))
else:
flash(gettext('This user does not exist.'), 'danger')
return redirect(redirect_url())
开发者ID:bzero,项目名称:JARR,代码行数:14,代码来源:admin.py
示例11: insert_database
async def insert_database(user, feed):
articles = await parse_feed(user, feed)
if None is articles:
return []
logger.debug('inserting articles for {}'.format(feed.title))
logger.info("Database insertion...")
new_articles = []
art_contr = ArticleController(user.id)
for article in articles:
existing_article_req = art_contr.read(feed_id=feed.id,
**extract_id(article))
exist = existing_article_req.count() != 0
if exist:
# if the article has been already retrieved, we only update
# the content or the title
logger.debug("Article %r (%r) already in the database.",
article['title'], article['link'])
existing_article = existing_article_req.first()
new_updated_date = None
try:
new_updated_date = dateutil.parser.parse(article['updated'])
except Exception as e:
print(e)#new_updated_date = existing_article.date
if None is existing_article.updated_date:
existing_article.updated_date = new_updated_date.replace(tzinfo=None)
if existing_article.updated_date.strftime('%Y-%m-%dT%H:%M:%S') != \
new_updated_date.strftime('%Y-%m-%dT%H:%M:%S'):
existing_article.updated_date = \
new_updated_date.replace(tzinfo=None)
if existing_article.title != article['title']:
existing_article.title = article['title']
content = get_article_content(article)
if existing_article.content != content:
existing_article.content = content
existing_article.readed = False
art_contr.update({'entry_id': existing_article.entry_id},
existing_article.dump())
continue
article = construct_article(article, feed)
try:
new_articles.append(art_contr.create(**article))
logger.info("New article % (%r) added.",
article['title'], article['link'])
except Exception:
logger.exception("Error when inserting article in database:")
continue
return new_articles
开发者ID:bzero,项目名称:JARR,代码行数:50,代码来源:classic_crawler.py
示例12: history
def history(user_id, year=None, month=None):
"""
Sort articles by year and month.
"""
articles_counter = Counter()
articles = ArticleController(user_id).read()
if None != year:
articles = articles.filter(sqlalchemy.extract('year', 'Article.date') == year)
if None != month:
articles = articles.filter(sqlalchemy.extract('month', 'Article.date') == month)
for article in articles.all():
if None != year:
articles_counter[article.date.month] += 1
else:
articles_counter[article.date.year] += 1
return articles_counter, articles
开发者ID:JARR,项目名称:JARR,代码行数:16,代码来源:misc_utils.py
示例13: management
def management():
"""
Display the management page.
"""
if request.method == 'POST':
if None != request.files.get('opmlfile', None):
# Import an OPML file
data = request.files.get('opmlfile', None)
if not misc_utils.allowed_file(data.filename):
flash(gettext('File not allowed.'), 'danger')
else:
try:
nb = import_opml(current_user.nickname, data.read())
if conf.CRAWLING_METHOD == "classic":
misc_utils.fetch(current_user.id, None)
flash(str(nb) + ' ' + gettext('feeds imported.'),
"success")
flash(gettext("Downloading articles..."), 'info')
except:
flash(gettext("Impossible to import the new feeds."),
"danger")
elif None != request.files.get('jsonfile', None):
# Import an account
data = request.files.get('jsonfile', None)
if not misc_utils.allowed_file(data.filename):
flash(gettext('File not allowed.'), 'danger')
else:
try:
nb = import_json(current_user.nickname, data.read())
flash(gettext('Account imported.'), "success")
except:
flash(gettext("Impossible to import the account."),
"danger")
else:
flash(gettext('File not allowed.'), 'danger')
nb_feeds = FeedController(current_user.id).read().count()
art_contr = ArticleController(current_user.id)
nb_articles = art_contr.read().count()
nb_unread_articles = art_contr.read(readed=False).count()
nb_categories = CategoryController(current_user.id).read().count()
nb_bookmarks = BookmarkController(current_user.id).read().count()
return render_template('management.html', user=current_user,
nb_feeds=nb_feeds, nb_articles=nb_articles,
nb_unread_articles=nb_unread_articles,
nb_categories=nb_categories,
nb_bookmarks=nb_bookmarks)
开发者ID:JARR,项目名称:JARR,代码行数:47,代码来源:user.py
示例14: insert_articles
async def insert_articles(queue, nḅ_producers=1):
"""Consumer coroutines.
"""
nb_producers_done = 0
while True:
item = await queue.get()
if item is None:
nb_producers_done += 1
if nb_producers_done == nḅ_producers:
print('All producers done.')
print('Process finished.')
break
continue
user, feed, articles = item
if None is articles:
logger.info('None')
articles = []
logger.info('Inserting articles for {}'.format(feed.link))
art_contr = ArticleController(user.id)
for article in articles:
new_article = await construct_article(article, feed)
try:
existing_article_req = art_contr.read(
user_id=user.id,
feed_id=feed.id,
entry_id=extract_id(article))
except Exception as e:
logger.exception("existing_article_req: " + str(e))
continue
exist = existing_article_req.count() != 0
if exist:
continue
# insertion of the new article
try:
art_contr.create(**new_article)
logger.info('New article added: {}'.format(new_article['link']))
except Exception:
logger.exception('Error when inserting article in database.')
continue
开发者ID:JARR,项目名称:JARR,代码行数:46,代码来源:default_crawler.py
示例15: article
def article(article_id=None):
"""
Presents the content of an article.
"""
article = ArticleController(g.user.id).get(id=article_id)
previous_article = article.previous_article()
if previous_article is None:
previous_article = article.source.articles[0]
next_article = article.next_article()
if next_article is None:
next_article = article.source.articles[-1]
return render_template('article.html',
head_titles=[clear_string(article.title)],
article=article,
previous_article=previous_article,
next_article=next_article)
开发者ID:bzero,项目名称:JARR,代码行数:17,代码来源:article.py
示例16: management
def management():
"""
Display the management page.
"""
if request.method == "POST":
if None != request.files.get("opmlfile", None):
# Import an OPML file
data = request.files.get("opmlfile", None)
if not utils.allowed_file(data.filename):
flash(gettext("File not allowed."), "danger")
else:
try:
nb = utils.import_opml(g.user.email, data.read())
if conf.CRAWLING_METHOD == "classic":
utils.fetch(g.user.email, None)
flash(str(nb) + " " + gettext("feeds imported."), "success")
flash(gettext("Downloading articles..."), "info")
except:
flash(gettext("Impossible to import the new feeds."), "danger")
elif None != request.files.get("jsonfile", None):
# Import an account
data = request.files.get("jsonfile", None)
if not utils.allowed_file(data.filename):
flash(gettext("File not allowed."), "danger")
else:
try:
nb = utils.import_json(g.user.email, data.read())
flash(gettext("Account imported."), "success")
except:
flash(gettext("Impossible to import the account."), "danger")
else:
flash(gettext("File not allowed."), "danger")
nb_feeds = FeedController(g.user.id).read().count()
art_contr = ArticleController(g.user.id)
nb_articles = art_contr.read().count()
nb_unread_articles = art_contr.read(readed=False).count()
return render_template(
"management.html",
user=g.user,
nb_feeds=nb_feeds,
nb_articles=nb_articles,
nb_unread_articles=nb_unread_articles,
)
开发者ID:bzero,项目名称:JARR,代码行数:44,代码来源:user.py
示例17: insert_database
async def insert_database(user, feed):
articles = await parse_feed(user, feed)
if None is articles:
return []
logger.debug('inserting articles for {}'.format(feed.title))
logger.info("Database insertion...")
new_articles = []
art_contr = ArticleController(user.id)
for article in articles:
existing_article_req = art_contr.read(feed_id=feed.id,
**extract_id(article))
exist = existing_article_req.count() != 0
if exist:
existing_article = existing_article_req.first()
is_updated = False
logger.debug("Article %r (%r) already in the database.",
article['title'], article['link'])
content = get_article_content(article)
if existing_article.title != article['title']:
existing_article.title = article['title']
is_updated = True
if existing_article.content != content:
existing_article.content = content
existing_article.readed = False
is_updated = True
if is_updated:
art_contr.update({'entry_id': existing_article.entry_id},
existing_article.dump())
continue
article = construct_article(article, feed.dump())
try:
new_articles.append(art_contr.create(**article))
logger.info("New article % (%r) added.",
article['title'], article['link'])
except Exception:
logger.exception("Error when inserting article in database:")
continue
return new_articles
开发者ID:blatinier,项目名称:JARR,代码行数:41,代码来源:classic_crawler.py
示例18: mark_as
def mark_as(new_value='read', feed_id=None, article_id=None):
"""
Mark all unreaded articles as read.
"""
readed = new_value == 'read'
art_contr = ArticleController(current_user.id)
filters = {'readed': not readed}
if feed_id is not None:
filters['feed_id'] = feed_id
message = 'Feed marked as %s.'
elif article_id is not None:
filters['id'] = article_id
message = 'Article marked as %s.'
else:
message = 'All article marked as %s.'
art_contr.update(filters, {"readed": readed})
flash(gettext(message % new_value), 'info')
if readed:
return redirect(redirect_url())
return redirect('home')
开发者ID:JARR,项目名称:JARR,代码行数:21,代码来源:article.py
示例19: get_article
def get_article(article_id, parse=False):
locale = get_locale()
contr = ArticleController(current_user.id)
article = contr.get(id=article_id)
if not article.readed:
article['readed'] = True
contr.update({'id': article_id}, {'readed': True})
article['category_id'] = article.category_id or 0
feed = FeedController(current_user.id).get(id=article.feed_id)
article['icon_url'] = url_for('icon.icon', url=feed.icon_url) \
if feed.icon_url else None
readability_available = bool(current_user.readability_key
or conf.PLUGINS_READABILITY_KEY)
article['date'] = format_datetime(localize(article.date), locale=locale)
article['readability_available'] = readability_available
if parse or (not article.readability_parsed
and feed.readability_auto_parse and readability_available):
try:
new_content = readability.parse(article.link,
current_user.readability_key
or conf.PLUGINS_READABILITY_KEY)
except Exception as error:
flash("Readability failed with %r" % error, "error")
article['readability_parsed'] = False
else:
article['readability_parsed'] = True
article['content'] = clean_urls(new_content, article['link'])
new_attr = {'readability_parsed': True, 'content': new_content}
contr.update({'id': article['id']}, new_attr)
return article
开发者ID:jaesivsm,项目名称:JARR,代码行数:30,代码来源:home.py
示例20: user_stream
def user_stream(per_page, nickname=None):
"""
Display the stream of a user (list of articles of public feed).
"""
user_contr = UserController()
user = user_contr.get(nickname=nickname)
if not user.is_public_profile:
if current_user.is_authenticated and current_user.id == user.id:
flash(gettext('You must set your profile to public.'), 'info')
return redirect(url_for('user.profile'))
category_id = int(request.args.get('category_id', 0))
category = CategoryController().read(id=category_id).first()
# Load the public feeds
filters = {}
filters['private'] = False
if category_id:
filters['category_id'] = category_id
feeds = FeedController().read(**filters).all()
# Re-initializes the filters to load the articles
filters = {}
filters['feed_id__in'] = [feed.id for feed in feeds]
if category:
filters['category_id'] = category_id
articles = ArticleController(user.id).read_light(**filters)
# Server-side pagination
page, per_page, offset = get_page_args(per_page_parameter='per_page')
pagination = Pagination(page=page, total=articles.count(),
css_framework='bootstrap3',
search=False, record_name='articles',
per_page=per_page)
return render_template('user_stream.html', user=user,
articles=articles.offset(offset).limit(per_page),
category=category,
pagination=pagination)
开发者ID:JARR,项目名称:JARR,代码行数:39,代码来源:user.py
注:本文中的web.controllers.ArticleController类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论