Django

Code

Changeset 3773

Show
Ignore:
Timestamp:
09/21/06 08:09:00 (2 years ago)
Author:
mtredinnick
Message:

Fixed #2743 -- Made the value of a cycle tag accessible through the context.
Patch from Martin Glueck.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/template/defaulttags.py

    r3714 r3773  
    1414 
    1515class CycleNode(Node): 
    16     def __init__(self, cyclevars): 
     16    def __init__(self, cyclevars, variable_name=None): 
    1717        self.cyclevars = cyclevars 
    1818        self.cyclevars_len = len(cyclevars) 
    1919        self.counter = -1 
     20        self.variable_name = variable_name 
    2021 
    2122    def render(self, context): 
    2223        self.counter += 1 
    23         return self.cyclevars[self.counter % self.cyclevars_len] 
     24        value = self.cyclevars[self.counter % self.cyclevars_len] 
     25        if self.variable_name: 
     26            context[self.variable_name] = value 
     27        return value 
    2428 
    2529class DebugNode(Node): 
     
    386390        cyclevars = [v for v in args[1].split(",") if v]    # split and kill blanks 
    387391        name = args[3] 
    388         node = CycleNode(cyclevars
     392        node = CycleNode(cyclevars, name
    389393 
    390394        if not hasattr(parser, '_namedCycleNodes'): 
  • django/trunk/tests/regressiontests/templates/tests.py

    r3714 r3773  
    188188            'cycle06': ('{% cycle a %}', {}, template.TemplateSyntaxError), 
    189189            'cycle07': ('{% cycle a,b,c as foo %}{% cycle bar %}', {}, template.TemplateSyntaxError), 
     190            'cycle08': ('{% cycle a,b,c as foo %}{% cycle foo %}{{ foo }}{{ foo }}{% cycle foo %}{{ foo }}', {}, 'abbbcc'), 
    190191 
    191192            ### EXCEPTIONS ############################################################