summaryrefslogtreecommitdiffstats
path: root/combo/apps/wcs/__init__.py
blob: aede109efd3f1e0fb71296f151623d8f584aea56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 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.encoding import force_bytes
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(force_bytes(key)).hexdigest()[:8]] = {
                'url': service['url'] + 'api/forms/?NameID={{user_nameid}}&status=all&ignore-roles=on&include-anonymised=off&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'