misc/scripts/drop_external_entities.py
author Pierre-Yves David <pierre-yves.david@logilab.fr>
Mon, 22 Apr 2013 17:57:46 +0200
changeset 8934 48a6e6b88b16
parent 8900 010a59e12d89
permissions -rw-r--r--
[session] deprecate `hijack_user` method The semantic of this method is wicked and lead to very hard violation of sanity. (multiple transaction using the very same cursors). We deprecated the API to be able to drop it as soon as possible. The method was added long ago for some notification trick. It is not needed since we sent notification on ``postcommit_event``. (closes #2781782)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6636
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     1
from cubicweb import UnknownEid
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     2
source, = __args__
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     3
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     4
sql("DELETE FROM entities WHERE type='Int'")
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     5
7398
26695dd703d8 [repository api] definitly kill usage of word 'pool' to refer to connections set used by a session
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 6636
diff changeset
     6
ecnx = session.cnxset.connection(source)
6636
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     7
for e in rql('Any X WHERE X cw_source S, S name %(name)s', {'name': source}).entities():
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     8
    meta = e.cw_metainformation()
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
     9
    assert meta['source']['uri'] == source
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    10
    try:
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    11
        suri = ecnx.describe(meta['extid'])[1]
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    12
    except UnknownEid:
8900
010a59e12d89 use cw_etype instead of __regid__
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 7884
diff changeset
    13
        print 'cant describe', e.cw_etype, e.eid, meta
6636
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    14
        continue
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    15
    if suri != 'system':
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    16
        try:
8900
010a59e12d89 use cw_etype instead of __regid__
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 7884
diff changeset
    17
            print 'deleting', e.cw_etype, e.eid, suri, e.dc_title().encode('utf8')
7884
35d2e2f4e10a [repo] cleanup [_]delete_info prototype: extid argument isn't used
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents: 7398
diff changeset
    18
            repo.delete_info(session, e, suri, scleanup=e.eid)
6636
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    19
        except UnknownEid:
8900
010a59e12d89 use cw_etype instead of __regid__
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents: 7884
diff changeset
    20
            print '  cant delete', e.cw_etype, e.eid, meta
6636
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    21
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    22
dbc9cce53c11 [ms] script to drop external entities from an external source
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
diff changeset
    23
commit()