Django

Code

Show
Ignore:
Timestamp:
08/05/08 12:15:33 (4 months ago)
Author:
jbronn
Message:

gis: Merged revisions 7981-8001,8003-8011,8013-8033,8035-8036,8038-8039,8041-8063,8065-8076,8078-8139,8141-8154,8156-8214 via svnmerge from trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis

    • Property svnmerge-integrated changed from /django/trunk:1-7978 to /django/trunk:1-8214
  • django/branches/gis/django/template/context.py

    r6990 r8215  
    6363    def update(self, other_dict): 
    6464        "Like dict.update(). Pushes an entire dictionary's keys and values onto the context." 
     65        if not hasattr(other_dict, '__getitem__'):  
     66            raise TypeError('other_dict must be a mapping (dictionary-like) object.') 
    6567        self.dicts = [other_dict] + self.dicts 
    6668        return other_dict 
  • django/branches/gis/django/template/defaulttags.py

    r7768 r8215  
    158158 
    159159class IfChangedNode(Node): 
    160     def __init__(self, nodelist, *varlist): 
    161         self.nodelist = nodelist 
     160    def __init__(self, nodelist_true, nodelist_false, *varlist): 
     161        self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false 
    162162        self._last_seen = None 
    163163        self._varlist = map(Variable, varlist) 
     
    174174                compare_to = [var.resolve(context) for var in self._varlist] 
    175175            else: 
    176                 compare_to = self.nodelist.render(context) 
     176                compare_to = self.nodelist_true.render(context) 
    177177        except VariableDoesNotExist: 
    178178            compare_to = None 
    179179 
    180         if compare_to != self._last_seen: 
     180        if compare_to != self._last_seen: 
    181181            firstloop = (self._last_seen == None) 
    182182            self._last_seen = compare_to 
    183183            context.push() 
    184184            context['ifchanged'] = {'firstloop': firstloop} 
    185             content = self.nodelist.render(context) 
     185            content = self.nodelist_true.render(context) 
    186186            context.pop() 
    187187            return content 
    188         else: 
    189             return '' 
     188        elif self.nodelist_false: 
     189            return self.nodelist_false.render(context) 
     190        return '' 
    190191 
    191192class IfEqualNode(Node): 
     
    364365            return reverse(self.view_name, args=args, kwargs=kwargs) 
    365366        except NoReverseMatch: 
    366             try: 
    367                 project_name = settings.SETTINGS_MODULE.split('.')[0] 
    368                 return reverse(project_name + '.' + self.view_name, 
    369                                args=args, kwargs=kwargs) 
    370             except NoReverseMatch: 
    371                 return '' 
     367            project_name = settings.SETTINGS_MODULE.split('.')[0] 
     368            return reverse(project_name + '.' + self.view_name, 
     369                           args=args, kwargs=kwargs) 
    372370 
    373371class WidthRatioNode(Node): 
     
    804802    """ 
    805803    bits = token.contents.split() 
    806     nodelist = parser.parse(('endifchanged',)) 
    807     parser.delete_first_token() 
    808     return IfChangedNode(nodelist, *bits[1:]) 
     804    nodelist_true = parser.parse(('else', 'endifchanged')) 
     805    token = parser.next_token() 
     806    if token.contents == 'else': 
     807        nodelist_false = parser.parse(('endifchanged',)) 
     808        parser.delete_first_token() 
     809    else: 
     810        nodelist_false = NodeList() 
     811    return IfChangedNode(nodelist_true, nodelist_false, *bits[1:]) 
    809812ifchanged = register.tag(ifchanged) 
    810813