Skip to content
Snippets Groups Projects
Select Git revision
  • 6ee41b98fa885f3b9044d34200af18ca66769284
  • main default protected
  • OZG-6978-prevent-other-pages-from-being-called
  • OZG-8378-ods-heading
  • OZG-7986-mandat-anfragen
  • optimize-storybook
  • OZG-8405-Alfa-Bearbeiter-auswählen-und-entfernen-Design
  • OZG-8314-Alfa-Vorgang-Bearbeiter-Zuweisung-entfernen
  • testing-imports
  • storybook-improvements
  • OZG-7287-forward-saml-token
  • release-administration
  • OZG-8422-BenutzerSpeichern
  • release-info
  • release
  • OZG-7856_schadcode-scanner-e2e
  • OZG-7985-fix-sorting
  • OZG-8305-Create-webpack-sbom
  • tooltip-improvements
  • OZG-7714-UpgradeKeycloakDependencyTo25
  • OZG-8086-Admin-Datenanfrage-erstellen
  • 1.12.1-administration
  • 1.12.0-administration
  • 1.12.0-info
  • 2.27.0-alfa
  • 1.11.0-info
  • 1.11.0-administration
  • 2.26.0-alfa
  • 1.10.0-info
  • 1.10.0-administration
  • 2.25.0-alfa
  • 1.9.0-info
  • 1.9.0-administration
  • 2.24.0-alfa
  • 1.8.0-info
  • 1.8.0-administration
  • 2.23.0-alfa
  • 1.7.0-info
  • 1.7.0-administration
  • 2.22.0-alfa
  • 1.6.0-info
41 results

authentication.service.ts

Blame
  • search.py 3.07 KiB
    import ckanext.odsh.helpers as odsh_helpers
    
    def before_search(search_params):
        _update_facet_mincount(search_params)
        _update_daterange_query(search_params)
        return search_params
    
    def _update_facet_mincount(search_params):
        search_params.update({'facet.mincount': 0})
    
    def _update_daterange_query(search_params):
        start_date, end_date = _get_start_and_end_date(search_params)
        is_no_range = not start_date and not end_date
        if is_no_range:
            return search_params
        start_date_or_star = start_date or '*'
        end_date_or_star = end_date or '*'
        start_query, end_query = _get_start_and_end_query(start_date_or_star, end_date_or_star)
        is_enclosing_range = start_date and end_date and start_date < end_date
        if is_enclosing_range:
            enclosing_query = _get_enclosing_query(start_date_or_star, end_date_or_star)
        else:
            enclosing_query = ''
        open_end_query = _get_open_end_query(end_date_or_star)
        fq_preset = search_params.get('fq')
        fq = _combine_query(fq_preset, start_query, end_query, enclosing_query, open_end_query)
        search_params.update({'fq': fq})
    
    def _get_start_and_end_date(search_params):
        extras = search_params.get('extras')
        start_date_local, end_date_local = (
            extras.get(key)
            for key in ('ext_startdate', 'ext_enddate')
        )
        try:
            start_date, end_date = (
                odsh_helpers.extend_search_convert_local_to_utc_timestamp(date)
                for date in (start_date_local, end_date_local)
            )
        except ValueError:
            start_date = end_date = None
        return start_date, end_date
    
    def _get_start_and_end_query(start_date, end_date):
        start_query, end_query = (
            '+extras_temporal_{start_or_end}:[{start_date} TO {end_date}]'.format(
                start_or_end=__,
                start_date=start_date,
                end_date=end_date
            )
            for __ in ('start', 'end')
        )
        return start_query, end_query
    
    def _get_open_end_query(end_date):
        if end_date == '*':
            open_end_query = '(*:* NOT extras_temporal_end:[* TO *])'
        else:
            open_end_query = '((*:* NOT extras_temporal_end:[* TO *]) AND extras_temporal_start:[* TO {end_date}])'.format(
                end_date=end_date)
        return open_end_query
    
    def _get_enclosing_query(start_date, end_date):
        enclosing_query_start = 'extras_temporal_start:[* TO {start_date}]'.format(
            start_date=start_date)
        enclosing_query_end = 'extras_temporal_end:[{end_date} TO *]'.format(
            end_date=end_date)
        enclosing_query = ' OR ({enclosing_query_start} AND {enclosing_query_end})'.format(
            enclosing_query_start=enclosing_query_start, enclosing_query_end=enclosing_query_end)
        return enclosing_query
    
    def _combine_query(fq_preset, start_query, end_query, enclosing_query, open_end_query):
        combined_query = '{fq_preset} ({start_query} OR {end_query} {enclosing_query} OR {open_end_query})'.format(
            fq_preset=fq_preset, 
            start_query=start_query, 
            end_query=end_query, 
            enclosing_query=enclosing_query, 
            open_end_query=open_end_query
        )
        return combined_query