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 = self.zodb_root['webfactoryregistry'] 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() 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(self): if self.is_legacy_event: db.session.add( LegacyEventMapping(legacy_event_id=self.conf.id, event_id=self.event.id)) if not self.quiet: self.print_success('-> %[cyan]{}'.format(self.event.id))
def test_legacy_ids(db, dummy_event, test_client, url, legacy_id): db.session.add( LegacyEventMapping(legacy_event_id=legacy_id, event=dummy_event)) rv = test_client.get(url.format(legacy_id)) assert rv.status_code == 301 assert rv.headers['Location'] == 'http://localhost' + url.format( dummy_event.id)