def migrate_legacy_events(self): print cformat('%{white!}migrating legacy events') # XXX: removed display manager / internal page manager update # don't forget to handle them when updating this for 2.0! wfr = WebFactoryRegistry()._getConfRegistry() for event in self._committing_iterator(self._get_events()): if not hasattr(event, '_old_id'): new_id = self.gen_event_id() event.unindexConf() del self.zodb_root['conferences'][event.id] wf = wfr.pop(event.id, None) event._old_id = event.id event.id = new_id if wf is not None: wfr[event.id] = wf self.zodb_root['conferences'][event.id] = event event.indexConf() IndexedEvent.find(id=event._old_id).update({IndexedEvent.id: event.id}) EventSetting.find(event_id=event._old_id).update({EventSetting.event_id: event.id}) EventSettingPrincipal.find(event_id=event._old_id).update({EventSettingPrincipal.event_id: event.id}) db.session.add(LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) if not self.quiet: self.print_success(cformat('%{cyan}{}').format(event.id), event_id=event._old_id) else: # happens if this importer was executed before but you want to add the mapping to your DB again db.session.add(LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) if not self.quiet: self.print_success(cformat('%{cyan}{}%{reset} %{yellow}(already updated in zodb)').format(event.id), event_id=event._old_id)
def index(self, obj): self.unindex(obj) event = IndexedEvent(id=obj.getId(), title=obj.getTitle(), start_date=obj.getStartDate(), end_date=obj.getEndDate()) db.session.add(event) with retry_request_on_conflict(): db.session.flush()
def initialize(self, items): for i, conf in enumerate(items, 1): event = IndexedEvent(id=conf.getId(), title=conf.getTitle(), start_date=conf.getStartDate(), end_date=conf.getEndDate()) db.session.add(event) if i % 20000 == 0: db.session.commit() db.session.commit()
def migrate_legacy_events(self): print cformat('%{white!}migrating legacy events') # XXX: removed display manager / internal page manager update # don't forget to handle them when updating this for 2.0! wfr = WebFactoryRegistry()._getConfRegistry() for event in self._committing_iterator(self._get_events()): if not hasattr(event, '_old_id'): new_id = self.gen_event_id() event.unindexConf() del self.zodb_root['conferences'][event.id] wf = wfr.pop(event.id, None) event._old_id = event.id event.id = new_id if wf is not None: wfr[event.id] = wf self.zodb_root['conferences'][event.id] = event event.indexConf() IndexedEvent.find(id=event._old_id).update( {IndexedEvent.id: event.id}) EventSetting.find(event_id=event._old_id).update( {EventSetting.event_id: event.id}) EventSettingPrincipal.find(event_id=event._old_id).update( {EventSettingPrincipal.event_id: event.id}) db.session.add( LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) if not self.quiet: self.print_success(cformat('%{cyan}{}').format(event.id), event_id=event._old_id) else: # happens if this importer was executed before but you want to add the mapping to your DB again db.session.add( LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) if not self.quiet: self.print_success(cformat( '%{cyan}{}%{reset} %{yellow}(already updated in zodb)' ).format(event.id), event_id=event._old_id)
def migrate_legacy_events(self): print cformat('%{white!}migrating legacy events') dmr = ConfDisplayMgrRegistery()._getDisplayMgrRegistery() wfr = WebFactoryRegistry()._getConfRegistry() ipmr = InternalPagesMgrRegistery()._getInternalPagesMgrRegistery() for event in self._committing_iterator(self._get_events()): if not hasattr(event, '_old_id'): new_id = self.gen_event_id() event.unindexConf() del self.zodb_root['conferences'][event.id] dm = dmr.pop(event.id, None) wf = wfr.pop(event.id, None) ipm = ipmr.pop(event.id, None) event._old_id = event.id event.id = new_id if dm is not None: dmr[event.id] = dm if wf is not None: wfr[event.id] = wf if ipm is not None: ipmr[event.id] = ipm self.zodb_root['conferences'][event.id] = event event.indexConf() IndexedEvent.find(id=event._old_id).update({IndexedEvent.id: event.id}) EventSetting.find(event_id=event._old_id).update({EventSetting.event_id: event.id}) EventSettingPrincipal.find(event_id=event._old_id).update({EventSettingPrincipal.event_id: event.id}) db.session.add(LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) print cformat('%{green}+++%{reset} ' '%{white!}{:6s}%{reset} %{cyan}{}').format(event._old_id, int(event.id)) else: # happens if this importer was executed before but you want to add the mapping to your DB again db.session.add(LegacyEventMapping(legacy_event_id=event._old_id, event_id=int(event.id))) msg = cformat('%{green}+++%{reset} ' '%{white!}{:6s}%{reset} %{cyan}{}%{reset} %{yellow}(already updated in zodb)') print msg.format(event._old_id, int(event.id))
def unindex(self, obj): IndexedEvent.find(id=obj.getId()).delete() db.session.flush()