def issue_grid(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)) # idioma da sessão language = session.get('lang', get_locale()) # A ordenação padrão da função ``get_issues_by_jid``: "-year", "-volume", "-order" issues_data = controllers.get_issues_for_grid_by_jid(journal.id, is_public=True) latest_issue = issues_data['last_issue'] if latest_issue: 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_legend = None context = { 'journal': journal, 'next_issue': None, 'previous_issue': issues_data['previous_issue'], 'last_issue': issues_data['last_issue'], 'latest_issue_legend': latest_issue_legend, 'volume_issue': issues_data['volume_issue'], 'ahead': issues_data['ahead'], 'result_dict': issues_data['ordered_for_grid'], } return render_template("issue/grid.html", **context)
def test_descriptive_short_format(self): del (self.sample['elocation']) del (self.sample['fpage']) del (self.sample['lpage']) result = descriptive_short_format(**self.sample) self.assertEqual( 'Revista Mal-Estar Subjetivo, Volume: 67, Issue: 9 Supplement 3, Published: 2011', result)
def about_journal(url_seg): language = session.get('lang', get_locale()) 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)) # 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) latest_issue = issues[0] if issues else None if latest_issue: 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_legend = None # 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 page = controllers.get_page_by_journal_acron_lang(journal.acronym, language) context = { 'next_issue': None, 'previous_issue': previous_issue, 'journal': journal, 'latest_issue_legend': latest_issue_legend, 'last_issue': latest_issue, } if page: context['content'] = page.content if page.updated_at: context['page_updated_at'] = page.updated_at return render_template("journal/about.html", **context)
def issue_toc(url_seg, url_seg_issue): # idioma da sessão language = session.get('lang', get_locale()) section_filter = request.args.get('section', '', type=str) issue = controllers.get_issue_by_url_seg(url_seg, url_seg_issue) if issue and issue.journal: issue_legend = descriptive_short_format( title=issue.journal.title, short_title=issue.journal.short_title, pubdate=str(issue.year), volume=issue.volume, number=issue.number, suppl=issue.suppl_text, language=language[:2].lower()) if not issue: abort(404, _('Número não encontrado')) if not issue.is_public: abort(404, ISSUE_UNPUBLISH + _(issue.unpublish_reason)) if not issue.journal.is_public: abort(404, JOURNAL_UNPUBLISH + _(issue.journal.unpublish_reason)) journal = issue.journal articles = controllers.get_articles_by_iid(issue.iid, is_public=True) if articles: sections = list(articles.item_frequencies('section').keys()) sections = sorted([k for k in sections if k is not None]) else: sections = [] issues = controllers.get_issues_by_jid(journal.id, is_public=True) if section_filter != '': articles = articles.filter(section__iexact=section_filter) issue_list = [_issue for _issue in issues] previous_issue = utils.get_prev_issue(issue_list, issue) next_issue = utils.get_next_issue(issue_list, issue) for article in articles: article_text_languages = [doc['lang'] for doc in article.htmls] article_pdf_languages = [(doc['lang'], doc['url']) for doc in article.pdfs] setattr(article, "article_text_languages", article_text_languages) setattr(article, "article_pdf_languages", article_pdf_languages) context = { 'next_issue': next_issue, 'previous_issue': previous_issue, 'journal': journal, 'issue': issue, 'issue_legend': issue_legend, 'articles': articles, 'sections': sections, 'section_filter': section_filter, # o primiero item da lista é o último número. 'last_issue': issues[0] if issues else None } return render_template("issue/toc.html", **context)
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)