def _list(self, request, params, contents, page_name, context=None): """Returns the list page for the specified contents. Args: request: the standard Django HTTP request object params: a dict with params for this View contents: a list of content dicts page_name: the page name displayed in templates as page and header title context: the context for this page Params usage: list_template: The list_template value is used as template for to display the list of all entities for this View. """ context = dicts.merge(context, helper.responses.getUniversalContext(request)) helper.responses.useJavaScript(context, params['js_uses_all']) context['page_name'] = page_name context['list'] = soc.logic.lists.Lists(contents) context['list_msg'] = params.get('list_msg', None) context['no_lists_msg'] = params.get('no_lists_msg', None) template = params['list_template'] return helper.responses.respond(request, template, context)
def _constructResponse(self, request, entity, context, form, params, template=None): """Updates the context and returns a response for the specified arguments. Args: request: the django request object entity: the entity that is used and set in the context context: the context to be used form: the form that will be used and set in the context params: a dict with params for this View template: if specified, this template is Params usage: name: The name value is used to set the entity_type value in the context so that the template can refer to it. name_plural: same as name, but used to set entity_type_plural name_short: same as name, but used to set entity_type_short url_name: same as name, but used to set entity_type_url edit_template: The edit_template value is used as template when there is an existing entity to display the edit page for the specified entity. create_template: similar to edit_template, but is used when there is no existing entity. """ logic = params['logic'] suffix = entity.key().id_or_name() if entity else None context['form'] = form context['entity'] = entity context['entity_suffix'] = suffix context['entity_type'] = params['name'] context['entity_type_plural'] = params['name_plural'] context['entity_type_short'] = params['name_short'] context['entity_type_url'] = params['url_name'] context['cancel_redirect'] = params.get('cancel_redirect') context['return_url'] = request.path if entity: # when creating, the entity does not exist. context['is_deletable'] = logic.isDeletable(entity) if params.get('export_content_type') and entity: context['export_link'] = redirects.getExportRedirect(entity, params) if not template: if entity: template = params['edit_template'] else: template = params['create_template'] self._editContext(request, context) # remove the seed from the context before dispatching to Django context.pop('seed', None) return helper.responses.respond(request, template, context)
def pick(self, request, acces_type, page_name=None, params=None): """Displays a list page allowing the user to select an entity. After having selected an entity, the user is redirected to the return_url as specified in the GET args. Params usage: The params dictionary is passed to self.select, refer to its docstring for details on how it uses it. Args: request: the standard Django HTTP request object access_type : the name of the access type which should be checked page_name: the page name displayed in templates as page and header title params: a dict with params for this View """ logic = params['logic'] # convert to a regular dict filter = {} for key in request.GET.keys(): # need to use getlist as we want to support multiple values filter[key] = request.GET.getlist(key) if params['cache_pick']: fun = soc.cache.logic.cache(self._getData) else: fun = self._getData order = [] entities = fun(logic.getModel(), filter, order, logic) key_order = params.get('cache_pick_order') data = [i.toDict(key_order) for i in entities] return self.json(request, data)