def jobsfs_to_mongo(guid, buid, name): """Composed method for resopnding to a guid update.""" assert re.match(r'^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$', guid.upper()), \ "%s is not a valid guid" % guid assert re.match(r'^\d+$', str(buid)), "%s is not a valid buid" % buid logger.info("Updating Job Source %s", guid) # Make the BusinessUnit and Company create_businessunit(buid) bu = BusinessUnit.objects.get(id=buid) bu.title = name bu.save() add_company(bu) # Lookup the jobs, filter then, transform them, and then load the jobs zf = get_jobsfs_zipfile(guid) jobs = get_jobs_from_zipfile(zf, guid) jobs = filter_current_jobs(jobs, bu) jobs = (hr_xml_to_json(job, bu) for job in jobs) jobs = list(jobs) for job in jobs: job['guid'] = job['guid'].lower() if len(jobs) > 0: collection = connect_db().db.jobs bulk = collection.initialize_unordered_bulk_op() for job in jobs: bulk.find({'guid': job['guid']}).upsert().replace_one(job) bulk.execute()
def test_filtering_on_includeinindex_bit(self): """Test that filtering on the include_in_index bit works""" # Prove we have the expected number of jobs in the zipfile itself. self.assertEqual(len(self.jobs), 28, "Expected to find 28 jobs in the test zipfile, instead found %s" % len(self.jobs)) # Prove that filtering works. filtered_jobs = list(filter_current_jobs(self.jobs, self.businessunit)) self.assertEqual(len(filtered_jobs), 27, "filter_current_jobs should rmeove jobs with the includeinindex bit set, " "it's expected to return %s. Instead it returned %s" % (27, len(filtered_jobs)))
def test_businessunit_ignore_includeinindex(self): """Test that filtering on the include_in_index bit can be overridden on a per business unit basis.""" # Set ignore_includeinindex on the test BusinessUnit self.businessunit.ignore_includeinindex = True self.businessunit.save() # Prove we have the expected number of jobs in the zipfile itself. self.assertEqual(len(self.jobs), 28, "Expected to find 0 jobs in the test zipfile, instead found %s" % len(self.jobs)) # Prove that filtering works. filtered_jobs = list(filter_current_jobs(self.jobs, self.businessunit)) self.assertEqual(len(filtered_jobs), 28, "filter_current_jobs should ignore the includeinindex bit, returning 39 jobs. " "Instead returned %s." % len(filtered_jobs))