Record.todict behaves suspisciously
[sfa.git] / sfa / managers / registry_manager.py
index f17b316..8e8eb78 100644 (file)
@@ -211,7 +211,7 @@ class RegistryManager:
         local_records=local_records.all()
         
         for local_record in local_records:
-            augment_with_sfa_builtins (local_record)
+            augment_with_sfa_builtins(local_record)
 
         logger.info("Resolve, (details=%s,type=%s) local_records=%s "%(details,type,local_records))
         local_dicts = [ record.__dict__ for record in local_records ]
@@ -235,7 +235,7 @@ class RegistryManager:
         # xxx somehow here calling dict(record) issues a weird error
         # however record.todict() seems to work fine
         # records.extend( [ dict(record) for record in local_records ] )
-        records.extend( [ record.todict(exclude_types=[InstrumentedList]) for record in local_records ] )
+        records.extend( [ record.record_to_dict(exclude_types=(InstrumentedList,)) for record in local_records ] )
 
         if not records:
             raise RecordNotFound(str(hrns))
@@ -288,8 +288,15 @@ class RegistryManager:
                 records = dbsession.query(RegRecord).filter_by(authority=hrn).all()
 #                logger.debug("non recursive mode, found %d local records"%(len(records)))
             # so that sfi list can show more than plain names...
-            for record in records: augment_with_sfa_builtins (record)
-            record_dicts=[ record.todict(exclude_types=[InstrumentedList]) for record in records ]
+            for record in records:
+                # xxx mystery - again this useless statement is key here so that
+                # resulting records have their __dict__ field actually in line with the
+                # object's contents; was first observed with authorities' 'name' column
+                # that would be missing from result as received by client
+                # record.todict() is the place where __dict__ is used
+                print "DO NOT REMOVE ME before augment_with_sfa_builtins, record=%s"%record
+                augment_with_sfa_builtins(record)
+            record_dicts = [ record.record_to_dict(exclude_types=(InstrumentedList,)) for record in records ]
     
         return record_dicts
     
@@ -486,7 +493,7 @@ class RegistryManager:
                 record.email = email
         
         # update the PLC information that was specified with the record
-        # xxx oddly enough, without this useless statement, 
+        # xxx mystery: oddly enough, without this useless statement, 
         # record.__dict__ as received by the driver seems to be off
         # anyway the driver should receive an object 
         # (and then extract __dict__ itself if needed)