misc/scripts/drop_external_entities.py
author Julien Cristau <julien.cristau@logilab.fr>
Wed, 05 Feb 2014 16:34:21 +0100
branchstable
changeset 9523 cd5738fc440f
parent 8900 010a59e12d89
permissions -rw-r--r--
[ajax] use a custom tag to handle dynamically loaded js Using <pre class="script"> makes it trivial for a malicious user to inject arbitrary javascript into a html or rest text element (because it looks innocent to the html sanitizer). Using a custom tag we can be sure that it actually comes from our code and not from untrusted user data. IE ignores custom tags, though, so we put it in its own namespace. https://extranet.logilab.fr/1530578
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()