Skip to content

Commit

Permalink
Test and refactor editable_attrs templatetag
Browse files Browse the repository at this point in the history
  • Loading branch information
jaap3 committed Feb 19, 2015
1 parent 0e273ce commit 5abee0a
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 27 deletions.
30 changes: 3 additions & 27 deletions fiber/templatetags/fiber_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,36 +236,12 @@ def render(self, context):
return ''


def get_editable_attrs(instance):
@register.simple_tag(takes_context=True)
def editable_attrs(context, instance):
data = {
"url": get_admin_change_url(instance),
}

return "data-fiber-data='%s'" % json.dumps(data)


class EditableAttrsNode(template.Node):

def __init__(self, instance_var):
self.instance_var = template.Variable(instance_var)

def render(self, context):
try:
instance = self.instance_var.resolve(context)
return get_editable_attrs(instance)
except template.VariableDoesNotExist:
return ''


@register.tag(name='editable_attrs')
def editable_attrs(parser, token):
try:
instance_var = token.split_contents()[1]
except ValueError:
raise template.TemplateSyntaxError, "%r tag requires one argument" % token.contents.split()[0]

return EditableAttrsNode(instance_var)

return 'data-fiber-data="%s"' % escape(json.dumps(data))

@register.filter
def escape_json_for_html(value):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from django.test import TestCase
from fiber.models import Page
from fiber.utils.urls import get_admin_change_url
from ...test_util import RenderMixin


class TestEditableAttrs(RenderMixin, TestCase):
def setUp(self):
self.home = Page.objects.create(title='home', url='/')

def test_editable_attrs(self):
self.assertRendered(
'{% load fiber_tags %}{% editable_attrs page %}',
'data-fiber-data="{"url": "%s"}"' % get_admin_change_url(self.home), {
'page': self.home
})

0 comments on commit 5abee0a

Please sign in to comment.