diff --git a/corpus/version.py b/corpus/version.py index 02a9f49..cf539a5 100644 --- a/corpus/version.py +++ b/corpus/version.py @@ -16,7 +16,7 @@ class Version(): version=corpus.__version__ date = '2020-09-10' - updated = '2023-11-18' + updated = '2023-11-19' doc_url="https://wiki.bitplan.com/index.php/ConferenceCorpus" chat_url="https://github.com/WolfgangFahl/ConferenceCorpus/discussions" diff --git a/corpus/web/cc_webserver.py b/corpus/web/cc_webserver.py index 88ade7f..eda2252 100644 --- a/corpus/web/cc_webserver.py +++ b/corpus/web/cc_webserver.py @@ -36,13 +36,10 @@ def __init__(self): self.event_series_api=EventSeriesAPI(self.lookup) @app.get('/eventseries/{name}') - def get_eventseries(name:str): - bks="" - reduce=False - markup_format="json" - - event_series_dict=self.event_series_api.getEventSeries(name, bks, reduce) - response=self.event_series_api.convertToRequestedFormat(name, event_series_dict, markup_format) + def get_eventseries(name: str, bks: str = "", reduce: bool = False, format: str = "json"): + # Use the parameters directly in the API calls + event_series_dict = self.event_series_api.getEventSeries(name, bks, reduce) + response = self.event_series_api.convertToRequestedFormat(name, event_series_dict, format) return response def setup_home(self): diff --git a/corpus/web/eventseries.py b/corpus/web/eventseries.py index 39baef8..bbf8df6 100644 --- a/corpus/web/eventseries.py +++ b/corpus/web/eventseries.py @@ -7,13 +7,13 @@ from ngwidgets.orjson_response import ORJSONResponse from fastapi.responses import FileResponse from tabulate import tabulate -from typing import Any,List +from typing import List from spreadsheet.spreadsheet import ExcelDocument from corpus.lookup import CorpusLookup from corpus.datasources.openresearch import OREvent, OREventSeries from corpus.eventseriescompletion import EventSeriesCompletion -from datetime import date,datetime +from ngwidgets.markup_header import MarkupHeader class EventSeriesAPI(): """ @@ -173,9 +173,14 @@ def convertToRequestedFormat(self, name: str, dictOfLods: dict, markup_format: s else: # Using tabulate for other formats (including HTML) - tabulated_content = tabulate([lod for lod in dictOfLods.values()], headers="keys", tablefmt=markup_format) + all_tables = "" + for source, lod in dictOfLods.items(): + if isinstance(lod, list): + table = tabulate(lod, headers="keys", tablefmt=markup_format) + table_header=MarkupHeader.get_markup(source, markup_format=markup_format, level=1) + all_tables += table_header +"\n"+ table media_type = "text/plain" if markup_format.lower() != "html" else "text/html" - return Response(content=tabulated_content, media_type=media_type) + return Response(content=all_tables, media_type=media_type) @dataclass class MetadataMappings: diff --git a/tests/test_restful_apis.py b/tests/test_restful_apis.py index 220b033..e52c488 100644 --- a/tests/test_restful_apis.py +++ b/tests/test_restful_apis.py @@ -50,4 +50,21 @@ def test_event_series_api(self): if debug: print(f"Event Count: {event_count}") self.assertEquals(expected_sources,sources) - self.assertTrue(expected_event_count<=event_count) \ No newline at end of file + self.assertTrue(expected_event_count<=event_count) + + def test_event_series_api_formats(self): + """ + test different markup formats + """ + test_series=[ + ("AISI","") + ] + debug=True + for name,needle in test_series: + for markup_format in ["github"]: + path=f"/eventseries/{name}?format={markup_format}" + markup=self.get_html(path) + if debug: + print(f"{markup_format}:") + print(markup) + \ No newline at end of file