1
Fork 0

Simplify content special-casing

This commit is contained in:
Jake Howard 2024-07-03 14:15:54 +01:00
parent 2ba54c9a90
commit babec7cc2d
Signed by: jake
GPG key ID: 57AFB45680EDD477

View file

@ -3,8 +3,8 @@ from django.template.library import parse_bits, SimpleNode
from functools import wraps
class SimpleBlockNode(SimpleNode):
def __init__(self, nodelist, func, takes_context, args, kwargs, target_var):
super().__init__(func, takes_context, args, kwargs, target_var)
def __init__(self, nodelist, *args, **kwargs):
super().__init__(*args, **kwargs)
self.nodelist = nodelist
def get_resolved_arguments(self, context):
@ -25,11 +25,14 @@ def simple_block_tag(register, takes_context=None, name=None):
if len(bits) >= 2 and bits[-2] == "as":
target_var = bits[-1]
bits = bits[:-2]
bits = [''] + bits # add placeholder for content arg
params = argspec.args
del params[1 if takes_context else 0]
args, kwargs = parse_bits(
parser=parser,
bits=bits,
params=argspec.args,
params=params,
varargs=argspec.varargs,
varkw=argspec.varkw,
defaults=argspec.defaults,
@ -38,7 +41,7 @@ def simple_block_tag(register, takes_context=None, name=None):
takes_context=takes_context,
name=function_name
)
args = args[1:] # remove content placeholder
nodelist = parser.parse((f'end{function_name}',))
parser.delete_first_token()
return SimpleBlockNode(nodelist, func, takes_context, args, kwargs, target_var)