def execute(cls, options): q_project = {} if options.nbhd: nbhd = M.Neighborhood.query.get(url_prefix=options.nbhd) if not nbhd: return "Invalid neighborhood url prefix." q_project['neighborhood_id'] = nbhd._id if options.project: q_project['shortname'] = options.project elif options.project_regex: q_project['shortname'] = {'$regex': options.project_regex} for chunk in chunked_find(M.Project, q_project): project_ids = [] for p in chunk: log.info('Reindex project %s', p.shortname) if options.dry_run: continue c.project = p project_ids.append(p._id) try: for chunk in chunked_list(project_ids, options.max_chunk): if options.tasks: cls._post_add_projects(chunk) else: add_projects(chunk) except CompoundError, err: log.exception('Error indexing projects:\n%r', err) log.error('%s', err.format_error()) M.main_orm_session.flush() M.main_orm_session.clear()
def test_del_projects(self): projects = M.Project.query.find().all() index_tasks.add_projects([p._id for p in projects]) with mock.patch('allura.tasks.index_tasks.g.solr') as solr: index_tasks.del_projects([p.index_id() for p in projects]) assert solr.delete.call_count, 1 for project in projects: assert project.index_id() in solr.delete.call_args[1]['q']