inveniosoftware / invenio-app-rdm

Turn-key research data management platform.
https://inveniordm.docs.cern.ch
MIT License
108 stars 147 forks source link

publication date containing year 0000 breaks record #2309

Open dfdan opened 1 year ago

dfdan commented 1 year ago

app-rdm 11, recent build

Describe the bug

If a date range like 0000/2023 is entered, record will no longer render (in deposit or record view), a 500 error is thrown

Steps to Reproduce

  1. Make new draft
  2. Specify publicaiton date of 0000/2023
  3. Save draft
  4. error

Expected behavior

Ideally 0000 should be accepted (for historic documents of unclear provenance), or at least rejected

Screenshots (if applicable)

Stacktrace - [2023-07-19 15:19:53,334] ERROR in app: Exception on /uploads/kf7tq-t8314 [GET] Traceback (most recent call last): File "/srv/venv/test0/lib/python3.8/site-packages/flask/app.py", line 2529, in wsgi_app response = self.full_dispatch_request() File "/srv/venv/test0/lib/python3.8/site-packages/flask/app.py", line 1825, in full_dispatch_request rv = self.handle_user_exception(e) File "/srv/venv/test0/lib/python3.8/site-packages/flask/app.py", line 1823, in full_dispatch_request rv = self.dispatch_request() File "/srv/venv/test0/lib/python3.8/site-packages/flask/app.py", line 1799, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(*view_args) File "/srv/venv/test0/lib/python3.8/site-packages/flask_login/utils.py", line 290, in decorated_view return current_app.ensure_sync(func)(args, kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/invenio_app_rdm/records_ui/views/decorators.py", line 62, in view return f(kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/invenio_app_rdm/records_ui/views/decorators.py", line 245, in view return f(kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/invenio_app_rdm/records_ui/views/deposits.py", line 358, in deposit_edit record = ui_serializer.dump_obj(draft.to_dict()) File "/srv/venv/test0/lib/python3.8/site-packages/flask_resources/serializers/base.py", line 57, in dump_obj return self.object_schema_cls(context=self.schema_context).dump(obj) File "/srv/venv/test0/lib/python3.8/site-packages/flask_resources/parsers/schema.py", line 79, in dump obj[object_key] = Schema.dump(self, obj, kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/marshmallow/schema.py", line 557, in dump result = self._serialize(processed_obj, many=many) File "/srv/venv/test0/lib/python3.8/site-packages/marshmallow/schema.py", line 525, in _serialize value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute) File "/srv/venv/test0/lib/python3.8/site-packages/marshmallow/fields.py", line 344, in serialize return self._serialize(value, attr, obj, kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/marshmallow_utils/fields/babel.py", line 67, in _serialize return super()._serialize(self.format_value(value), attr, data, kwargs) File "/srv/venv/test0/lib/python3.8/site-packages/marshmallow_utils/fields/babel.py", line 121, in format_value return format_edtf(value, format=self._format, locale=self.locale) File "/srv/venv/test0/lib/python3.8/site-packages/babel_edtf/init.py", line 135, in format_edtf return _format_edtf0_interval_naive(edtf_level0, format, locale) File "/srv/venv/test0/lib/python3.8/site-packages/babel_edtf/init.py", line 159, in _format_edtf0_interval_naive dt_start = edtf_to_datetime(edtf_interval.lower, BOUND_LOWER).date() File "/srv/venv/test0/lib/python3.8/site-packages/babel_edtf/init.py", line 95, in edtf_to_datetime return struct_time_to_datetime(date) File "/srv/venv/test0/lib/python3.8/site-packages/edtf/convert.py", line 49, in struct_time_to_datetime return datetime(*st[:6]) ValueError: year 0 is out of range

Additional context

github-actions[bot] commented 1 year ago

This issue was automatically marked as stale.