add column to mail search results
This commit is contained in:
parent
8305a87c00
commit
109e3fa018
|
@ -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')
|
||||
|
|
|
@ -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)">
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"/>
|
||||
|
|
Reference in New Issue