Example #1
0
def edit_widget(request, **kwargs):
    try:
        if request.POST:
            "get form populated with widget options"
            widget = Widget.objects.get(id=kwargs.get("id"))
            options_form = WidgetOptionsForm(widget.widget_class, \
                                request.POST)
            if options_form.is_valid():
                if options_form.save(widget=widget):
                    data = {'valid': True, 'form': 'saved'}
            elif options_form.errors:
                data = ajaxerror(options_form)
        else:
            "This is a request to get a form for widget"
            ctx = RequestContext(request)
            "get widget form populated with widget options" 
            widget = Widget.objects.get(id=kwargs.get("id")) 
            if widget.hasOptions:
                initial = dict(("option_%s" % option.name, option.value) \
                             for option in widget.options.all())
                options_form = WidgetOptionsForm(widget.widget_class, \
                                data=initial)

                o = get_template("widget/options.html")
                ctx.update({'options_form': options_form})

                options = o.render(ctx)
                data = {'valid': False, 'type': 'ef', 'data': options}
            else:
                data = {'valid': True, 'type': 'nf'}

        return HttpResponse(json_serializer.encode(data), \
                            mimetype='application/json')
    except Exception:
        raise
Example #2
0
def widget_list(request):
    """
    Renders widget options based on supplied widget
    class or displays a select screen
    """
    data = {}
    #widget class exists so render widget options if any
    ctx = RequestContext(request)
    if request.user.is_superuser:
        widget_form = WidgetForm(request.POST, restrict_list=None)
    else:
        widget_form = WidgetForm(request.POST)
    widget_class = request.POST["widget_class"]
    widget_class_obj = get_widget(widget_class)


    #Widget has options, lets generate the options form
    options_form = WidgetOptionsForm(widget_class)
    if widget_form.is_valid():
        extra_js = []
        o = get_template("widget/options.html")
        ctx.update({'options_form': options_form,
                    'widget_class': widget_class_obj})
        model_form = get_model_form_for_widget(widget_class_obj)
        if model_form:
            ctx.update({'model_form': model_form})
            extra_js += model_form.extra_js

        options = o.render(ctx)
        extra_js += options_form.extra_js
        data = {'valid': False, 'type': 'fi', 'data': options, 'extra_js': extra_js}
    else:
        data = ajaxerror(widget_form)
    return HttpResponse(json_serializer.encode(data), mimetype='application/json')
Example #3
0
def invoice(request, order_id, template="shop/order_invoice.html"):
    """
    Display a plain text invoice for the given order. The order must
    belong to the user which is checked via session or ID if
    authenticated, or if the current user is staff.
    """
    lookup = {"id": order_id}
    if not request.user.is_authenticated():
        lookup["key"] = request.session.session_key
    elif not request.user.is_staff:
        lookup["user_id"] = request.user.id
    order = get_object_or_404(Order, **lookup)
    context = {"order": order}
    context.update(order.details_as_dict())
    request_context = RequestContext(request, context)
    html = get_template(template, request_context).render(request_context)
    if request.GET.get("format") == "pdf":
        response = HttpResponse(mimetype="application/pdf")
        name = slugify("%s-invoice-%s" % (settings.SITE_TITLE, order.id))
        response["Content-Disposition"] = "attachment; filename=%s.pdf" % name
        import ho.pisa
        ho.pisa.CreatePDF(html, response)
    else:
        response = HttpResponse(html)
    return response
Example #4
0
def widget_list(request):
    """
    Renders widget options based on supplied widget
    class or displays a select screen
    """
    data = {}
    #widget class exists so render widget options if any
    ctx = RequestContext(request)
    if request.user.is_superuser:
        widget_form = WidgetForm(request.POST, restrict_list=None)
    else:
        widget_form = WidgetForm(request.POST)
    widget_class = request.POST["widget_class"]
    widget_class_obj = get_widget(widget_class)

    #Widget has options, lets generate the options form
    options_form = WidgetOptionsForm(widget_class)
    if widget_form.is_valid():
        extra_js = []
        o = get_template("widget/options.html")
        ctx.update({'options_form': options_form,
                    'widget_class': widget_class_obj})
        model_form = get_model_form_for_widget(widget_class_obj)
        if model_form:
            ctx.update({'model_form': model_form})
            extra_js += model_form.extra_js

        options = o.render(ctx)
        extra_js += options_form.extra_js
        data = {'valid': False, 'type': 'fi', 'data': options, 'extra_js': extra_js}
    else:
        data = ajaxerror(widget_form)
    return HttpResponse(json_serializer.encode(data), mimetype='application/json')
Example #5
0
def invoice(request, order_id, template="shop/order_invoice.html"):
    """
    Display a plain text invoice for the given order. The order must
    belong to the user which is checked via session or ID if
    authenticated, or if the current user is staff.
    """
    lookup = {"id": order_id}
    if not request.user.is_authenticated():
        lookup["key"] = request.session.session_key
    elif not request.user.is_staff:
        lookup["user_id"] = request.user.id
    order = get_object_or_404(Order, **lookup)
    context = {"order": order}
    context.update(order.details_as_dict())
    request_context = RequestContext(request, context)
    html = get_template(template, request_context).render(request_context)
    if request.GET.get("format") == "pdf":
        response = HttpResponse(mimetype="application/pdf")
        name = slugify("%s-invoice-%s" % (settings.SITE_TITLE, order.id))
        response["Content-Disposition"] = "attachment; filename=%s.pdf" % name
        import ho.pisa

        ho.pisa.CreatePDF(html, response)
    else:
        response = HttpResponse(html)
    return response
Example #6
0
def edit_widget(request, **kwargs):
    try:

        widget = Widget.objects.get(id=kwargs.get("id"))
        widget_class_obj = get_widget(widget.widget_class)
        containsModel = hasModel(widget_class_obj)

        if request.POST:
            "get form populated with widget options"
            options_form = WidgetOptionsForm(widget.widget_class, request.POST)
            if options_form.is_valid():
                if options_form.save(widget=widget):
                    data = {'valid': True, 'form': 'saved'}
            elif options_form.errors:
                data = ajaxerror(options_form)
            if containsModel:
                obj = get_widget_model_queryset(widget, widget_class_obj)
                model_form = get_model_form_for_widget(widget_class_obj,
                                                       {"POST": request.POST, "FILES": request.FILES}, instance=obj,
                                                       widget=widget)
                try:
                    if model_form.is_valid():
                        saved_obj = model_form.save()
                        data.update({"obj": saved_obj.id})
                    elif model_form.errors:
                        model_data = ajaxerror(model_form)
                        errors = dict(data.get("errors", {}), **model_data["errors"])
                        data = {'valid': False, "errors": errors}
                except Exception:
                    raise
        else:
            "This is a request to get a form for widget"
            ctx = RequestContext(request)
            "get widget form populated with widget options"

            initial = {'status': widget.status}
            if widget.hasOptions:
                initial.update(dict(("option_%s" % option.name, option.value), for option in widget.options.all()))
            options_form = WidgetOptionsForm(widget.widget_class,  data=initial)
            extra_js = []
            o = get_template("widget/options.html")
            ctx.update({'options_form': options_form})
            if containsModel:
                obj = get_widget_model_queryset(widget, widget_class_obj)
                model_form = get_model_form_for_widget(widget_class_obj, instance=obj, widget=widget)
                if model_form:
                    ctx.update({'model_form': model_form})
                    extra_js += model_form.extra_js

            options = o.render(ctx)

            extra_js += options_form.extra_js
            data = {'valid': False, 'type': 'ef', 'data': options, 'extra_js': extra_js}

        return HttpResponse(json_serializer.encode(data), mimetype='application/json')
    except Exception:
        raise Http404()
Example #7
0
def widget_options(request, type):
    try:
        options_form = WidgetOptionsForm(type)
        ctx = RequestContext(request)
        o = get_template("widget/options.html")
        ctx.update({'options_form': options_form,
                    'widget_class': options_form.widget_class})

        options = o.render(ctx)
        data = {'valid': True, 'type': 'fi', 'opts': options}
    except WidgetHasNoOptions:
        data = {"valid": False, "error": "None"}

    return data
Example #8
0
def widget_options(request, type):
    try:
        options_form = WidgetOptionsForm(type)
        ctx = RequestContext(request)
        o = get_template("widget/options.html")
        ctx.update({'options_form': options_form,
                    'widget_class': options_form.widget_class})

        options = o.render(ctx)
        data = {'valid': True, 'type': 'fi', 'opts': options}
    except WidgetHasNoOptions:
        data = {"valid": False, "error": "None"}

    return data
Example #9
0
def widget_list(request):
    """
    Renders widget options based on supplied widget
    class or displays a select screen
    """
    data = {}
    if not is_editable(Widget(), request):
        response = _("Permission denied")
        data = {
            'error': [response],
            'permission': False
        }
    else:
        if request.POST:
            "widget class exists so render widget options if any"
            ctx = RequestContext(request)
            widget_form = WidgetForm(request.POST)
            widget_class = request.POST["widget_class"]
            widget_class_obj = get_widget(widget_class)

#            if hasattr(widget_class_obj, "options"):
            "Widget has options, lets generate the options form"
            options_form = WidgetOptionsForm(widget_class)
            if widget_form.is_valid():
                o = get_template("widget/options.html")
                ctx.update({'options_form': options_form,
                            'widget_class': widget_class_obj })

                options = o.render(ctx)
                data = {'valid': False, 'type':'fi', 'data':options}
            else:
                data = ajaxerror(widget_form)
            return HttpResponse(json_serializer.encode(data), mimetype='application/json')

        else:
            return HttpResponseRedirect("/")