示例#1
0
    def test_widget_creation(self):
        test_widget = Widget()
        test_widget.widget_class = "TestWidget"
        test_widget.user_id = 1
        widget_class = get_widget(test_widget.widget_class)

        self.assertEqual(widget_class.Meta.name, "Test")
示例#2
0
 def create_widgets(self):
     for i in range(0, self.widget_count):
         test_widget = Widget()
         test_widget.widget_class = "TestWidget"
         test_widget.page = self.page
         test_widget.user_id = 1
         test_widget.widgetslot = self.slot
         test_widget.status = CONTENT_STATUS_DRAFT
         test_widget.save()
         self.test_widgets.append(test_widget)
     self.test_widgets[self.widget_count -
                       1].status = CONTENT_STATUS_PUBLISHED
     self.test_widgets[self.widget_count - 1].save()
示例#3
0
 def create_widgets(self):
     for i in range(0, self.widget_count):
         test_widget = Widget()
         test_widget.widget_class = "TestWidget"
         test_widget.page = self.page
         test_widget.user_id = 1
         test_widget.widgetslot = self.slot
         test_widget.status = CONTENT_STATUS_DRAFT
         test_widget.save()
         self.test_widgets.append(test_widget)
     self.test_widgets[self.widget_count-1].status = CONTENT_STATUS_PUBLISHED
     self.test_widgets[self.widget_count-1].save()
示例#4
0
def create_widget(request, **kwargs):
    """
    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': {"_all_": [response]},
            'permission': False
        }
    else:
        if request.POST:
            widget_class = request.POST["widget_class"]
            slot = request.POST["widgetslot"]
            try:
                page_obj = Page.objects.published(request.user)\
                                .get(id=request.POST["page"])
                options_form = WidgetOptionsForm(widget_class, request.POST)
                if options_form.is_valid():
                    try:
                        "update widget if it exists"
                        widget = Widget.objects.get(id=request.POST["widget"])
                    except Exception:
                        widget = Widget(widgetslot=slot, page=page_obj,
                                        widget_class=widget_class,
                                        user=request.user)
                        widget.save()

                    if options_form.save(widget=widget):
                        data = {'valid': True, 'form': 'saved'}
                elif options_form.errors:
                    data = ajaxerror(options_form)
            except Exception, e:
                data = {"valid": "false", "error": { "_all_": ["Something went wrong, please refresh the page"],}}
示例#5
0
    def get_context(self, context, slot):
        page = context.get('page', None)

        context['slot'] = slot
        user = context['request'].user
        rendered = render_widgets_for_slot(slot, context)
        if rendered:
            context['widgets'] = rendered
            context['contains_widgets'] = True
        else:
            context['widgets'] = [{'widget': Widget()}]
            context['contains_widgets'] = False
            #add widget list form for adding new widgets
        form = WidgetForm(initial={
            "page": page,
            "user": user,
            "widgetslot": slot
        })
        context['widget_form'] = form

        return context
示例#6
0
    def test_widget_renderer(self):
        # create page with widget slots
        page = RichTextPage.objects.create(title="testpage", status=CONTENT_STATUS_DRAFT)
        # create widget slot
        slot = "slot"

        # create test widget
        test_widget = Widget()
        test_widget.widget_class = "TestWidget"
        test_widget.page = page
        test_widget.user_id = 1
        test_widget.slot = slot
        test_widget.save()

        context = {}
        context["page"] = page
        context["request"] = {"user": self._user}
        # render widget, there should be only one widget i.e test_widget
        widgets = render_widgets_for_slot(slot, context)
        self.assertEqual(widgets[0]["widget"], test_widget)
        # check if rendered content is correct
        self.assertEqual(widgets[0]["content"], "Test Widget Rendered")
示例#7
0
def create_widget(request, **kwargs):
    """
    Renders widget options based on supplied widget
    class or displays a select screen
    """
    data = {}
    widget_class = request.POST["widget_class"]
    widget_class_obj = get_widget(widget_class)
    containsModel = hasModel(widget_class_obj)

    slot = request.POST["widgetslot"]
    try:
        page = Page.objects.get(id=request.POST["page"])

        ### HANDLE OPTIONS FORM ####
        options_form = WidgetOptionsForm(widget_class, request.POST, request.FILES)
        widget = None
        if options_form.is_valid():
            try:
                "update widget if it exists"
                widget = Widget.objects.get(id=request.POST["widget"])
            except Exception:
                widget = Widget(widgetslot=slot,
                                widget_class=widget_class,
                                user=request.user, page=page)
                widget.save()

            if options_form.save(widget=widget):
                data = {'valid': True, 'form': 'saved'}
        elif options_form.errors:
            data = ajaxerror(options_form)

        if widget is None and not options_form.hasOptions and containsModel:
            try:
                "update widget if it exists"
                widget = Widget.objects.get(id=request.POST["widget"])
            except Exception:
                widget = Widget(widgetslot=slot,
                                widget_class=widget_class,
                                user=request.user, page=page)
                widget.save()

        model_widget = None
        if widget: model_widget = widget
        model_form = get_model_form_for_widget(widget_class_obj,
                                               {"POST": request.POST, "FILES": request.FILES},
                                               widget=model_widget
        )
        if model_form:
            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
    except Exception, e:
        data = {"valid": False, \
                "errors": {"_all_": ["Something went wrong, please refresh the page"], "exception": e.message}}
示例#8
0
def create_widget(request, **kwargs):
    """
    Renders widget options based on supplied widget
    class or displays a select screen
    """
    data = {}
    widget_class = request.POST["widget_class"]
    widget_class_obj = get_widget(widget_class)
    containsModel = hasModel(widget_class_obj)

    slot = request.POST["widgetslot"]
    try:
        page = Page.objects.get(id=request.POST["page"])

        ### HANDLE OPTIONS FORM ####
        options_form = WidgetOptionsForm(widget_class, request.POST, request.FILES)
        widget = None
        if options_form.is_valid():
            try:
                "update widget if it exists"
                widget = Widget.objects.get(id=request.POST["widget"])
            except Exception:
                widget = Widget(widgetslot=slot,
                                widget_class=widget_class,
                                user=request.user, page=page)
                widget.save()

            if options_form.save(widget=widget):
                data = {'valid': True, 'form': 'saved'}
        elif options_form.errors:
            data = ajaxerror(options_form)

        if widget is None and not options_form.hasOptions and containsModel:
            try:
                "update widget if it exists"
                widget = Widget.objects.get(id=request.POST["widget"])
            except Exception:
                widget = Widget(widgetslot=slot,
                                widget_class=widget_class,
                                user=request.user, page=page)
                widget.save()

        model_widget = None
        if widget:
            model_widget = widget
        model_form = get_model_form_for_widget(widget_class_obj,
                                               {"POST": request.POST, "FILES": request.FILES},
                                               widget=model_widget
                                               )
        if model_form:
            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
    except Exception, e:
        data = {"valid": False,
                "errors": {"_all_": ["Something went wrong, please refresh the page"], "exception": e.message}}