fix attribute error
[sfa.git] / sfa / storage / model.py
index 05046d0..279382b 100644 (file)
@@ -1,7 +1,7 @@
 from types import StringTypes
 from datetime import datetime
 
-from sqlalchemy import Column, Integer, String, DateTime
+from sqlalchemy import Integer, String, DateTime
 from sqlalchemy import Table, Column, MetaData, join, ForeignKey
 from sqlalchemy.orm import relationship, backref
 from sqlalchemy.orm import column_property
@@ -374,7 +374,15 @@ augment_map={'authority': {'reg-pis':'reg_pis',},
                       'reg-slices':'reg_slices_as_researcher',},
              }
 
-def augment_with_related_hrns (local_record):
+def augment_with_sfa_builtins (local_record):
+    # don't ruin the import of that file in a client world
+    from sfa.util.xrn import Xrn
+    # add a 'urn' field
+    setattr(local_record,'reg-urn',Xrn(xrn=local_record.hrn,type=local_record.type).urn)
+    # users have keys and this is needed to synthesize 'users' sent over to CreateSliver
+    if local_record.type=='user':
+        user_keys = [ key.key for key in local_record.reg_keys ]
+        setattr(local_record, 'reg-keys', user_keys)
     # search in map according to record type
     type_map=augment_map.get(local_record.type,{})
     # use type-dep. map to do the job
@@ -383,5 +391,14 @@ def augment_with_related_hrns (local_record):
         related_records = getattr(local_record,attribute,[])
         hrns = [ r.hrn for r in related_records ]
         setattr (local_record, field_name, hrns)
+
+    # include legacy 'slices' and 'keys' fields for backwards compatibility
+    reg_keys = getattr(local_record, 'reg-keys', None)
+    if reg_keys:
+        setattr(local_record, 'keys', reg_keys)
+    reg_slices = getattr(local_record, 'reg-slices', None)
+    if reg_slices:
+       setattr(local_record, 'slices', reg_slices)
+