[datafeed] add parser to import cubicweb xml
this parser is configurable through a mapping, which basically
tells which entity's relation should be copied. Multiple actions
to control backport of data are available:
* 'copy': copy the external entities locally (though marked as
coming from the data feed source)
* 'link': find similar entity internaly (e.g. for states)
* 'link-or-create': try to find a similar entity internaly, and create
it if necessary (won't be marked as coming from the data feed source,
e.g. for tags)
from cubicweb import UnknownEid
source, = __args__
sql("DELETE FROM entities WHERE type='Int'")
ecnx = session.pool.connection(source)
for e in rql('Any X WHERE X cw_source S, S name %(name)s', {'name': source}).entities():
meta = e.cw_metainformation()
assert meta['source']['uri'] == source
try:
suri = ecnx.describe(meta['extid'])[1]
except UnknownEid:
print 'cant describe', e.__regid__, e.eid, meta
continue
if suri != 'system':
try:
print 'deleting', e.__regid__, e.eid, suri, e.dc_title().encode('utf8')
repo.delete_info(session, e, suri, meta['extid'], scleanup=True)
except UnknownEid:
print ' cant delete', e.__regid__, e.eid, meta
commit()