def journal_detail(url_seg): journal = controllers.get_journal_by_url_seg(url_seg) if not journal: abort(404, _('Periódico não encontrado')) if not journal.is_public: abort(404, JOURNAL_UNPUBLISH + _(journal.unpublish_reason)) # todo: ajustar para que seja só noticias relacionadas ao periódico language = session.get('lang', get_locale()) news = controllers.get_latest_news_by_lang(language) # A ordenação padrão da função ``get_issues_by_jid``: "-year", "-volume", "order" issues = controllers.get_issues_by_jid(journal.id, is_public=True) # A lista de números deve ter mais do que 1 item para que possamos tem # anterior e próximo if len(issues) >= 2: previous_issue = issues[1] else: previous_issue = None # Press releases press_releases = controllers.get_press_releases({ 'journal': journal, 'language': language }) # Lista de seções # Mantendo sempre o idioma inglês para as seções na página incial do periódico if journal.last_issue and journal.current_status == "current": sections = [ section for section in journal.last_issue.sections if section.language == 'en' ] recent_articles = controllers.get_recent_articles_of_issue( journal.last_issue.iid, is_public=True) else: sections = [] recent_articles = [] if len(issues) > 0: latest_issue = issues[0] latest_issue_legend = descriptive_short_format( title=latest_issue.journal.title, short_title=latest_issue.journal.short_title, pubdate=str(latest_issue.year), volume=latest_issue.volume, number=latest_issue.number, suppl=latest_issue.suppl_text, language=language[:2].lower()) else: latest_issue = None latest_issue_legend = '' context = { 'next_issue': None, 'previous_issue': previous_issue, 'journal': journal, 'press_releases': press_releases, 'recent_articles': recent_articles, 'journal_study_areas': [ STUDY_AREAS.get(study_area.upper()) for study_area in journal.study_areas ], # o primiero item da lista é o último número. # condicional para verificar se issues contém itens 'last_issue': latest_issue, 'latest_issue_legend': latest_issue_legend, 'sections': sections if sections else None, 'news': news } return render_template("journal/detail.html", **context)
def test_get_recent_articles_of_issue(self): self._make_one(attrib={ '_id': '012ijs9y24', 'issue': '90210j83', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '2183ikos90', 'issue': '90210j83', 'type': 'article-commentary', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '012ijs9y14', 'issue': '90210j83', 'type': 'brief-report', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '2183ikoD90', 'issue': '90210j83', 'type': 'case-report', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '2183ikos9B', 'issue': '90210j83', 'type': 'rapid-communication', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '012ijs9y1B', 'issue': '90210j83', 'type': 'research-article', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '2183ikoD9F', 'issue': '90210j83', 'type': 'review-article', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '9298wjXX89', 'issue': '90210j83', 'journal': 'oak,ajimn1' }) self._make_one(attrib={ '_id': '9298wjXZ89', 'issue': '90210j83', 'journal': 'oak,ajimn1' }) result = controllers.get_recent_articles_of_issue( issue_iid='90210j83', is_public=True) self.assertEqual(len(result), 6) result = [article._id for article in result] expected = ['2183ikos90', '2183ikoD90', '2183ikos9B', '012ijs9y1B', '2183ikoD9F', '012ijs9y14'] self.assertEqual(set(result), set(expected))