def test_widget_renderer_for_page(self): #mock context context = {} context["page"] = self.page #mock request request = type('request', (object, ), {'user': self._user}) context["request"] = request #render widget, there should be only one widget i.e test_widget #This returns all widget's in the mentioned slot widgets = render_widgets_for_slot(self.slot, Context(context)) #only one widget item is published self.assertEqual(len(widgets), 1) self.assertEqual(widgets[0]['widget'].status, CONTENT_STATUS_PUBLISHED) self.assertEqual( widgets[0]['widget'].display_title, self.test_widgets[self.widget_count - 1].display_title) #check if rendered content is correct self.assertEqual(widgets[0]['content'], "Test Widget Rendered")
def render(self, ctx): context = ctx.new(ctx) prerendered = self.nodelist.render(context) wtag = re.compile("{{((?:[a-z][a-z0-9_]*))}}") output = [] lastPos = 0 for m in wtag.finditer(prerendered): slot = m.group(1) page = context.get('page', None) if context.has_key("slot"): slot = "%s/%s" % (context["slot"], slot) 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 form = WidgetForm(initial={"page": page, "user": user, "widgetslot": slot}) context['widget_form'] = form rt = render_to_string("widget/holder.html", context_instance=context) output.append(prerendered[lastPos:m.start()]) output.append(rt) lastPos = m.end() output.append(prerendered[lastPos:-1]) output = "".join(output) return output
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
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
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")
def test_widget_renderer_for_page(self): #mock context context = {} context["page"] = self.page #mock request request = type('request', (object,), {'user': self._user}) context["request"] = request #render widget, there should be only one widget i.e test_widget #This returns all widget's in the mentioned slot widgets = render_widgets_for_slot(self.slot, Context(context)) #only one widget item is published self.assertEqual(len(widgets), 1) self.assertEqual(widgets[0]['widget'].status, CONTENT_STATUS_PUBLISHED) self.assertEqual(widgets[0]['widget'].display_title, self.test_widgets[self.widget_count-1].display_title) #check if rendered content is correct self.assertEqual(widgets[0]['content'], "Test Widget Rendered")