hooks/syncsources.py
changeset 9448 3e7cad3967c5
parent 8557 8756f932ca83
child 9619 a4e97a31cc11
equal deleted inserted replaced
9447:0636c4960259 9448:3e7cad3967c5
    91 class SourceRenamedOp(hook.LateOperation):
    91 class SourceRenamedOp(hook.LateOperation):
    92     oldname = newname = None # make pylint happy
    92     oldname = newname = None # make pylint happy
    93 
    93 
    94     def precommit_event(self):
    94     def precommit_event(self):
    95         source = self.session.repo.sources_by_uri[self.oldname]
    95         source = self.session.repo.sources_by_uri[self.oldname]
    96         if source.copy_based_source:
    96         sql = 'UPDATE entities SET asource=%(newname)s WHERE asource=%(oldname)s'
    97             sql = 'UPDATE entities SET asource=%(newname)s WHERE asource=%(oldname)s'
       
    98         else:
       
    99             sql = 'UPDATE entities SET source=%(newname)s, asource=%(newname)s WHERE source=%(oldname)s'
       
   100         self.session.system_sql(sql, {'oldname': self.oldname,
    97         self.session.system_sql(sql, {'oldname': self.oldname,
   101                                       'newname': self.newname})
    98                                       'newname': self.newname})
   102 
    99 
   103     def postcommit_event(self):
   100     def postcommit_event(self):
   104         repo = self.session.repo
   101         repo = self.session.repo
   107         source.uri = self.newname
   104         source.uri = self.newname
   108         source.public_config['uri'] = self.newname
   105         source.public_config['uri'] = self.newname
   109         repo.sources_by_uri[self.newname] = source
   106         repo.sources_by_uri[self.newname] = source
   110         repo._type_source_cache.clear()
   107         repo._type_source_cache.clear()
   111         clear_cache(repo, 'source_defs')
   108         clear_cache(repo, 'source_defs')
   112         if not source.copy_based_source:
       
   113             repo._extid_cache.clear()
       
   114             repo._clear_planning_caches()
       
   115             for cnxset in repo.cnxsets:
       
   116                 cnxset.source_cnxs[self.oldname] = cnxset.source_cnxs.pop(self.oldname)
       
   117 
   109 
   118 
   110 
   119 class SourceUpdatedHook(SourceHook):
   111 class SourceUpdatedHook(SourceHook):
   120     __regid__ = 'cw.sources.configupdate'
   112     __regid__ = 'cw.sources.configupdate'
   121     __select__ = SourceHook.__select__ & is_instance('CWSource')
   113     __select__ = SourceHook.__select__ & is_instance('CWSource')