Revision 0921ffe3
[#1254] Colonne d'état dans VigiBoard.
Enrichi la colonne de détails dans VigiBoard pour permettre le tri et le
filtrage. Ceci reprend le contenu du plugin "state" développé
précédemment.
Corrige également plusieurs problèmes dans le code du plugin state.
Change-Id: I095aff1ca6833a00d01485a383ae33689d7f247e
Refs: #1254.
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/1483
Tested-by: Build system <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Thomas BURGUIERE <thomas.burguiere@c-s.fr>
Reviewed-by: Francois POIROTTE <francois.poirotte@c-s.fr>
vigiboard/controllers/plugins/details.py | ||
---|---|---|
26 | 26 |
|
27 | 27 |
import urllib |
28 | 28 |
from tg import config, url, request |
29 |
from pylons.i18n import lazy_ugettext as l_ |
|
30 |
import tw.forms as twf |
|
29 | 31 |
from sqlalchemy.sql.expression import null as expr_null, union_all |
30 | 32 |
from sqlalchemy import func |
31 | 33 |
|
... | ... | |
37 | 39 |
StateName, Map, MapNode, MapNodeHost, MapGroup |
38 | 40 |
from vigilo.models.tables.secondary_tables import MAP_GROUP_TABLE |
39 | 41 |
|
40 |
from vigiboard.controllers.plugins import VigiboardRequestPlugin |
|
42 |
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS |
|
43 |
|
|
41 | 44 |
|
42 | 45 |
class PluginDetails(VigiboardRequestPlugin): |
43 | 46 |
""" |
... | ... | |
180 | 183 |
'initial_state': init_state, |
181 | 184 |
'id': event[0].idcorrevent, |
182 | 185 |
} |
186 |
|
|
187 |
def get_search_fields(self): |
|
188 |
states = DBSession.query(StateName.idstatename, StateName.statename |
|
189 |
).order_by(StateName.order.asc()).all() |
|
190 |
options = [('', u'')] + \ |
|
191 |
[( str(s.idstatename), s.statename ) for s in states] |
|
192 |
return [ |
|
193 |
twf.SingleSelectField( |
|
194 |
'state', |
|
195 |
label_text=l_('Current state'), |
|
196 |
options=options, |
|
197 |
validator=twf.validators.OneOf( |
|
198 |
dict(options).keys(), |
|
199 |
if_invalid=None, |
|
200 |
if_missing=None, |
|
201 |
), |
|
202 |
), |
|
203 |
] |
|
204 |
|
|
205 |
def handle_search_fields(self, query, search, state, subqueries): |
|
206 |
if state != ITEMS: |
|
207 |
return |
|
208 |
|
|
209 |
if search.get('state'): |
|
210 |
try: |
|
211 |
query.add_filter(Event.current_state == int(search['state'])) |
|
212 |
except (ValueError, TypeError): |
|
213 |
# On ignore silencieusement le critère de recherche erroné. |
|
214 |
pass |
|
215 |
|
|
216 |
def get_sort_criterion(self, query, column): |
|
217 |
if column == 'state': |
|
218 |
return Event.current_state |
|
219 |
return None |
|
220 |
|
Also available in: Unified diff