From 554c1b877ec87bb50d4f7b2df8bd6b9bf23a5bcf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 12:58:01 +0000 Subject: [PATCH 1/4] Initial plan From 8a96741e92b50937125e71761e6017c0c1c581e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 13:05:43 +0000 Subject: [PATCH 2/4] feat: add reusable CSV/XLS export utility and download routes to journal page classes - Create core/home/utils/export_journals.py with reusable get_scielo_journals_data, generate_csv_response, and generate_xls_response functions - Add RoutablePageMixin and download-csv/download-xls routes to ListPageJournal, ListPageJournalByPublisher, and ListPageJournalByCategory - Refactor existing standalone download views to use the utility functions - Update download_button_csv_xls.html template to use routablepageurl tags - Add tests for generate_csv_response and generate_xls_response - Update existing tests to import from new utility location Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com> Agent-Logs-Url: https://github.com/scieloorg/core/sessions/6c34ec03-b2a2-4ba6-b03f-32ba5018f3cc --- core/home/models.py | 39 +++++++- core/home/tests.py | 57 ++++++++++-- core/home/utils/__init__.py | 0 core/home/utils/export_journals.py | 87 ++++++++++++++++++ core/home/views.py | 90 ++----------------- .../home/include/download_button_csv_xls.html | 5 +- 6 files changed, 188 insertions(+), 90 deletions(-) create mode 100644 core/home/utils/__init__.py create mode 100644 core/home/utils/export_journals.py diff --git a/core/home/models.py b/core/home/models.py index 7befa852f..acb5ada91 100755 --- a/core/home/models.py +++ b/core/home/models.py @@ -18,6 +18,11 @@ from wagtailcaptcha.models import WagtailCaptchaEmailForm from collection.models import Collection +from core.home.utils.export_journals import ( + generate_csv_response, + generate_xls_response, + get_scielo_journals_data, +) from core.home.utils.get_social_networks import get_social_networks from journal.choices import STUDY_AREA from journal.models import OwnerHistory, SciELOJournal @@ -221,7 +226,7 @@ def get_context(self, request, *args, **kwargs): return context -class ListPageJournal(Page): +class ListPageJournal(RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -236,8 +241,18 @@ def get_context(self, request, *args, **kwargs): _default_context(context) return context + @re_path(r"^download-csv/$", name="download_csv") + def download_csv(self, request): + journals_data = get_scielo_journals_data() + return generate_csv_response(journals_data) -class ListPageJournalByPublisher(Page): + @re_path(r"^download-xls/$", name="download_xls") + def download_xls(self, request): + journals_data = get_scielo_journals_data() + return generate_xls_response(journals_data) + + +class ListPageJournalByPublisher(RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -282,6 +297,16 @@ def get_context(self, request, *args, **kwargs): context["parent_page"] = get_page_about() return context + @re_path(r"^download-csv/$", name="download_csv") + def download_csv(self, request): + journals_data = get_scielo_journals_data() + return generate_csv_response(journals_data) + + @re_path(r"^download-xls/$", name="download_xls") + def download_xls(self, request): + journals_data = get_scielo_journals_data() + return generate_xls_response(journals_data) + class ListPageJournalByCategory(RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): @@ -301,6 +326,16 @@ def get_context(self, request, *args, **kwargs): context["categories"] = slugs_to_category_code return context + @re_path(r"^download-csv/$", name="download_csv") + def download_csv(self, request): + journals_data = get_scielo_journals_data() + return generate_csv_response(journals_data) + + @re_path(r"^download-xls/$", name="download_xls") + def download_xls(self, request): + journals_data = get_scielo_journals_data() + return generate_xls_response(journals_data) + @re_path(r"^(?P[\w-]+)/$", name="list_journal_by_category") def journals_by_category(self, request, category=None): current_lang = request.LANGUAGE_CODE diff --git a/core/home/tests.py b/core/home/tests.py index 19b77133c..89dab1a68 100644 --- a/core/home/tests.py +++ b/core/home/tests.py @@ -6,7 +6,11 @@ from core.users.models import User from journal.models import Journal, SciELOJournal -from core.home.views import _get_scielo_journals_data +from core.home.utils.export_journals import ( + generate_csv_response, + generate_xls_response, + get_scielo_journals_data, +) class TestGetScieloJournalsData(TestCase): @@ -30,7 +34,7 @@ def setUp(self): def test_scielo_url_does_not_have_double_http_prefix(self): """URL must not contain 'http://http://' when domain already has http://""" - data = _get_scielo_journals_data() + data = get_scielo_journals_data() self.assertTrue(len(data) > 0) for item in data: self.assertNotIn("http://http://", item["scielo_url"]) @@ -38,7 +42,7 @@ def test_scielo_url_does_not_have_double_http_prefix(self): def test_scielo_url_is_well_formed(self): """URL must be a valid scielo.php URL with the correct domain""" - data = _get_scielo_journals_data() + data = get_scielo_journals_data() self.assertEqual(len(data), 1) expected_url = ( "http://www.scielo.org.pe/scielo.php?script=sci_serial" @@ -50,7 +54,7 @@ def test_scielo_url_strips_trailing_slash_from_domain(self): """Trailing slash in domain must not produce double slash in URL""" self.collection.domain = "http://www.scielo.org.pe/" self.collection.save() - data = _get_scielo_journals_data() + data = get_scielo_journals_data() self.assertEqual(len(data), 1) self.assertNotIn("//scielo.php", data[0]["scielo_url"]) @@ -58,7 +62,50 @@ def test_scielo_url_with_https_domain(self): """URL must be correct when domain uses https://""" self.collection.domain = "https://www.scielo.br" self.collection.save() - data = _get_scielo_journals_data() + data = get_scielo_journals_data() self.assertEqual(len(data), 1) self.assertTrue(data[0]["scielo_url"].startswith("https://www.scielo.br/")) self.assertNotIn("https://https://", data[0]["scielo_url"]) + + +class TestGenerateCsvResponse(TestCase): + def test_csv_response_content_type(self): + response = generate_csv_response([]) + self.assertEqual(response["Content-Type"], "text/csv") + + def test_csv_response_has_attachment_header(self): + response = generate_csv_response([]) + self.assertIn("attachment", response["Content-Disposition"]) + self.assertIn(".csv", response["Content-Disposition"]) + + def test_csv_response_contains_headers(self): + response = generate_csv_response([]) + content = response.content.decode("utf-8") + self.assertIn("journals", content) + self.assertIn("scielo_url", content) + self.assertIn("publisher", content) + + def test_csv_response_contains_data(self): + data = [ + { + "title": "Test Journal", + "scielo_url": "http://example.com/journal", + "owner": "Test Publisher", + } + ] + response = generate_csv_response(data) + content = response.content.decode("utf-8") + self.assertIn("Test Journal", content) + self.assertIn("http://example.com/journal", content) + self.assertIn("Test Publisher", content) + + +class TestGenerateXlsResponse(TestCase): + def test_xls_response_content_type(self): + response = generate_xls_response([]) + self.assertEqual(response["Content-Type"], "application/vnd.ms-excel") + + def test_xls_response_has_attachment_header(self): + response = generate_xls_response([]) + self.assertIn("attachment", response["Content-Disposition"]) + self.assertIn(".xls", response["Content-Disposition"]) diff --git a/core/home/utils/__init__.py b/core/home/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/core/home/utils/export_journals.py b/core/home/utils/export_journals.py new file mode 100644 index 000000000..6ef07453f --- /dev/null +++ b/core/home/utils/export_journals.py @@ -0,0 +1,87 @@ +import csv +import logging + +import xlwt +from django.http import HttpResponse +from django.utils import timezone + +from journal.models import SciELOJournal + +logger = logging.getLogger(__name__) + +HEADERS = ["journals", "scielo_url", "publisher"] + + +def get_scielo_journals_data(): + try: + scielo_journals = SciELOJournal.objects.values( + "journal__title", + "collection__domain", + "journal__owner_history__institution__institution__institution_identification__name", + "issn_scielo", + ) + + formatted_data = [] + for journal in scielo_journals: + title = journal.get("journal__title", "") + issn_scielo = journal.get("issn_scielo", "") + domain = journal.get("collection__domain", "") + owner = journal.get( + "journal__owner_history__institution__institution__institution_identification__name", + "", + ) + scielo_url = ( + f"{domain.rstrip('/')}/scielo.php?script=sci_serial&pid={issn_scielo}&lng=en" + ) + formatted_data.append( + { + "title": title, + "scielo_url": scielo_url, + "owner": owner, + } + ) + return formatted_data + except Exception as e: + logger.error(f"Error fetching scielo journals data: {e}") + return [] + + +def generate_csv_response(journals_data): + date = timezone.now().strftime("%Y-%m-%d") + filename = f"journals_{date}.csv" + response = HttpResponse(content_type="text/csv") + response["Content-Disposition"] = f'attachment; filename="{filename}"' + try: + writer = csv.writer(response) + writer.writerow(HEADERS) + for journal in journals_data: + writer.writerow( + [journal.get("title"), journal.get("scielo_url"), journal.get("owner")] + ) + logger.info(f"Generated CSV file with: {len(journals_data)} journals") + except Exception as e: + logger.error(f"Error generating CSV file: {e}") + response = HttpResponse("Error generating file", status=500) + return response + + +def generate_xls_response(journals_data): + date = timezone.now().strftime("%Y-%m-%d") + filename = f"journals_{date}.xls" + response = HttpResponse(content_type="application/vnd.ms-excel") + response["Content-Disposition"] = f'attachment; filename="{filename}"' + try: + wb = xlwt.Workbook(encoding="utf-8") + ws = wb.add_sheet("journals") + for col, header in enumerate(HEADERS): + ws.write(0, col, header) + for row, journal in enumerate(journals_data, start=1): + ws.write(row, 0, journal.get("title")) + ws.write(row, 1, journal.get("scielo_url")) + ws.write(row, 2, journal.get("owner")) + wb.save(response) + logger.info(f"Generated XLS file with: {len(journals_data)} journals") + except Exception as e: + logger.error(f"Error generating XLS file: {e}") + response = HttpResponse("Error generating file", status=500) + return response diff --git a/core/home/views.py b/core/home/views.py index e05bf415f..34adad79c 100644 --- a/core/home/views.py +++ b/core/home/views.py @@ -1,14 +1,15 @@ -import csv import logging import feedparser -import xlwt from django.http import HttpResponse, JsonResponse -from django.utils import timezone from django.utils.translation import get_language from django.views.decorators.http import require_GET -from journal.models import SciELOJournal +from core.home.utils.export_journals import ( + generate_csv_response, + generate_xls_response, + get_scielo_journals_data, +) logger = logging.getLogger(__name__) @@ -56,84 +57,11 @@ def youtube_feed_json(request): return JsonResponse({"posts": posts}) -def _get_scielo_journals_data(): - try: - scielo_journals = SciELOJournal.objects.values( - "journal__title", - "collection__domain", - "journal__owner_history__institution__institution__institution_identification__name", - "issn_scielo", - ) - - formatted_data = [] - for journal in scielo_journals: - title = journal.get("journal__title", "") - issn_scielo = journal.get("issn_scielo", "") - domain = journal.get("collection__domain", "") - owner = journal.get( - "journal__owner_history__institution__institution__institution_identification__name", - "", - ) - scielo_url = ( - f"{domain.rstrip('/')}/scielo.php?script=sci_serial&pid={issn_scielo}&lng=en" - ) - formatted_data.append( - { - "title": title, - "scielo_url": scielo_url, - "owner": owner, - } - ) - return formatted_data - except Exception as e: - logger.error(f"Error fetching scielo journals data: {e}") - return [] - - def download_xls_journals_page_scielo_org(request): - date = timezone.now().strftime("%Y-%m-%d") - filename = f"journals_{date}.xls" - - response = HttpResponse(content_type="application/vnd.ms-excel") - response["Content-Disposition"] = f'attachment; filename="{filename}"' - try: - wb = xlwt.Workbook(encoding="utf-8") - ws = wb.add_sheet("journals") - headers = ["journals", "scielo_url", "publisher"] - - for col, header in enumerate(headers): - ws.write(0, col, header) - - journals_data = _get_scielo_journals_data() - for row, journal in enumerate(journals_data, start=1): - ws.write(row, 0, journal.get("title")) - ws.write(row, 1, journal.get("scielo_url")) - ws.write(row, 2, journal.get("owner")) - wb.save(response) - logger.info(f"Generated XLS file with: {len(journals_data)} journals") - except Exception as e: - logger.error(f"Error generating XLS file: {e}") - response = HttpResponse("Error generating file", status=500) - return response + journals_data = get_scielo_journals_data() + return generate_xls_response(journals_data) def download_csv_journals_page_scielo_org(request): - date = timezone.now().strftime("%Y-%m-%d") - filename = f"journals_{date}.csv" - response = HttpResponse(content_type="text/csv") - response["Content-Disposition"] = f'attachment; filename="{filename}"' - try: - writer = csv.writer(response) - headers = ["journals", "scielo_url", "publisher"] - writer.writerow(headers) - journals_data = _get_scielo_journals_data() - for journal in journals_data: - writer.writerow( - [journal.get("title"), journal.get("scielo_url"), journal.get("owner")] - ) - logger.info(f"Generated CSV file with: {len(journals_data)} journals") - except Exception as e: - logger.error(f"Error generating CSV file: {e}") - response = HttpResponse("Error generating file", status=500) - - return response + journals_data = get_scielo_journals_data() + return generate_csv_response(journals_data) diff --git a/core/templates/home/include/download_button_csv_xls.html b/core/templates/home/include/download_button_csv_xls.html index 8d77bd75b..ffac604cb 100644 --- a/core/templates/home/include/download_button_csv_xls.html +++ b/core/templates/home/include/download_button_csv_xls.html @@ -1,13 +1,14 @@ +{% load wagtailroutable_tags %} \ No newline at end of file From 1c4933d2ac6fcb41add3bfa070e466905d0741f9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 13:08:00 +0000 Subject: [PATCH 3/4] refactor: extract JournalDownloadMixin and improve error messages - Create JournalDownloadMixin to eliminate code duplication across three page classes - Improve error messages in generate_csv_response and generate_xls_response to specify the format Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com> Agent-Logs-Url: https://github.com/scieloorg/core/sessions/6c34ec03-b2a2-4ba6-b03f-32ba5018f3cc --- core/home/models.py | 48 ++++++++++-------------------- core/home/utils/export_journals.py | 4 +-- 2 files changed, 17 insertions(+), 35 deletions(-) diff --git a/core/home/models.py b/core/home/models.py index acb5ada91..c4a964aec 100755 --- a/core/home/models.py +++ b/core/home/models.py @@ -84,6 +84,18 @@ def _default_context(context): context["page_about"] = get_page_about() +class JournalDownloadMixin: + @re_path(r"^download-csv/$", name="download_csv") + def download_csv(self, request): + journals_data = get_scielo_journals_data() + return generate_csv_response(journals_data) + + @re_path(r"^download-xls/$", name="download_xls") + def download_xls(self, request): + journals_data = get_scielo_journals_data() + return generate_xls_response(journals_data) + + def get_page_about(): try: locale = _get_current_locale() @@ -226,7 +238,7 @@ def get_context(self, request, *args, **kwargs): return context -class ListPageJournal(RoutablePageMixin, Page): +class ListPageJournal(JournalDownloadMixin, RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -241,18 +253,8 @@ def get_context(self, request, *args, **kwargs): _default_context(context) return context - @re_path(r"^download-csv/$", name="download_csv") - def download_csv(self, request): - journals_data = get_scielo_journals_data() - return generate_csv_response(journals_data) - - @re_path(r"^download-xls/$", name="download_xls") - def download_xls(self, request): - journals_data = get_scielo_journals_data() - return generate_xls_response(journals_data) - -class ListPageJournalByPublisher(RoutablePageMixin, Page): +class ListPageJournalByPublisher(JournalDownloadMixin, RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -297,18 +299,8 @@ def get_context(self, request, *args, **kwargs): context["parent_page"] = get_page_about() return context - @re_path(r"^download-csv/$", name="download_csv") - def download_csv(self, request): - journals_data = get_scielo_journals_data() - return generate_csv_response(journals_data) - - @re_path(r"^download-xls/$", name="download_xls") - def download_xls(self, request): - journals_data = get_scielo_journals_data() - return generate_xls_response(journals_data) - -class ListPageJournalByCategory(RoutablePageMixin, Page): +class ListPageJournalByCategory(JournalDownloadMixin, RoutablePageMixin, Page): def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) @@ -326,16 +318,6 @@ def get_context(self, request, *args, **kwargs): context["categories"] = slugs_to_category_code return context - @re_path(r"^download-csv/$", name="download_csv") - def download_csv(self, request): - journals_data = get_scielo_journals_data() - return generate_csv_response(journals_data) - - @re_path(r"^download-xls/$", name="download_xls") - def download_xls(self, request): - journals_data = get_scielo_journals_data() - return generate_xls_response(journals_data) - @re_path(r"^(?P[\w-]+)/$", name="list_journal_by_category") def journals_by_category(self, request, category=None): current_lang = request.LANGUAGE_CODE diff --git a/core/home/utils/export_journals.py b/core/home/utils/export_journals.py index 6ef07453f..237f115c1 100644 --- a/core/home/utils/export_journals.py +++ b/core/home/utils/export_journals.py @@ -61,7 +61,7 @@ def generate_csv_response(journals_data): logger.info(f"Generated CSV file with: {len(journals_data)} journals") except Exception as e: logger.error(f"Error generating CSV file: {e}") - response = HttpResponse("Error generating file", status=500) + response = HttpResponse("Error generating CSV file", status=500) return response @@ -83,5 +83,5 @@ def generate_xls_response(journals_data): logger.info(f"Generated XLS file with: {len(journals_data)} journals") except Exception as e: logger.error(f"Error generating XLS file: {e}") - response = HttpResponse("Error generating file", status=500) + response = HttpResponse("Error generating XLS file", status=500) return response From 05eed2ed6457ab77f1c8cc3e1ba6475620eb816d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 23 Mar 2026 16:54:11 +0000 Subject: [PATCH 4/4] fix: download endpoints respect request filters (search_term, start_with_letter, tab) - get_scielo_journals_data() now accepts optional Q filters parameter - JournalDownloadMixin uses template method get_export_filters(request) - Each page class overrides get_export_filters with its own filter logic - Download template forwards current query parameters to download URLs - Added tests for filtered data retrieval Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com> Agent-Logs-Url: https://github.com/scieloorg/core/sessions/426fb4c6-9c21-4ab8-a3a9-21eaa4055951 --- core/home/models.py | 40 ++++++++++++++++++- core/home/tests.py | 33 +++++++++++++++ core/home/utils/export_journals.py | 7 +++- .../home/include/download_button_csv_xls.html | 4 +- 4 files changed, 78 insertions(+), 6 deletions(-) diff --git a/core/home/models.py b/core/home/models.py index c4a964aec..ad1a5ceca 100755 --- a/core/home/models.py +++ b/core/home/models.py @@ -85,14 +85,19 @@ def _default_context(context): class JournalDownloadMixin: + def get_export_filters(self, request): + return None + @re_path(r"^download-csv/$", name="download_csv") def download_csv(self, request): - journals_data = get_scielo_journals_data() + filters = self.get_export_filters(request) + journals_data = get_scielo_journals_data(filters) return generate_csv_response(journals_data) @re_path(r"^download-xls/$", name="download_xls") def download_xls(self, request): - journals_data = get_scielo_journals_data() + filters = self.get_export_filters(request) + journals_data = get_scielo_journals_data(filters) return generate_xls_response(journals_data) @@ -239,6 +244,14 @@ def get_context(self, request, *args, **kwargs): class ListPageJournal(JournalDownloadMixin, RoutablePageMixin, Page): + def get_export_filters(self, request): + search_term = request.GET.get("search_term", "") + starts_with_letter = request.GET.get("start_with_letter", "") + active_or_discontinued = list(request.GET.get("tab", "")) + return default_journal_filter( + search_term, starts_with_letter, active_or_discontinued + ) + def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -255,6 +268,21 @@ def get_context(self, request, *args, **kwargs): class ListPageJournalByPublisher(JournalDownloadMixin, RoutablePageMixin, Page): + def get_export_filters(self, request): + search_term = request.GET.get("search_term", "") + starts_with_letter = request.GET.get("start_with_letter", "") + active_or_discontinued = list(request.GET.get("tab", "")) + filters = Q(status__in=SCIELO_STATUS_CHOICES) + if search_term: + filters &= Q(journal__title__icontains=search_term) | Q( + journal__owner_history__institution__institution__institution_identification__name__icontains=search_term + ) + if starts_with_letter: + filters &= Q(journal__title__istartswith=starts_with_letter) + if active_or_discontinued: + filters &= Q(status__in=active_or_discontinued) + return filters + def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) search_term = request.GET.get("search_term", "") @@ -301,6 +329,14 @@ def get_context(self, request, *args, **kwargs): class ListPageJournalByCategory(JournalDownloadMixin, RoutablePageMixin, Page): + def get_export_filters(self, request): + search_term = request.GET.get("search_term", "") + starts_with_letter = request.GET.get("start_with_letter", "") + active_or_discontinued = list(request.GET.get("tab", "")) + return default_journal_filter( + search_term, starts_with_letter, active_or_discontinued + ) + def get_context(self, request, *args, **kwargs): context = super().get_context(request, *args, **kwargs) diff --git a/core/home/tests.py b/core/home/tests.py index 89dab1a68..9239da5b5 100644 --- a/core/home/tests.py +++ b/core/home/tests.py @@ -1,5 +1,6 @@ from unittest.mock import patch +from django.db.models import Q from django.test import TestCase from collection.models import Collection @@ -67,6 +68,38 @@ def test_scielo_url_with_https_domain(self): self.assertTrue(data[0]["scielo_url"].startswith("https://www.scielo.br/")) self.assertNotIn("https://https://", data[0]["scielo_url"]) + def test_get_scielo_journals_data_with_title_filter(self): + """Filters should be applied to the queryset""" + other_journal = Journal.objects.create( + creator=self.user, + title="Other Journal", + ) + SciELOJournal.objects.create( + issn_scielo="1111-1111", + collection=self.collection, + journal=other_journal, + journal_acron="other", + ) + filters = Q(journal__title__icontains="Peru") + data = get_scielo_journals_data(filters) + self.assertEqual(len(data), 1) + self.assertEqual(data[0]["title"], "Test Journal Peru") + + def test_get_scielo_journals_data_without_filters_returns_all(self): + """Without filters, all journals should be returned""" + other_journal = Journal.objects.create( + creator=self.user, + title="Other Journal", + ) + SciELOJournal.objects.create( + issn_scielo="1111-1111", + collection=self.collection, + journal=other_journal, + journal_acron="other", + ) + data = get_scielo_journals_data() + self.assertEqual(len(data), 2) + class TestGenerateCsvResponse(TestCase): def test_csv_response_content_type(self): diff --git a/core/home/utils/export_journals.py b/core/home/utils/export_journals.py index 237f115c1..03303ad3e 100644 --- a/core/home/utils/export_journals.py +++ b/core/home/utils/export_journals.py @@ -12,9 +12,12 @@ HEADERS = ["journals", "scielo_url", "publisher"] -def get_scielo_journals_data(): +def get_scielo_journals_data(filters=None): try: - scielo_journals = SciELOJournal.objects.values( + qs = SciELOJournal.objects.all() + if filters is not None: + qs = qs.filter(filters) + scielo_journals = qs.values( "journal__title", "collection__domain", "journal__owner_history__institution__institution__institution_identification__name", diff --git a/core/templates/home/include/download_button_csv_xls.html b/core/templates/home/include/download_button_csv_xls.html index ffac604cb..97f498b52 100644 --- a/core/templates/home/include/download_button_csv_xls.html +++ b/core/templates/home/include/download_button_csv_xls.html @@ -5,10 +5,10 @@ \ No newline at end of file