profile: register users search engine (#26261)

This commit is contained in:
Frédéric Péters 2019-01-01 14:13:13 +01:00
parent 2dc33daf78
commit ceaca4edd1
2 changed files with 49 additions and 0 deletions

View File

@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
#
# combo - content management system
# Copyright (C) 2014-2018 Entr'ouvert
#
@ -23,4 +25,38 @@ class AppConfig(django.apps.AppConfig):
name = 'combo.profile'
verbose_name = _('Profile')
def ready(self):
from combo.apps.search import engines
engines.register(self.get_search_engines)
def get_search_engines(self):
from combo.data.models import Page
from django.conf import settings
user_page = Page.objects.filter(sub_slug__contains='<name_id>').first()
if not user_page:
return
user_page_base_url = user_page.get_online_url()
# return entry using first(&only) authentic (if it exists)
for key, service in settings.KNOWN_SERVICES.get('authentic', {}).items():
return {
'users': {
'url': service['url'] + 'api/users/?q=%(q)s',
'label': _('Users'),
'signature': True,
'data_key': 'results',
'hit_url_template': user_page_base_url + '{{uuid}}/',
'hit_label_template': '{{first_name}} {{last_name}}',
'hit_description_template':
'{{ email|default:"" }}'
'{% if phone %} 📞 {{ phone }}{% endif %}'
'{% if mobile %} 📱 {{ mobile }}{% endif %}'
'{% if address or zipcode or city %} 📨 {% endif %}'
'{% if address %} {{ address }}{% endif %}'
'{% if zipcode %} {{ zipcode }}{% endif %}'
'{% if city %} {{ city }}{% endif %}'
}
}
default_app_config = 'combo.profile.AppConfig'

View File

@ -373,3 +373,16 @@ def test_wcs_search_engines(app):
search_engines = engines.get_engines()
assert 'tracking-code' not in search_engines.keys()
assert len([x for x in search_engines.keys() if x.startswith('formdata:')]) == 0
def test_profile_search_engines(app):
search_engines = engines.get_engines()
assert 'users' not in search_engines.keys()
with override_settings(KNOWN_SERVICES={'authentic': {'default': {'title': 'authentic', 'url': 'https://authentic/'}}}):
search_engines = engines.get_engines()
assert 'users' not in search_engines.keys()
page = Page(slug='users', title='Users', sub_slug='(?P<name_id>[a-z0-9]+)')
page.save()
search_engines = engines.get_engines()
assert 'users' in search_engines.keys()