Projet

Général

Profil

« Précédent | Suivant » 

Révision 81411908

Ajouté par Jérôme Schneider il y a presque 10 ans

ressources: improved socialisation place search

Fixes #5127

Voir les différences:

calebasse/ressources/lookups.py
1 1
# -*- coding: utf-8 -*-
2 2
import itertools
3
import re
4

  
5
from django.db.models import Q
3 6

  
4 7
from calebasse.lookups import CalebasseLookup
5 8
from calebasse.personnes.models import Worker
......
61 64
class SchoolLookup(CalebasseLookup):
62 65
    model = School
63 66
    search_field = 'name'
67
    query_words = []
68

  
69
    def get_query(self, q, request):
70
        words = q.split()
71
        self.query_words = words
72
        lookups = [Q(display_name__icontains=word) for word in words]
73
        return School.objects.filter(*lookups)
64 74

  
65 75
    def get_result(self, obj):
66 76
        return self.format_item_display(obj)
67 77

  
68 78
    def format_match(self, obj):
69
        return self.format_item_display(obj)
79
        display = obj.display_name
80
        for word in self.query_words:
81
            pattern = re.compile(r"(%s)" % word, re.IGNORECASE)
82
            display = re.sub(pattern, r"<strong>\1</strong>", display)
83
        return display
70 84

  
71 85
    def format_item_display(self, obj):
72
        text = ''
73
        if obj.school_type.name != 'Inconnu':
74
            text = unicode(obj.school_type) + ' ' + obj.name
75
        else:
76
            text = obj.name
77
        if obj.address:
78
            text += " - "  + obj.address
79
        if obj.private:
80
            text += " (Privé)"
81
        else:
82
            text +=  " (Public)"
83
        return text
86
        return obj.display_name
84 87

  

Formats disponibles : Unified diff