remove 3.9 bw compat
In cw 3.9, interfaces are deprecated and replaced with adapters,
yielding a lot of bw compat in many places -- most if this patch is
concerned with the interface bw compat
- cwvreg: interface cleanup
- doc/adapters.rst: interface cleanup
- entities/adapters.py, wfobjs.py: interfaces bw compat
- entity.py: interfaces bw compat, also get_value, delete,
attr_metadata, has_perm, set_related_cache, clear_related_cache,
clear_related_cache, related_rql
- predicates.py: score_interfaces & implements
- interfaces.py & mixins.py: 100% gone
- view.py: implement_adapter_compat, unwrap_adapter_compat
- calendar.py, editcontroller.py, ibreadcrumbs.py, navigation.py, xmlrss.py:
interface bw compat
- treeview.py: salvage one function from mixins.py
Related to #2782004.
"""execute this script if you've migration to file >= 1.9.0 with cubicweb <= 3.9.2
FYI, this migration occurred :
* on our intranet on July 07 2010
* on our extranet on July 16 2010
"""
try:
backupinstance, = __args__
except ValueError:
print 'USAGE: cubicweb-ctl shell <instance> repair_file_1-9_migration.py -- <backup instance id>'
print
print 'you should restored the backup on a new instance, accessible through pyro'
from cubicweb import cwconfig, dbapi
from cubicweb.server.session import hooks_control
sourcescfg = repo.config.sources()
backupcfg = cwconfig.instance_configuration(backupinstance)
backupcfg.repairing = True
backuprepo, backupcnx = dbapi.in_memory_repo_cnx(backupcfg, sourcescfg['admin']['login'],
password=sourcescfg['admin']['password'],
host='localhost')
backupcu = backupcnx.cursor()
with hooks_control(session, session.HOOKS_DENY_ALL):
rql('SET X is Y WHERE X is File, Y name "File", NOT X is Y')
rql('SET X is_instance_of Y WHERE X is File, Y name "File", NOT X is_instance_of Y')
for rtype, in backupcu.execute('DISTINCT Any RTN WHERE X relation_type RT, RT name RTN,'
'X from_entity Y, Y name "Image", X is CWRelation, '
'EXISTS(XX is CWRelation, XX relation_type RT, '
'XX from_entity YY, YY name "File")'):
if rtype in ('is', 'is_instance_of'):
continue
print rtype
for feid, xeid in backupcu.execute('Any F,X WHERE F %s X, F is IN (File,Image)' % rtype):
print 'restoring relation %s between file %s and %s' % (rtype, feid, xeid),
print rql('SET F %s X WHERE F eid %%(f)s, X eid %%(x)s, NOT F %s X' % (rtype, rtype),
{'f': feid, 'x': xeid})
for rtype, in backupcu.execute('DISTINCT Any RTN WHERE X relation_type RT, RT name RTN,'
'X to_entity Y, Y name "Image", X is CWRelation, '
'EXISTS(XX is CWRelation, XX relation_type RT, '
'XX to_entity YY, YY name "File")'):
print rtype
for feid, xeid in backupcu.execute('Any F,X WHERE X %s F, F is IN (File,Image)' % rtype):
print 'restoring relation %s between %s and file %s' % (rtype, xeid, feid),
print rql('SET X %s F WHERE F eid %%(f)s, X eid %%(x)s, NOT X %s F' % (rtype, rtype),
{'f': feid, 'x': xeid})
commit()