def test_small_cohort(self): cohort_upload = CohortUpload() cohort_upload.name.data = 'small_cohort' cohort_upload.project.data = mediawiki_project cohort_upload.records = [ # two existing users {'username': '******', 'project': mediawiki_project}, {'username': '******', 'project': mediawiki_project}, # one invalid username {'username': '******', 'project': mediawiki_project}, # one user with invalid project {'username': '******', 'project': 'Nonexisting'}, ] v = ValidateCohort.from_upload(cohort_upload, self.owner_user_id) v.task.delay(v).get() self.session.commit() assert_equal(self.session.query(WikiUser).filter( WikiUser.mediawiki_username == 'Editor test-specific-0').one().valid, True) assert_equal(self.session.query(WikiUser).filter( WikiUser.mediawiki_username == 'Editor test-specific-1').one().valid, True) assert_equal(self.session.query(WikiUser).filter( WikiUser.mediawiki_username == 'Nonexisting').one().valid, False) assert_equal(self.session.query(WikiUser).filter( WikiUser.mediawiki_username == 'Nonexisting2').one().valid, False)
def test_from_upload_exception(self): cohort_upload = CohortUpload() cohort_upload.name.data = 'small_cohort' cohort_upload.project.data = 'wiki' cohort_upload.records = [{'fake': 'dict'}] v = ValidateCohort.from_upload(cohort_upload, self.owner_user_id) assert_equal(v, None)
def cohort_upload(): """ View for uploading and validating a new cohort via CSV """ form = CohortUpload() if request.method == 'POST': form = CohortUpload.from_request(request) try: if not form.validate(): flash('Please fix validation problems.', 'warning') elif get_cohort_by_name(form.name.data): flash('That Cohort name is already taken.', 'warning') else: form.parse_records() vc = ValidateCohort.from_upload(form, current_user.id) vc.task.delay(vc) return redirect('{0}#{1}'.format( url_for('cohorts_index'), vc.cohort_id )) except Exception, e: app.logger.exception(str(e)) flash('Server error while processing your upload', 'error')