Added tag cubicweb-debian-version-3.4.7-1 for changeset ebb92e62eb04
"""allways executed before all others in server migrationit should only include low level schema changes:organization: Logilab:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses"""applcubicwebversion,cubicwebversion=versions_map['cubicweb']ifapplcubicwebversion<(3,4,0)andcubicwebversion>=(3,4,0):fromcubicwebimportRepositoryErrorfromcubicweb.server.hooksimportuniquecstrcheck_before_modificationsession.set_shared_data('do-not-insert-cwuri',True)repo.hm.unregister_hook(uniquecstrcheck_before_modification,'before_add_entity','')repo.hm.unregister_hook(uniquecstrcheck_before_modification,'before_update_entity','')add_relation_type('cwuri')base_url=session.base_url()# use an internal session since some entity might forbid modifications to adminisession=repo.internal_session()foreid,inrql('Any X',ask_confirm=False):type,source,extid=session.describe(eid)ifsource=='system':isession.execute('SET X cwuri %(u)s WHERE X eid %(x)s',{'x':eid,'u':base_url+u'eid/%s'%eid})isession.commit()repo.hm.register_hook(uniquecstrcheck_before_modification,'before_add_entity','')repo.hm.register_hook(uniquecstrcheck_before_modification,'before_update_entity','')session.set_shared_data('do-not-insert-cwuri',False)ifapplcubicwebversion<(3,2,2)andcubicwebversion>=(3,2,1):frombase64importb64encodefortablein('entities','deleted_entities'):foreid,extidinsql('SELECT eid, extid FROM %s WHERE extid is NOT NULL'%table,ask_confirm=False):sql('UPDATE %s SET extid=%%(extid)s WHERE eid=%%(eid)s'%table,{'extid':b64encode(extid),'eid':eid},ask_confirm=False)checkpoint()ifapplcubicwebversion<(3,2,0)andcubicwebversion>=(3,2,0):add_cube('card',update_database=False)ifapplcubicwebversion<(2,47,0)andcubicwebversion>=(2,47,0):fromcubicweb.serverimportschemaserialschemaserial.HAS_FULLTEXT_CONTAINER=Falsesession.set_shared_data('do-not-insert-is_instance_of',True)add_attribute('CWRType','fulltext_container')schemaserial.HAS_FULLTEXT_CONTAINER=Trueifapplcubicwebversion<(2,50,0)andcubicwebversion>=(2,50,0):session.set_shared_data('do-not-insert-is_instance_of',True)add_relation_type('is_instance_of')# fill the relation using an efficient sql query instead of using rqlsql('INSERT INTO is_instance_of_relation '' SELECT * from is_relation')checkpoint()session.set_shared_data('do-not-insert-is_instance_of',False)ifapplcubicwebversion<(2,42,0)andcubicwebversion>=(2,42,0):sql('ALTER TABLE entities ADD COLUMN mtime TIMESTAMP')sql('UPDATE entities SET mtime=CURRENT_TIMESTAMP')sql('CREATE INDEX entities_mtime_idx ON entities(mtime)')sql('''CREATE TABLE deleted_entities ( eid INTEGER PRIMARY KEY NOT NULL, type VARCHAR(64) NOT NULL, source VARCHAR(64) NOT NULL, dtime TIMESTAMP NOT NULL, extid VARCHAR(256))''')sql('CREATE INDEX deleted_entities_type_idx ON deleted_entities(type)')sql('CREATE INDEX deleted_entities_dtime_idx ON deleted_entities(dtime)')sql('CREATE INDEX deleted_entities_extid_idx ON deleted_entities(extid)')checkpoint()