mirror of
https://github.com/Cian-H/am-d-model.eu.git
synced 2025-12-22 21:41:57 +00:00
Added necessary class for new config
This commit is contained in:
@@ -39,7 +39,10 @@ from invenio_records_permissions.generators import (
|
||||
SystemProcess,
|
||||
)
|
||||
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 (
|
||||
FieldValueMapper,
|
||||
QueryParser,
|
||||
@@ -460,6 +463,62 @@ RDM_SORT_OPTIONS = {
|
||||
# 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 = {
|
||||
"access_status": {
|
||||
"facet": facets.access_status,
|
||||
|
||||
Reference in New Issue
Block a user