add column to mail search results

This commit is contained in:
Frédéric Péters 2011-12-19 11:28:38 +01:00
parent 8305a87c00
commit 109e3fa018
4 changed files with 60 additions and 13 deletions

View File

@ -47,6 +47,21 @@ def docMeetingDateIndexer(obj):
grok.global_adapter(docMeetingDateIndexer, name="docMeetingDate")
@indexer(plone.dexterity.interfaces.IDexterityItem)
def mailCategoryTxtIndexer(obj):
if obj.portal_type not in ('courrier_entrant', 'courrier_sortant'):
return None
for attr in ('categorie_de_courrier',):
if not hasattr(obj, attr):
continue
if getattr(obj, attr):
return getattr(obj, attr)[0]
return None
grok.global_adapter(mailCategoryTxtIndexer, name="mailCategoryTxt")
def get_data_to_index(obj, data):
# if there is no path to text/plain, do nothing
transforms = getToolByName(obj, 'portal_transforms')
@ -86,7 +101,7 @@ def mail_dynamic_searchable_text_indexer(obj):
return obj.title + ' ' + get_data_to_index(obj, data)
grok.global_adapter(mail_dynamic_searchable_text_indexer, name='MailSearchableText')
grok.global_adapter(mail_dynamic_searchable_text_indexer, name='mailSearchableText')
@indexer(plone.dexterity.interfaces.IDexterityItem)
@ -108,7 +123,7 @@ def doc_dynamic_searchable_text_indexer(obj):
return obj.title + ' ' + get_data_to_index(obj, data)
grok.global_adapter(doc_dynamic_searchable_text_indexer, name='DocSearchableText')
grok.global_adapter(doc_dynamic_searchable_text_indexer, name='docSearchableText')
@indexer(plone.dexterity.interfaces.IDexterityItem)
@ -123,10 +138,17 @@ def contactIndexer(obj):
if not v:
continue
v = v[0]
return v
if ':' in v:
src = ContactsSource()
r = src.fastGetTitleByToken(obj, v)
if not type(r) is unicode:
r = unicode(r, 'utf-8')
return r
else:
return v
return None
grok.global_adapter(contactIndexer, name="MailContact")
grok.global_adapter(contactIndexer, name="mailContact")
@indexer(plone.dexterity.interfaces.IDexterityItem)
def contactFuzzyIndexer(obj):
@ -149,7 +171,7 @@ def contactFuzzyIndexer(obj):
return v
return None
grok.global_adapter(contactFuzzyIndexer, name="MailContactFuzzy")
grok.global_adapter(contactFuzzyIndexer, name="mailContactFuzzy")
@indexer(plone.dexterity.interfaces.IDexterityItem)
@ -236,4 +258,4 @@ def personsFuzzyIndexer(obj):
persons.append(item)
return ' '.join(persons)
grok.global_adapter(personsFuzzyIndexer, name='DocPersonsFuzzy')
grok.global_adapter(personsFuzzyIndexer, name='docPersonsFuzzy')

View File

@ -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;
">
<h1 class="documentFirstHeading">Recherche de courriers</h1>
@ -35,8 +36,12 @@
<table>
<tal:entry tal:repeat="item batch">
<tr tal:define="oddrow repeat/item/odd;" tal:attributes="class python: oddrow and 'odd' or 'even'">
<td class="type" tal:content="item/Type"></td>
<td class="date" tal:content="string: ${item/mailDate/day}/${item/mailDate/month}/${item/mailDate/year}"></td>
<td><a tal:attributes="href item/getURL" tal:content="item/Title"></a></td>
<td class="title"><a tal:attributes="href item/getURL" tal:content="item/Title"></a></td>
<td class="category" tal:content="item/mailCategoryTxt"></td>
<td class="contact" tal:content="item/mailContact"></td>
<td class="state" tal:content="python: states.get(item.review_state, item.review_state)"></td>
</tr>
</tal:entry>
</table>
@ -50,11 +55,24 @@
background: #eee;
}
.results table tr td {
padding-right: 1em;
}
td.type {
text-align: left;
width: 8em;
}
td.date {
text-align: right;
width: 7em;
padding-right: 1em;
}
td.category {
width: 15em;
}
</style>
<div tal:condition="python: len(results)">

View File

@ -136,3 +136,8 @@ class SearchView(BrowserView):
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

View File

@ -18,20 +18,20 @@
<indexed_attr value="mailDate"/>
</index>
<index name="mailContact" meta_type="FieldIndex">
<indexed_attr value="MailContact"/>
<indexed_attr value="mailContact"/>
</index>
<index name="mailContactFuzzy" meta_type="ZCTextIndex">
<indexed_attr value="MailContactFuzzy"/>
<indexed_attr value="mailContactFuzzy"/>
<extra name="index_type" value="Okapi BM25 Rank"/>
<extra name="lexicon_id" value="themis_lexicon"/>
</index>
<index name="mailSearchableText" meta_type="ZCTextIndex">
<indexed_attr value="MailSearchableText"/>
<indexed_attr value="mailSearchableText"/>
<extra name="index_type" value="Okapi BM25 Rank"/>
<extra name="lexicon_id" value="themis_lexicon"/>
</index>
<index name="docSearchableText" meta_type="ZCTextIndex">
<indexed_attr value="DocSearchableText"/>
<indexed_attr value="docSearchableText"/>
<extra name="index_type" value="Okapi BM25 Rank"/>
<extra name="lexicon_id" value="themis_lexicon"/>
</index>
@ -51,7 +51,7 @@
<indexed_attr value="matieres"/>
</index>
<index name="docPersonsFuzzy" meta_type="ZCTextIndex">
<indexed_attr value="DocPersonsFuzzy"/>
<indexed_attr value="docPersonsFuzzy"/>
<extra name="index_type" value="Okapi BM25 Rank"/>
<extra name="lexicon_id" value="themis_lexicon"/>
</index>
@ -61,6 +61,8 @@
<index name="docCommissions" meta_type="KeywordIndex">
<indexed_attr value="docCommissions"/>
</index>
<column value="mailContact"/>
<column value="mailCategoryTxt"/>
<column value="mailDate"/>
<column value="docDate"/>
<column value="docMeetingDate"/>