示例#1
0
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)
示例#2
0
 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)