Révision 81411908
Ajouté par Jérôme Schneider il y a presque 10 ans
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
ressources: improved socialisation place search
Fixes #5127