Changeset 6245d8 in indico


Ignore:
Timestamp:
05/19/10 13:29:34 (3 years ago)
Author:
Pedro Ferreira <jose.pedro.ferreira@…>
Branches:
master, burotel, hello-world-walkthrough, ipv6, new-webex, v0.97-series, v0.98-series, v0.98.2, v0.98.3, v0.98b1, v0.98b2, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, d9941f8582b36b24821a11ea5ba16fda6a457fb1
Children:
460337
Parents:
9729e8
Message:

[FIX] Fossilization of PersistentList? was failing

  • Changed the criteria from a set of classes to the existence of an iter method;
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • indico/MaKaC/common/fossilize.py

    ra217dc r6245d8  
    196196            if ttype in [int, str, float, NoneType]: 
    197197                return target 
    198             elif ttype in [list, set, tuple]: 
    199                 container = [] #we turn sets and tuples into lists since JSON does not have sets / tuples 
    200                 for elem in target: 
    201                     container.append(fossilize(elem, interface, useAttrCache, **kwargs)) 
    202                 return container 
    203198            elif ttype is dict: 
    204199                container = {} 
     
    206201                    container[key] = fossilize(value, interface, useAttrCache, **kwargs) 
    207202                return container 
    208             else: 
    209                 raise NonFossilizableException() 
     203            elif hasattr(target, '__iter__'): 
     204                #we turn sets and tuples into lists since JSON does not have sets / tuples 
     205                return list(fossilize(elem, 
     206                                      interface, 
     207                                      useAttrCache, 
     208                                      **kwargs) for elem in target) 
     209            else: 
     210                raise NonFossilizableException("Type %s is not fossilizable!" % 
     211                                               ttype) 
    210212 
    211213            return fossilize(target, interface, useAttrCache) 
  • tests/MaKaC_tests/common_tests/testFossilize.py

    r1881c6 r6245d8  
    248248        s1 = SimpleClass(10, 20, 'foo') 
    249249        d1 = DerivedClass(10, 50, 'bar') 
    250         self.assertEquals(fossilize([s1, d1], {SimpleClass: ISimpleFossil2Fossil, DerivedClass: ISimpleFossil1Fossil}), 
     250        self.assertEquals(fossilize([s1, d1], {"MaKaC_tests.common_tests.testFossilize.SimpleClass": ISimpleFossil2Fossil, "MaKaC_tests.common_tests.testFossilize.DerivedClass": ISimpleFossil1Fossil}), 
    251251                          [s1.fossilize(ISimpleFossil2Fossil), d1.fossilize(ISimpleFossil1Fossil)]) 
    252         self.assertEquals(fossilize([s1, d1], {"SimpleClass": ISimpleFossil2Fossil, "DerivedClass": ISimpleFossil1Fossil}), 
    253                           [s1.fossilize(ISimpleFossil2Fossil), d1.fossilize(ISimpleFossil1Fossil)]) 
    254         self.assertEquals(fossilize([s1, d1], {"MaKaC_tests.common_tests.testFossilize.SimpleClass": ISimpleFossil2Fossil, 
    255                                                "MaKaC_tests.common_tests.testFossilize.DerivedClass": ISimpleFossil1Fossil}), 
    256                           [s1.fossilize(ISimpleFossil2Fossil), d1.fossilize(ISimpleFossil1Fossil)]) 
    257         self.assertEquals(fossilize([s1, d1], {SimpleClass: ISimpleFossil2Fossil}), 
    258                           [s1.fossilize(ISimpleFossil2Fossil), d1.fossilize(ISimpleFossil2Fossil)]) 
    259252 
    260253 
Note: See TracChangeset for help on using the changeset viewer.