[ui] provide an autocomplete RQL bar (closes #2439846)
"""turn a pyro source into a datafeed sourceOnce this script is run, execute c-c db-check to cleanup relation tables."""importsystry:source_name,=__args__source=repo.sources_by_uri[source_name]exceptValueError:print('you should specify the source name as script argument (i.e. after --'' on the command line)')sys.exit(1)exceptKeyError:print'%s is not an active source'%source_namesys.exit(1)# check source is reachable before doing anythingifnotsource.get_connection().cnx:print'%s is not reachable. Fix this before running this script'%source_namesys.exit(1)raw_input('Ensure you have shutdown all instances of this application before continuing.'' Type enter when ready.')system_source=repo.system_sourcefromdatetimeimportdatetimefromcubicweb.server.editionimportEditedEntitysession.mode='write'# hold on the connections setprint'******************** backport entity content ***************************'todelete={}forentityinrql('Any X WHERE X cw_source S, S eid %(s)s',{'s':source.eid}).entities():etype=entity.__regid__ifnotsource.support_entity(etype):print"source doesn't support %s, delete %s"%(etype,entity.eid)else:try:entity.complete()exceptException:print'%s%s much probably deleted, delete it (extid %s)'%(etype,entity.eid,entity.cw_metainformation()['extid'])else:print'get back',etype,entity.eidentity.cw_edited=EditedEntity(entity,**entity.cw_attr_cache)ifnotentity.creation_date:entity.cw_edited['creation_date']=datetime.now()ifnotentity.modification_date:entity.cw_edited['modification_date']=datetime.now()ifnotentity.upassword:entity.cw_edited['upassword']=u''ifnotentity.cwuri:entity.cw_edited['cwuri']='%s/?dn=%s'%(source.urls[0],entity.cw_metainformation()['extid'])printentity.cw_editedsystem_source.add_entity(session,entity)sql("UPDATE entities SET source='system' ""WHERE eid=%(eid)s",{'eid':entity.eid})continuetodelete.setdefault(etype,[]).append(entity)# only cleanup entities table, remaining stuff should be cleaned by a c-c# db-check to be run after this scriptforentitiesintodelete.values():system_source.delete_info_multi(session,entities,source_name)source_ent=rql('CWSource S WHERE S eid %(s)s',{'s':source.eid}).get_entity(0,0)source_ent.cw_set(type=u"ldapfeed",parser=u"ldapfeed")commit()