569 |
569 |
570 This is a public method, not requiring a session id. |
570 This is a public method, not requiring a session id. |
571 """ |
571 """ |
572 sources = {} |
572 sources = {} |
573 # remove sensitive information |
573 # remove sensitive information |
574 for uri, source in self.sources_by_uri.iteritems(): |
574 for uri, source in self.sources_by_uri.items(): |
575 sources[uri] = source.public_config |
575 sources[uri] = source.public_config |
576 return sources |
576 return sources |
577 |
577 |
578 def properties(self): |
578 def properties(self): |
579 """Return a result set containing system wide properties. |
579 """Return a result set containing system wide properties. |
1037 try: |
1037 try: |
1038 data_by_etype[etype].append(entity) |
1038 data_by_etype[etype].append(entity) |
1039 except KeyError: |
1039 except KeyError: |
1040 data_by_etype[etype] = [entity] |
1040 data_by_etype[etype] = [entity] |
1041 source = self.system_source |
1041 source = self.system_source |
1042 for etype, entities in data_by_etype.iteritems(): |
1042 for etype, entities in data_by_etype.items(): |
1043 if server.DEBUG & server.DBG_REPO: |
1043 if server.DEBUG & server.DBG_REPO: |
1044 print('DELETE entities', etype, [entity.eid for entity in entities]) |
1044 print('DELETE entities', etype, [entity.eid for entity in entities]) |
1045 self.hm.call_hooks('before_delete_entity', cnx, entities=entities) |
1045 self.hm.call_hooks('before_delete_entity', cnx, entities=entities) |
1046 self._delete_cascade_multi(cnx, entities) |
1046 self._delete_cascade_multi(cnx, entities) |
1047 source.delete_entities(cnx, entities) |
1047 source.delete_entities(cnx, entities) |
1061 source = self.system_source |
1061 source = self.system_source |
1062 relations_by_rtype = {} |
1062 relations_by_rtype = {} |
1063 subjects_by_types = {} |
1063 subjects_by_types = {} |
1064 objects_by_types = {} |
1064 objects_by_types = {} |
1065 activintegrity = cnx.is_hook_category_activated('activeintegrity') |
1065 activintegrity = cnx.is_hook_category_activated('activeintegrity') |
1066 for rtype, eids_subj_obj in relations.iteritems(): |
1066 for rtype, eids_subj_obj in relations.items(): |
1067 if server.DEBUG & server.DBG_REPO: |
1067 if server.DEBUG & server.DBG_REPO: |
1068 for subjeid, objeid in eids_subj_obj: |
1068 for subjeid, objeid in eids_subj_obj: |
1069 print('ADD relation', subjeid, rtype, objeid) |
1069 print('ADD relation', subjeid, rtype, objeid) |
1070 for subjeid, objeid in eids_subj_obj: |
1070 for subjeid, objeid in eids_subj_obj: |
1071 if rtype in relations_by_rtype: |
1071 if rtype in relations_by_rtype: |
1099 if objeid in objects: |
1099 if objeid in objects: |
1100 del relations_by_rtype[rtype][objects[objeid]] |
1100 del relations_by_rtype[rtype][objects[objeid]] |
1101 objects[objeid] = len(relations_by_rtype[rtype]) |
1101 objects[objeid] = len(relations_by_rtype[rtype]) |
1102 continue |
1102 continue |
1103 objects[objeid] = len(relations_by_rtype[rtype]) |
1103 objects[objeid] = len(relations_by_rtype[rtype]) |
1104 for rtype, source_relations in relations_by_rtype.iteritems(): |
1104 for rtype, source_relations in relations_by_rtype.items(): |
1105 self.hm.call_hooks('before_add_relation', cnx, |
1105 self.hm.call_hooks('before_add_relation', cnx, |
1106 rtype=rtype, eids_from_to=source_relations) |
1106 rtype=rtype, eids_from_to=source_relations) |
1107 for rtype, source_relations in relations_by_rtype.iteritems(): |
1107 for rtype, source_relations in relations_by_rtype.items(): |
1108 source.add_relations(cnx, rtype, source_relations) |
1108 source.add_relations(cnx, rtype, source_relations) |
1109 rschema = self.schema.rschema(rtype) |
1109 rschema = self.schema.rschema(rtype) |
1110 for subjeid, objeid in source_relations: |
1110 for subjeid, objeid in source_relations: |
1111 cnx.update_rel_cache_add(subjeid, rtype, objeid, rschema.symmetric) |
1111 cnx.update_rel_cache_add(subjeid, rtype, objeid, rschema.symmetric) |
1112 for rtype, source_relations in relations_by_rtype.iteritems(): |
1112 for rtype, source_relations in relations_by_rtype.items(): |
1113 self.hm.call_hooks('after_add_relation', cnx, |
1113 self.hm.call_hooks('after_add_relation', cnx, |
1114 rtype=rtype, eids_from_to=source_relations) |
1114 rtype=rtype, eids_from_to=source_relations) |
1115 |
1115 |
1116 def glob_delete_relation(self, cnx, subject, rtype, object): |
1116 def glob_delete_relation(self, cnx, subject, rtype, object): |
1117 """delete a relation from the repository""" |
1117 """delete a relation from the repository""" |