web/views/basecontrollers.py
changeset 8056 8909800a8c51
parent 8016 1a1b23c37013
child 8084 e22c17e1710d
equal deleted inserted replaced
8055:368d8902e597 8056:8909800a8c51
    29                       AuthenticationError, typed_eid)
    29                       AuthenticationError, typed_eid)
    30 from cubicweb.utils import UStringIO, json, json_dumps
    30 from cubicweb.utils import UStringIO, json, json_dumps
    31 from cubicweb.uilib import exc_message
    31 from cubicweb.uilib import exc_message
    32 from cubicweb.selectors import authenticated_user, anonymous_user, match_form_params
    32 from cubicweb.selectors import authenticated_user, anonymous_user, match_form_params
    33 from cubicweb.mail import format_mail
    33 from cubicweb.mail import format_mail
    34 from cubicweb.web import Redirect, RemoteCallFailed, DirectResponse
    34 from cubicweb.web import Redirect, RemoteCallFailed, DirectResponse, facet
    35 from cubicweb.web.controller import Controller
    35 from cubicweb.web.controller import Controller
    36 from cubicweb.web.views import vid_from_rset, formrenderers
    36 from cubicweb.web.views import vid_from_rset, formrenderers
    37 
    37 
    38 try:
       
    39     from cubicweb.web import facet as facetbase
       
    40 except ImportError: # gae
       
    41     facetbase = None
       
    42 
    38 
    43 def jsonize(func):
    39 def jsonize(func):
    44     """decorator to sets correct content_type and calls `json_dumps` on
    40     """decorator to sets correct content_type and calls `json_dumps` on
    45     results
    41     results
    46     """
    42     """
   487             cb = page_data[cbname]
   483             cb = page_data[cbname]
   488         except KeyError:
   484         except KeyError:
   489             return None
   485             return None
   490         return cb(self._cw)
   486         return cb(self._cw)
   491 
   487 
   492     if facetbase is not None:
   488     @jsonize
   493         @jsonize
   489     def js_filter_build_rql(self, names, values):
   494         def js_filter_build_rql(self, names, values):
   490         form = self._rebuild_posted_form(names, values)
   495             form = self._rebuild_posted_form(names, values)
   491         self._cw.form = form
   496             self._cw.form = form
   492         builder = facet.FilterRQLBuilder(self._cw)
   497             builder = facetbase.FilterRQLBuilder(self._cw)
   493         return builder.build_rql()
   498             return builder.build_rql()
   494 
   499 
   495     @jsonize
   500         @jsonize
   496     def js_filter_select_content(self, facetids, rql, mainvar):
   501         def js_filter_select_content(self, facetids, rql, mainvar):
   497         # Union unsupported yet
   502             # Union unsupported yet
   498         select = self._cw.vreg.parse(self._cw, rql).children[0]
   503             select = self._cw.vreg.parse(self._cw, rql).children[0]
   499         filtered_variable = facet.get_filtered_variable(select, mainvar)
   504             filtered_variable = facetbase.get_filtered_variable(select, mainvar)
   500         facet.prepare_select(select, filtered_variable)
   505             facetbase.prepare_select(select, filtered_variable)
   501         update_map = {}
   506             update_map = {}
   502         for fid in facetids:
   507             for facetid in facetids:
   503             fobj = facet.get_facet(self._cw, fid, select, filtered_variable)
   508                 facet = facetbase.get_facet(self._cw, facetid, select, filtered_variable)
   504             update_map[fid] = fobj.possible_values()
   509                 update_map[facetid] = facet.possible_values()
   505         return update_map
   510             return update_map
       
   511 
   506 
   512     def js_unregister_user_callback(self, cbname):
   507     def js_unregister_user_callback(self, cbname):
   513         self._cw.unregister_callback(self._cw.pageid, cbname)
   508         self._cw.unregister_callback(self._cw.pageid, cbname)
   514 
   509 
   515     def js_unload_page_data(self):
   510     def js_unload_page_data(self):