From c8bf1224fb60558f5eb6a3b8f1051ad1d6103f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 19 Dec 2011 12:20:51 +0100 Subject: [PATCH] add columns to doc search results --- themis/search/doc.pt | 20 +++++++++--- themis/search/doc.py | 6 ++++ themis/search/indexer.py | 36 +++++++++++++++++++--- themis/search/profiles/default/catalog.xml | 5 +++ 4 files changed, 58 insertions(+), 9 deletions(-) diff --git a/themis/search/doc.pt b/themis/search/doc.pt index 0fb2e8d..9d4cf16 100644 --- a/themis/search/doc.pt +++ b/themis/search/doc.pt @@ -17,6 +17,7 @@ b_start python:0;b_start request/b_start | b_start; results view/search_results; batch python:Batch(list(results), b_size, int(b_start), orphan=1); + states view/review_states; ">

Recherche de documents

@@ -33,10 +34,22 @@
+ + + + + + + + + - + + + +
SessionTitreCatégorieAuteurs / rapporteurs / orateursÉtat
@@ -50,9 +63,8 @@ background: #eee; } -td.date { - text-align: right; - width: 7em; +.results table tr th, +.results table tr td { padding-right: 1em; } diff --git a/themis/search/doc.py b/themis/search/doc.py index e7e08b3..231f32d 100644 --- a/themis/search/doc.py +++ b/themis/search/doc.py @@ -182,3 +182,9 @@ class SearchView(BrowserView): elif type(d[key]) is unicode: d[key] = d[key].encode('utf-8') return d + + def review_states(self): + d = {} + for label, id in self.context.portal_workflow.listWFStatesByTitle(): + d[id] = label + return d diff --git a/themis/search/indexer.py b/themis/search/indexer.py index dfc33c0..e1b9d77 100644 --- a/themis/search/indexer.py +++ b/themis/search/indexer.py @@ -60,6 +60,19 @@ def mailCategoryTxtIndexer(obj): grok.global_adapter(mailCategoryTxtIndexer, name="mailCategoryTxt") +@indexer(plone.dexterity.interfaces.IDexterityItem) +def docSessionIndexer(obj): + if not '(D)' in obj.Type(): + return None + for attr in ('session',): + if not hasattr(obj, attr): + continue + if getattr(obj, attr): + return getattr(obj, attr) + return None + +grok.global_adapter(docSessionIndexer, name='docSession') + def get_data_to_index(obj, data): @@ -228,10 +241,8 @@ def docCategoryIndexer(obj): return category grok.global_adapter(docCategoryIndexer, name="docCategory") -@indexer(plone.dexterity.interfaces.IDexterityItem) -def personsFuzzyIndexer(obj): - if not '(D)' in obj.Type(): - return None + +def get_doc_persons(obj): persons = [] src = ContactsSource() for attr in ('auteur', 'auteurs', 'rapporteurs', 'orateurs_seance', @@ -256,6 +267,21 @@ def personsFuzzyIndexer(obj): persons.append(r) else: persons.append(item) - return ' '.join(persons) + return persons + +@indexer(plone.dexterity.interfaces.IDexterityItem) +def personsFuzzyIndexer(obj): + if not '(D)' in obj.Type(): + return None + return ' '.join(get_doc_persons(obj)) grok.global_adapter(personsFuzzyIndexer, name='docPersonsFuzzy') + + +@indexer(plone.dexterity.interfaces.IDexterityItem) +def personsStrIndexer(obj): + if not '(D)' in obj.Type(): + return None + return ', '.join(get_doc_persons(obj)) + +grok.global_adapter(personsStrIndexer, name='docPersonsStr') diff --git a/themis/search/profiles/default/catalog.xml b/themis/search/profiles/default/catalog.xml index 0019971..8efc433 100644 --- a/themis/search/profiles/default/catalog.xml +++ b/themis/search/profiles/default/catalog.xml @@ -44,6 +44,9 @@ + + + @@ -67,4 +70,6 @@ + +