def render(self, context): local_response = SimpleStringIO() output = run( context, local_response, self.plugin_name, self.method_name, method_kwargs = self.method_kwargs ) if output == None: content = local_response.getvalue() elif isinstance(output, basestring): content = output else: msg = ( "Error: Wrong output from inline Plugin!" " - It should be write into the response object and return None" " or return a basestring!" " - But %s.%s has returned: %s (%s)" ) % ( self.plugin_name, self.method_name, repr(output), type(output) ) raise AssertionError(msg) if not self.plugin_name in CSS_TAG_BLACKLIST: content = add_css_tag( context, content, self.plugin_name, self.method_name ) return content
def handle_command(request, page_id, module_name, method_name, url_args): """ handle a _command request """ current_page_obj = _get_page(request, page_id) context = _get_context(request, current_page_obj) local_response = SimpleStringIO() if url_args == "": url_args = () else: url_args = (url_args,) try: output = plugin_manager.handle_command( context, local_response, module_name, method_name, url_args ) except AccessDenied: if request.debug: # don't use errorhandling -> raise the prior error raise page_content = "[Permission Denied!]" else: if output == None: # Plugin/Module has retuned the locale StringIO response object page_content = local_response.getvalue() elif isinstance(output, basestring): page_content = output elif isinstance(output, HttpResponse): # e.g. send a file directly back to the client return output else: msg = ( "Error: Wrong output from Plugin!" " - It should be write into the response object" " or return a String/HttpResponse object!" " - But %s.%s has returned: %s (%s)" ) % ( module_name, method_name, escape(repr(output)), escape(str(type(output))) ) raise AssertionError(msg) # print module_name, method_name # print page_content # print "---" if page_content: # Add the CSS Info, but only if the plugin has returned content and # not when the normal cms page rendered. page_content = add_css_tag( context, page_content, module_name, method_name ) return _render_cms_page(request, context, page_content)