Commit b3c47192 authored by Nicola Spanti's avatar Nicola Spanti
Browse files

[cleanup] Remove migrations for 3.21 and less

If someone still uses a very old version of CubicWeb, he will not
go in one jump to the last version, so we can get rid of very old
migrations in CubicWeb 3.31.
parent de750f83bc4f
Pipeline #50897 passed with stages
in 32 minutes and 57 seconds
add_entity_type('CWSource')
add_relation_definition('CWSource', 'cw_source', 'CWSource')
add_entity_type('CWSourceHostConfig')
with session.allow_all_hooks_but('cw.sources'):
create_entity('CWSource', type=u'native', name=u'system')
commit()
sql('INSERT INTO cw_source_relation(eid_from,eid_to) '
'SELECT e.eid,s.cw_eid FROM entities as e, cw_CWSource as s '
'WHERE s.cw_name=e.type')
commit()
for uri, cfg in config.read_sources_file().items():
if uri in ('system', 'admin'):
continue
config = u'\n'.join('%s=%s' % (key, value) for key, value in cfg.items()
if key != 'adapter' and value is not None)
create_entity('CWSource', name=uri, type=cfg['adapter'],
config=config)
commit()
# rename cwprops for boxes/contentnavigation
for x in rql('Any X,XK WHERE X pkey XK, '
'X pkey ~= "boxes.%" OR '
'X pkey ~= "contentnavigation.%"').entities():
x.cw_set(pkey=u'ctxcomponents.' + x.pkey.split('.', 1)[1])
option_group_changed('cleanup-session-time', 'web', 'main')
for eschema in schema.entities():
if not (eschema.final or 'cw_source' in eschema.subjrels):
add_relation_definition(eschema.type, 'cw_source', 'CWSource', ask_confirm=False)
sql('INSERT INTO cw_source_relation(eid_from, eid_to) '
'SELECT e.eid,s.cw_eid FROM entities as e, cw_CWSource as s '
'WHERE s.cw_name=e.source AND NOT EXISTS(SELECT 1 FROM cw_source_relation WHERE eid_from=e.eid AND eid_to=s.cw_eid)')
commit()
sync_schema_props_perms('CWSourceHostConfig', syncperms=False)
sql('INSERT INTO cw_source_relation(eid_from, eid_to) '
'SELECT e.eid,s.cw_eid FROM entities as e, cw_CWSource as s '
'WHERE s.cw_name=e.source AND NOT EXISTS(SELECT 1 FROM cw_source_relation WHERE eid_from=e.eid AND eid_to=s.cw_eid)')
commit()
add_attribute('TrInfo', 'tr_count')
sync_schema_props_perms('TrInfo')
sync_schema_props_perms('CWSource', syncprops=False)
import sys
if confirm('fix some corrupted entities noticed on several instances?'):
rql('DELETE CWConstraint X WHERE NOT E constrained_by X')
rql('SET X is_instance_of Y WHERE X is Y, NOT X is_instance_of Y')
commit()
if confirm('fix existing cwuri?'):
from logilab.common.shellutils import progress
rset = rql('Any X, XC WHERE X cwuri XC, X cwuri ~= "%/eid/%"')
title = "%i entities to fix" % len(rset)
nbops = rset.rowcount
enabled = interactive_mode
with progress(title=title, nbops=nbops, size=30, enabled=enabled) as pb:
for i, row in enumerate(rset):
with session.deny_all_hooks_but('integrity'):
data = {'eid': row[0], 'cwuri': row[1].replace(u'/eid', u'')}
rql('SET X cwuri %(cwuri)s WHERE X eid %(eid)s', data)
if not i % 100: # commit every 100 entities to limit memory consumption
pb.text = "%i committed" % i
commit(ask_confirm=False)
pb.update()
commit(ask_confirm=False)
try:
from cubicweb import devtools
option_group_changed('anonymous-user', 'main', 'web')
option_group_changed('anonymous-password', 'main', 'web')
except ImportError:
# cubicweb-dev unavailable, nothing needed
pass
for rtype in ('cw_support', 'cw_dont_cross', 'cw_may_cross'):
drop_relation_type(rtype)
if not 'url' in schema['CWSource'].subjrels:
add_attribute('CWSource', 'url')
add_attribute('CWSource', 'parser')
add_attribute('CWSource', 'latest_retrieval')
sync_schema_props_perms('cw_source')
sync_schema_props_perms('cw_source', syncprops=False)
if schema['BigInt'].eid is None:
add_entity_type('BigInt')
change_attribute_type('CWUser', 'last_login_time', 'TZDatetime')
change_attribute_type('CWSource', 'latest_retrieval', 'TZDatetime')
drop_attribute('CWSource', 'synchronizing')
add_attribute('CWSource', 'in_synchronization')
from __future__ import print_function
config['rql-cache-size'] = config['rql-cache-size'] * 10
add_entity_type('CWDataImport')
from cubicweb.schema import CONSTRAINTS, guess_rrqlexpr_mainvars
for rqlcstr in rql('Any X,XT,XV WHERE X is CWConstraint, X cstrtype XT, X value XV,'
'X cstrtype XT, XT name IN ("RQLUniqueConstraint","RQLConstraint","RQLVocabularyConstraint"),'
'NOT X value ~= ";%"').entities():
expression = rqlcstr.value
mainvars = guess_rrqlexpr_mainvars(expression)
yamscstr = CONSTRAINTS[rqlcstr.type](expression, mainvars)
rqlcstr.cw_set(value=yamscstr.serialize())
print('updated', rqlcstr.type, rqlcstr.value.strip())
# migrate default format for TriInfo `comment_format` attribute
sync_schema_props_perms('TrInfo')
commit()
from cubicweb.server import SOURCE_TYPES
from cubicweb.server.serverconfig import (SourceConfiguration,
generate_source_config)
sync_schema_props_perms('EmailAddress')
def update_config(source, **config):
cfg = source.dictconfig
cfg.update(config)
options = SOURCE_TYPES[source.type].options
sconfig = SourceConfiguration(source._cw.vreg.config, options=options)
for opt, val in cfg.items():
try:
sconfig.set_option(opt, val)
except OptionError:
continue
cfgstr = str(generate_source_config(sconfig), source._cw.encoding)
source.cw_set(config=cfgstr)
for source in rql('CWSource X WHERE X type "ldapuser"').entities():
config = source.dictconfig
host = config.pop('host', u'ldap')
protocol = config.pop('protocol', u'ldap')
source.cw_set(url=u'%s://%s' % (protocol, host))
update_config(source, **config)
commit()
import ConfigParser
try:
undo_actions = config.cfgfile_parser.get('MAIN', 'undo-support', False)
except ConfigParser.NoOptionError:
pass # this conf. file was probably already migrated
else:
config.global_set_option('undo-enabled', bool(undo_actions))
from __future__ import print_function
from logilab.common.shellutils import generate_password
from cubicweb.server.utils import crypt_password
for user in rql('CWUser U WHERE U cw_source S, S name "system", U upassword P, U login L').entities():
salt = user.upassword.getvalue()
if crypt_password('', salt) == salt:
passwd = generate_password()
print('setting random password for user %s' % user.login)
user.set_attributes(upassword=passwd)
commit()
sync_schema_props_perms(('State', 'state_of', 'Workflow'), commit=False)
sync_schema_props_perms(('State', 'name', 'String'))
sync_schema_props_perms(('State', 'state_of', 'Workflow'), commit=False)
sync_schema_props_perms(('State', 'name', 'String'))
add_attribute('CWAttribute', 'extra_props')
for table, column in [
('transactions', 'tx_time'),
('tx_entity_actions', 'tx_uuid'),
('tx_relation_actions', 'tx_uuid')]:
repo.system_source.create_index(session, table, column)
commit()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment