combo/combo/apps/wcs/__init__.py

73 lines
2.6 KiB
Python

# combo - content management system
# Copyright (C) 2016 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import hashlib
import django.apps
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _, pgettext_lazy
class AppConfig(django.apps.AppConfig):
name = 'combo.apps.wcs'
verbose_name = _('Forms')
def ready(self):
from combo.apps.search import engines
engines.register(self.get_search_engines)
def get_search_engines(self):
from .utils import get_wcs_services
services = get_wcs_services()
if not services:
return
engines = {
'tracking-code': {
'url': reverse('wcs-tracking-code-search') + '?q=%(q)s',
'label': _('Tracking Code'),
}
}
for key, service in services.items():
label = pgettext_lazy('user-forms', 'Forms')
if len(services.keys()) > 1:
label = pgettext_lazy('user-forms', 'Forms (%s)') % service['title']
engines['formdata:%s' % hashlib.md5(key).hexdigest()[:8]] = {
'url': service['url'] + 'api/forms/?NameID={{user_nameid}}&status=all&ignore-roles=on&q=%(q)s',
'label': label,
'signature': True,
'hit_url_template': '{% if readable %}{{ form_url_backoffice }}{% endif %}',
'hit_label_template': '{{ title }}',
'hit_description_template': '{{ form_digest|default:"" }}',
}
return engines
def get_before_urls(self):
from . import urls
return urls.urlpatterns
def hourly(self):
self.update_db_cache()
def update_db_cache(self):
from combo.data.models import CellBase
from .models import WcsFormCell, WcsCategoryCell, WcsFormsOfCategoryCell
for cell in CellBase.get_cells(
cell_filter=lambda x: x in (WcsFormCell, WcsCategoryCell, WcsFormsOfCategoryCell)):
cell.save()
default_app_config = 'combo.apps.wcs.AppConfig'