diff --git a/toardb/timeseries/crud.py b/toardb/timeseries/crud.py index 91a6c08029ec2b34614124337fefe0726320adbb..e55274f4cd554b3c3ecc6efbe4d4f0e833d88ff4 100644 --- a/toardb/timeseries/crud.py +++ b/toardb/timeseries/crud.py @@ -60,8 +60,13 @@ def get_timeseries(db: Session, timeseries_id: int, fields: str = None): pass return db_object - -def get_citation(db: Session, timeseries_id: int, datetime: dt.datetime = dt.datetime.now(dt.timezone.utc)): +# https://www.reddit.com/r/flask/comments/ypqk40/default_datetimenow_not_using_current_time/ +# dt.datetime.now(dt.timezone.utc) cannot be used as default value, since it will already be +# evaluated at the start of the worker process and **not** when actually accessing the data +# def get_citation(db: Session, timeseries_id: int, datetime: dt.datetime = dt.datetime.now(dt.timezone.utc)): +def get_citation(db: Session, timeseries_id: int, datetime: dt.datetime = None): + if not datetime: + datetime = dt.datetime.now(dt.timezone.utc) db_object = db.query(models.Timeseries).filter(models.Timeseries.id == timeseries_id).first() # there is a mismatch with additional_metadata PI = "unknown" @@ -91,7 +96,7 @@ def get_citation(db: Session, timeseries_id: int, datetime: dt.datetime = dt.dat station = get_stationmeta_by_id(db, station_id=db_object.station_id).name dataset_version = db_object.provider_version citation = f"{PI}: time series of {var} at {station}, accessed from the TOAR database on {datetime}" - if list_of_data_originators: + if attribution and list_of_data_originators: attribution = attribution.format(list_of_data_originators=list_of_data_originators) if dataset_version != 'N/A': citation += f", original dataset version {dataset_version}" diff --git a/toardb/timeseries/timeseries.py b/toardb/timeseries/timeseries.py index 0987515699a916c4a07d3ed2a403c50afff60162..c821b17816f44950719155e170e75be2dc00b2c6 100644 --- a/toardb/timeseries/timeseries.py +++ b/toardb/timeseries/timeseries.py @@ -54,7 +54,7 @@ def get_timeseries2(timeseries_id: int, db: Session = Depends(get_db)): #build citation text of one timeseries (known its ID) @router.get('/timeseries/citation/{timeseries_id}') -def get_citation(timeseries_id: int, datetime: dt.datetime = dt.datetime.now(dt.timezone.utc), db: Session = Depends(get_db)): +def get_citation(timeseries_id: int, datetime: dt.datetime = None, db: Session = Depends(get_db)): citation = crud.get_citation(db, timeseries_id=timeseries_id, datetime=datetime) return citation