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
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')
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
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()
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
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("/")