mirror of
https://github.com/Cian-H/am-d-model.eu.git
synced 2025-12-23 14:01:56 +00:00
Added necessary class for new config
This commit is contained in:
@@ -39,7 +39,10 @@ from invenio_records_permissions.generators import (
|
|||||||
SystemProcess,
|
SystemProcess,
|
||||||
)
|
)
|
||||||
from invenio_records_resources.services.custom_fields import TextCF
|
from invenio_records_resources.services.custom_fields import TextCF
|
||||||
from invenio_records_resources.services.records.facets.facets import TermsFacet
|
from invenio_records_resources.services.records.facets.facets import (
|
||||||
|
LabelledFacetMixin,
|
||||||
|
TermsFacet,
|
||||||
|
)
|
||||||
from invenio_records_resources.services.records.queryparser import (
|
from invenio_records_resources.services.records.queryparser import (
|
||||||
FieldValueMapper,
|
FieldValueMapper,
|
||||||
QueryParser,
|
QueryParser,
|
||||||
@@ -460,6 +463,62 @@ RDM_SORT_OPTIONS = {
|
|||||||
# value_labels={"true": _("Yes"), "false": _("No")},
|
# value_labels={"true": _("Yes"), "false": _("No")},
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
|
||||||
|
class DateHistogramFacet(LabelledFacetMixin, dsl.DateHistogramFacet):
|
||||||
|
"""Date Range Facet
|
||||||
|
|
||||||
|
facets = {
|
||||||
|
'publication_date': DateRangeFacet(
|
||||||
|
field='dates',
|
||||||
|
interval='year',
|
||||||
|
format='yyyy'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
"""Show only years with at least 1 document."""
|
||||||
|
kwargs.setdefault("min_doc_count", 1)
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def get_value_filter(self, filter_value):
|
||||||
|
"""Overriding this function to cast string dates to datetime"""
|
||||||
|
|
||||||
|
for interval_type in ("calendar_interval", "fixed_interval"):
|
||||||
|
if interval_type in self._params:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
interval_type = "interval"
|
||||||
|
|
||||||
|
# dealing with a range
|
||||||
|
try:
|
||||||
|
if "--" in filter_value:
|
||||||
|
start, end = [
|
||||||
|
datetime.strptime(year, "%Y") for year in filter_value.split("--")
|
||||||
|
]
|
||||||
|
end = self.DATE_INTERVALS[self._params[interval_type]](end)
|
||||||
|
else:
|
||||||
|
start = datetime.strptime(filter_value, "%Y")
|
||||||
|
end = self.DATE_INTERVALS[self._params[interval_type]](start)
|
||||||
|
except ValueError:
|
||||||
|
start = 0
|
||||||
|
end = 1
|
||||||
|
|
||||||
|
# swap them
|
||||||
|
if start > end:
|
||||||
|
start, end = end, start
|
||||||
|
|
||||||
|
return dsl.query.Range(
|
||||||
|
_expand__to_dot=False,
|
||||||
|
**{
|
||||||
|
self._params["field"]: {
|
||||||
|
"gte": start,
|
||||||
|
"lt": end,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
RDM_FACETS = {
|
RDM_FACETS = {
|
||||||
"access_status": {
|
"access_status": {
|
||||||
"facet": facets.access_status,
|
"facet": facets.access_status,
|
||||||
|
|||||||
Reference in New Issue
Block a user