def widget_download_response(request, classname): """Retrieve a widget as a different format.""" method = request.GET.get("as", "svg") mimetype = { 'svg': "image/svg+xml", 'png': "image/png", 'csv': "text/csv", 'html': "text/html", }[method] widget_class = get_widget_class(classname) widget = widget_class() fn = getattr(widget, 'as_%s' % method) values = _getquery_to_dict(widget_class.options, request.GET) values = process_values(values, widget_class.options) response = HttpResponse(mimetype=mimetype) response['Content-Disposition'] = 'attachment; filename=%s_%s.%s' % ( classname, datetime.datetime.now(), method) try: fn(values, response) return response except NotImplementedError: return HttpResponse("Sorry that format is not available.", status=404)
def register_by_qualified_name(self, name): """Add the widget by name, if it isn't already there.""" if name in self._register: return self._register[name] = get_widget_class(name)