document search returning results

This commit is contained in:
Frédéric Péters 2011-11-05 12:16:21 +01:00
parent f9c9e8b903
commit ed124088ad
5 changed files with 119 additions and 171 deletions

View File

@ -18,6 +18,44 @@
<dt id="fieldsetlegend-documents">Documents parlementaires</dt>
<dd id="fieldset-documents">
<div tal:replace="structure view/document_search_form"/>
<div tal:define="Batch python:modules['Products.CMFPlone'].Batch;
mq python:modules['ZTUtils'].make_query;
url batch_base_url | request/ACTUAL_URL;
batchformkeys batchformkeys|nothing;
batchlinkparams python:batchformkeys and dict([(key, unicode(request.form[key]).encode('utf-8')) for key in batchformkeys if key in request]) or dict([(key, unicode(request.form[key]).encode('utf-8')) for key in request.form]);
search_results view/search_results;
b_size python:10; b_size request/b_size | b_size;
b_start python:0;b_start request/b_start | b_start;
search_batch python:Batch(search_results, b_size,
int(b_start), orphan=1);"
tal:condition="search_results">
<div id="resultsbox">
<span>Nombre de résultats : <span tal:replace="python: len(search_results)"/></span>
</div>
<div id="results">
<ul>
<tal:entry tal:repeat="item search_batch">
<li tal:define="oddrow repeat/item/odd; object python: item.getObject()" tal:attributes="class python: oddrow and 'odd' or 'even'"><div>
<h4><a href="#" tal:attributes="href item/getURL" tal:content="python: object.reftitle">Véronique Salvi</a></h4>
<p class="intitule" tal:content="item/Title"/>
<p class="authors" tal:condition="python: object.authors">Auteur(s) : <span tal:replace="python: object.get_authors_as_string()" tal:condition="python: object.authors" /></p>
</div></li>
</tal:entry>
</ul>
</div>
<div id="results-nav" tal:define="p search_batch/previous | nothing;
n search_batch/next | nothing">
<a tal:condition="p" id="results-nav-prev" href="#">Précédent</a>
<a tal:condition="n" id="results-nav-next" href="#">Suivant</a>
</div>
</div>
</dd>
<dt id="fieldset-legend-dossiers">Dossiers parlementaires</dt>
<dd id="fieldset-dossiers">

View File

@ -5,6 +5,7 @@ from plone.z3cform.layout import wrap_form
from Products.CMFCore.utils import getToolByName
from z3c.form.ptcompat import ViewPageTemplateFile
import z3c.form.interfaces
from z3c.relationfield.schema import RelationChoice, RelationList
from plone.formwidget.contenttree import ObjPathSourceBinder
@ -33,12 +34,29 @@ def possible_document_types(context):
terms.append(SimpleVocabulary.createTerm(doctype_id, doctype_id, doctype))
return SimpleVocabulary(terms)
@grok.provider(IContextSourceBinder)
def possible_dossier_types(context):
catalog = getToolByName(context, 'portal_catalog')
possible_dostypes = catalog.uniqueValuesFor('dostype')
terms = []
for dostype in possible_dostypes:
dostype_id = dostype.encode('ascii', 'replace')
terms.append(SimpleVocabulary.createTerm(dostype_id, dostype_id, dostype))
return SimpleVocabulary(terms)
def get_catalog_kwargs(context, data):
kw = {}
return kw
class IDocumentSearch(interface.Interface):
search_type = schema.TextLine(title=u'Search Type', default=u'document')
nodoc = schema.TextLine(title=_(u'Document Number'), required=False)
nosuite = schema.TextLine(title=_(u'Suite Number'), required=False)
doctype = schema.Set(title=_(u'Type'), required=False,
value_type=schema.Choice(values=[_(u'Lorem'), _(u'Ipsum')]))
doctype = schema.Choice(title=_(u'Type'), required=False,
source=possible_document_types)
#subjects =
ttitle = schema.TextLine(title=_(u'Title'), required=False)
text = schema.TextLine(title=_(u'Text'), required=False)
@ -53,10 +71,15 @@ class IDocumentSearch(interface.Interface):
class DocumentSearchForm(form.Form):
method = 'get'
fields = field.Fields(IDocumentSearch)
ignoreContext = True
template = ViewPageTemplateFile('form_templates/view_effectivesearch.pt')
def updateWidgets(self):
super(DocumentSearchForm, self).updateWidgets()
self.widgets['search_type'].mode = z3c.form.interfaces.HIDDEN_MODE
@button.buttonAndHandler(_(u'Search'))
def handleApply(self, action):
data, errors = self.extractData()
@ -69,8 +92,8 @@ class DocumentSearchForm(form.Form):
class IDossierSearch(interface.Interface):
nodos = schema.TextLine(title=_(u'Dossier Number'), required=False)
dostype = schema.Set(title=_(u'Type'), required=False,
value_type=schema.Choice(values=[_(u'Lorem'), _(u'Ipsum')]))
dostype = schema.Choice(title=_(u'Type'), required=False,
source=possible_dossier_types)
#subjects =
ttitle = schema.TextLine(title=_(u'Title'), required=False)
authors = RelationList(title=_(u'Authors'), default=[], required=False,
@ -84,6 +107,7 @@ class IDossierSearch(interface.Interface):
class DossierSearchForm(form.Form):
method = 'get'
fields = field.Fields(IDossierSearch)
ignoreContext = True
template = ViewPageTemplateFile('form_templates/view_dossier_search.pt')
@ -150,6 +174,7 @@ class IDocumentPfbSearch(interface.Interface):
class DocumentPfbSearchForm(form.Form):
method = 'get'
fields = field.Fields(IDocumentPfbSearch)
ignoreContext = True
template = ViewPageTemplateFile('form_templates/view_pfbdocsearch.pt')
@ -164,19 +189,62 @@ class DocumentPfbSearchForm(form.Form):
return
class IGlobalSearchForm(interface.Interface):
search_type = schema.TextLine(title=u'Search Type')
nodoc = schema.TextLine(title=_(u'Document Number'), required=False)
nosuite = schema.TextLine(title=_(u'Suite Number'), required=False)
doctype = schema.Choice(title=_(u'Type'), required=False,
source=possible_document_types)
nodos = schema.TextLine(title=_(u'Dossier Number'), required=False)
dostype = schema.Choice(title=_(u'Type'), required=False,
source=possible_dossier_types)
#subjects =
#subjects =
ttitle = schema.TextLine(title=_(u'Title'), required=False)
text = schema.TextLine(title=_(u'Text'), required=False)
authors = RelationList(title=_(u'Authors'), default=[], required=False,
value_type=RelationChoice(title=_(u'Author'),
source=ObjPathSourceBinder(
portal_type=['themis.datatypes.deputy'])))
# polgroups
# session
start = schema.Date(title=_(u'Start'), required=False)
end = schema.Date(title=_(u'End'), required=False)
class GlobalSearchForm(form.Form):
fields = field.Fields(IGlobalSearchForm)
ignoreContext = True
class SearchView(BrowserView):
def document_results(self):
f = DocumentPfbSearchForm(self.context, self.request)
def search_results(self):
f = GlobalSearchForm(self.context, self.request)
f.update()
data, errors = f.extractData()
catalog = getToolByName(self.context, 'portal_catalog')
kw = {}
if data.get('search_type') == 'document':
kw['portal_type'] = 'tabellio.documents.document'
elif data.get('search_type') == 'dossier':
kw['portal_type'] = 'tabellio.documents.dossier'
if data.get('ttitle'):
kw['Title'] = data.get('ttitle')
if data.get('nodoc'):
kw['nodoc'] = data.get('nodoc')
if data.get('nodos'):
kw['nodos'] = data.get('nodos')
if data.get('doctype'):
kw['doctype'] = possible_document_types(self.context).getTermByToken(data.get('doctype')).title
if data.get('dostype'):
kw['dostype'] = possible_dossier_types(self.context).getTermByToken(data.get('doctype')).title
if data.get('start') and data.get('end'):
kw['dateDoc'] = {'query': [data.get('start'), data.get('end')], 'range': 'minmax'}
elif data.get('start'):
@ -184,20 +252,20 @@ class SearchView(BrowserView):
elif data.get('end'):
kw['dateDoc'] = {'query': data.get('end'), 'range': 'max'}
kw['sort_on'] = 'dateDoc'
kw['sort_order'] = 'descending'
if data.get('sort_on') == 'Type':
kw['sort_on'] = 'doctype'
kw['sort_order'] = 'ascending'
elif data.get('sort_on') == 'Number':
kw['sort_on'] = 'no'
elif data.get('sort_on') == 'Session':
kw['sort_on'] = 'session'
kw['sort_order'] = 'descending'
kw['sort_order'] = 'ascending'
if not kw:
return []
return catalog(
portal_type=['tabellio.documents.document'],
**kw)
catalog = getToolByName(self.context, 'portal_catalog')
return catalog(**kw)
def document_pfb_search_form(self):
f = DocumentPfbSearchForm(self.context, self.request)

View File

@ -7,57 +7,5 @@
<metal:use use-macro="context/@@ploneform-macros/actions" />
</form>
<div id="resultsbox">
<span>De faux résultats pour le moment</span>
</div>
<div id="results">
<ul>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 123 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 124 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 125 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 126 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
</ul>
</div>
<div id="results-nav">
<a id="results-nav-prev" href="#">Précédent</a>
<a id="results-nav-next" href="#">Suivant</a>
<p id="results-nav-page">
<span class="label">Page n° :</span>
<strong>1</strong>
<span>2</span>
<span>3</span>
<span>3</span>
</p>
</div>
</html>

View File

@ -6,57 +6,4 @@
<metal:use use-macro="context/@@ploneform-macros/fields" />
<metal:use use-macro="context/@@ploneform-macros/actions" />
</form>
<div id="resultsbox">
<span>De faux résultats pour le moment</span>
</div>
<div id="results">
<ul>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 123 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 124 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 125 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 126 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
</ul>
</div>
<div id="results-nav">
<a id="results-nav-prev" href="#">Précédent</a>
<a id="results-nav-next" href="#">Suivant</a>
<p id="results-nav-page">
<span class="label">Page n° :</span>
<strong>1</strong>
<span>2</span>
<span>3</span>
<span>3</span>
</p>
</div>
</html>

View File

@ -7,57 +7,4 @@
<metal:use use-macro="context/@@ploneform-macros/actions" />
</form>
<div id="resultsbox">
<span>De faux résultats pour le moment</span>
</div>
<div id="results">
<ul>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 123 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 124 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="odd"><div>
<h4><a href="#">Proposition de décret - 125 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
<li class="even"><div>
<h4><a href="#">Proposition de décret - 126 (2010-2011) n° 1</a></h4>
<p>Proposition de décret visant à élargir la définition des primo-arrivants
dans l'enseignement de la Communauté française.</p>
<p><strong>Auteurs :</strong> Persoons Caroline, Bertiaux Françoise…</p>
<p><strong>Statut :</strong> Version définitive</p>
</div></li>
</ul>
</div>
<div id="results-nav">
<a id="results-nav-prev" href="#">Précédent</a>
<a id="results-nav-next" href="#">Suivant</a>
<p id="results-nav-page">
<span class="label">Page n° :</span>
<strong>1</strong>
<span>2</span>
<span>3</span>
<span>3</span>
</p>
</div>
</html>