Пример #1
0
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)
Пример #2
0
    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))