app/soc/views/models/base.py
changeset 1796 5cd78a7aacdd
parent 1790 7655a46dcfa3
child 1801 747b0d1115ea
equal deleted inserted replaced
1795:336c35c82b87 1796:5cd78a7aacdd
    36 from soc.views.helper import forms
    36 from soc.views.helper import forms
    37 from soc.views.helper import redirects
    37 from soc.views.helper import redirects
    38 from soc.views.helper import responses
    38 from soc.views.helper import responses
    39 from soc.views import sitemap
    39 from soc.views import sitemap
    40 
    40 
       
    41 import soc.cache.logic
    41 import soc.logic
    42 import soc.logic
    42 import soc.logic.lists
    43 import soc.logic.lists
    43 import soc.views.helper.lists
    44 import soc.views.helper.lists
    44 import soc.views.helper.params
    45 import soc.views.helper.params
    45 
    46 
   613     content = helper.lists.getListContent(request, params, filter=filter)
   614     content = helper.lists.getListContent(request, params, filter=filter)
   614     contents = [content]
   615     contents = [content]
   615 
   616 
   616     return self._list(request, params, contents, page_name)
   617     return self._list(request, params, contents, page_name)
   617 
   618 
       
   619   def _getPickData(self, model, filter, logic):
       
   620     """Retrieves the pick data for this query.
       
   621 
       
   622     Args:
       
   623       model: the model that is being queried
       
   624       filter: the filters that apply
       
   625       logic: the logic that will be used for the query
       
   626     """
       
   627 
       
   628     query = logic.getQueryForFields(filter=filter)
       
   629     entities = logic.getAll(query)
       
   630     return entities
       
   631 
   618   @decorators.merge_params
   632   @decorators.merge_params
   619   @decorators.check_access
   633   @decorators.check_access
   620   def pick(self, request, acces_type, page_name=None, params=None):
   634   def pick(self, request, acces_type, page_name=None, params=None):
   621     """Displays a list page allowing the user to select an entity.
   635     """Displays a list page allowing the user to select an entity.
   622 
   636 
   640     filter = {}
   654     filter = {}
   641     for key in request.GET.keys():
   655     for key in request.GET.keys():
   642       # need to use getlist as we want to support multiple values
   656       # need to use getlist as we want to support multiple values
   643       filter[key] = request.GET.getlist(key)
   657       filter[key] = request.GET.getlist(key)
   644 
   658 
   645     query = logic.getQueryForFields(filter=filter)
   659     if params['cache_pick']:
   646     entities = logic.getAll(query)
   660       fun =  soc.cache.logic.cache(self._getPickData)
       
   661     else:
       
   662       fun = self._getPickData
       
   663 
       
   664     entities = fun(logic._model, filter, logic)
   647 
   665 
   648     data = [i.toDict() for i in entities]
   666     data = [i.toDict() for i in entities]
   649 
   667 
   650     return self.json(request, data)
   668     return self.json(request, data)
   651 
   669