[application/connect] simplify connection logic
``application.connect`` now either sets a full featured ``DBAPISession`` to the
``WebRequest`` object or raises ``AuthenticationError``. The creation and usage
of a fake DBAPISession is now handled by ``main_handle_request`` when needed.
This means that fake DBAPISession are no longer tracked by the session manager
and that user are not given anyway to retrieve them for a later request.
This fake DBAPISession is still passed to ``core_handle`` because multiple cubes
like registration or forgotten password need this behavior. We would like to get
ride of it in the future.
This clarification of the connection API greatly simplifies ``DBAPISession``
retrieval//creation process opening the
way to improvements in this area.
Related to #2503918
from cubicweb import UnknownEid
source, = __args__
sql("DELETE FROM entities WHERE type='Int'")
ecnx = session.cnxset.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.cw_etype, e.eid, meta
continue
if suri != 'system':
try:
print 'deleting', e.cw_etype, e.eid, suri, e.dc_title().encode('utf8')
repo.delete_info(session, e, suri, scleanup=e.eid)
except UnknownEid:
print ' cant delete', e.cw_etype, e.eid, meta
commit()