@@ -481,6 +481,10 @@ def __init__(self, model_class, starting_model_class, system=None):
481481 self .revisions = IDMapper (self .system .revisions , ihm .Revision ,
482482 * (None ,) * 4 )
483483
484+ #: Mapping from ID to :class:`ihm.Collection` objects
485+ self .collections = IDMapper (self .system .collections , ihm .Collection ,
486+ None )
487+
484488 #: Mapping from ID to :class:`ihm.Entity` objects
485489 self .entities = IDMapper (self .system .entities , _make_new_entity )
486490
@@ -1060,8 +1064,17 @@ class _CollectionHandler(Handler):
10601064 category = '_ihm_entry_collection'
10611065
10621066 def __call__ (self , id , name , details ):
1063- c = ihm .Collection (id = id , name = name , details = details )
1064- self .system .collections .append (c )
1067+ c = self .sysr .collections .get_by_id (id )
1068+ c .name = name
1069+ c .details = details
1070+
1071+
1072+ class _CollectionMappingHandler (Handler ):
1073+ category = '_ihm_entry_collection_mapping'
1074+
1075+ def __call__ (self , collection_id , entry_id ):
1076+ c = self .sysr .collections .get_by_id (collection_id )
1077+ c .entries .append (entry_id )
10651078
10661079
10671080class _StructHandler (Handler ):
@@ -4154,7 +4167,8 @@ class IHMVariant(Variant):
41544167 system_reader = SystemReader
41554168
41564169 _handlers = [
4157- _CollectionHandler , _StructHandler , _SoftwareHandler , _CitationHandler ,
4170+ _CollectionHandler , _CollectionMappingHandler , _StructHandler ,
4171+ _SoftwareHandler , _CitationHandler ,
41584172 _DatabaseHandler , _DatabaseStatusHandler ,
41594173 _AuditAuthorHandler , _AuditRevisionHistoryHandler ,
41604174 _AuditRevisionDetailsHandler , _AuditRevisionGroupHandler ,
0 commit comments