def get(self): barcode = self.get_argument('barcode', None) if barcode is None: self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return barcode_projects, parent_project = db.getBarcodeProjType( barcode) project_names = db.getProjectNames() # barcode exists get general info if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = "" if (barcode_details['obsolete'] == "Y"): # the barcode is obsolete div_id = "obsolete" message = "Barcode is Obsolete" # get project info for div ag_details = [] if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user)
def post(self): term = self.get_argument('search_term') results = {} # search participant info logins = db.search_participant_info(term) results = set(logins) # search kit info and add to resluts logins = db.search_kits(term) results = results | set(logins) # search barcode and add to results logins = db.search_barcodes(term) results = results | set(logins) # search handout kits handouts = db.search_handout_kits(term) # now take the ag_login_ids and collect the information to display display_results = [] # list of dictionatries for login in results: login_display = {} login_display['login_info'] = db.get_login_info(login) login_display['humans'] = db.getHumanParticipants( login) login_display['animals'] = db.getAnimalParticipants( login) login_display['kit'] = db.get_kit_info_by_login(login) for kit in login_display['kit']: barcode_info = {} ag_barcodes = db.get_barcode_info_by_kit_id( kit['ag_kit_id']) barcode_info = {} for ag_barcode in ag_barcodes: barcode_info[ag_barcode['barcode']] = {} barcode_info[ag_barcode['barcode']]['ag_info'] = ag_barcode lab_barcode_info = db.get_barcode_details( ag_barcode['barcode']) plate = db.get_plate_for_barcode( ag_barcode['barcode']) barcode_info[ag_barcode['barcode']]['barcode_info'] = \ lab_barcode_info barcode_info[ag_barcode['barcode']]['plate'] = plate kit['barcode_info'] = barcode_info display_results.append(login_display) # now render the page self.render("ag_search.html", results=display_results, handouts=handouts, currentuser=self.current_user)
def test_post(self): data = { 'barcode': '000029153', 'parent_project': 'American+Gut', 'postmark_date': '2015-06-25', 'scan_date': '2015-07-01', 'bstatus': 'Recieved', 'biomass_remaining': 'Unknown', 'sequencing_status': 'WAITING', 'obsolete_status': 'N', 'sent_date': '2015-01-07', 'login_user': '******', 'login_email': 'REMOVED', 'email_type': '1', 'sample_date': '2015-06-24', 'sample_time': '22%3A50%3A00', 'sample_site': 'Stool', 'other_text': 'REMOVED', 'send_mail': 'send_mail', } self.mock_login_admin() # check normal behaviour response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn('Barcode %s general details updated' % data['barcode'], response.body) self.assertIn('Project successfully changed', response.body) dbInfo = db.get_barcode_details(data['barcode']) self.assertEqual(date(2015, 6, 25), dbInfo['sample_postmark_date']) self.assertEqual(date(2015, 7, 1), dbInfo['scan_date']) # check that postmark_date and scan_date is set to None # if missed as an argument del data['postmark_date'] del data['scan_date'] response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) dbInfo = db.get_barcode_details(data['barcode']) self.assertEqual(None, dbInfo['sample_postmark_date']) self.assertEqual(None, dbInfo['scan_date']) data['postmark_date'] = '2015-06-25' data['scan_date'] = '2015-07-01' # TODO: Stefan Janssen: looks like we can successfully update a non # existing barcode!! data['barcode'] = 'rdskjmxykgrlyh' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertTrue( '<p> Barcode %s general details updated </p>' % data['barcode'], response.body) data['barcode'] = '000029153' # check that update failes for wrong data types data['postmark_date'] = 'invalid date' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s general details failed" % data['barcode'], response.body) # test changing the barcode's project to a non existing one # TODO: Stefan Janssen: I think this should not result in a positive # message like 'Project successfully changed', because this does not # trigger the creation of a new project! data['project'] = 'NotAProject' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertTrue( '<p> Barcode %s general details updated </p>' % data['barcode'], response.body) self.assertIn('Project successfully changed', response.body) # check updating a AGP barcode del data['project'] response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn( "Barcode %s AG info was successfully updated" % data['barcode'], response.body) data = { 'barcode': db.ut_get_arbitrary_non_ag_barcode(), 'parent_project': db.getProjectNames()[1], 'scan_date': '2014-12-15', 'bstatus': 'Recieved', 'biomass_remaining': 'Unknown', 'sequencing_status': 'WAITING', 'obsolete_status': 'N', 'project': 'UNKNOWN', } response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertNotIn( "Barcode %s AG info was successfully updated" % data['barcode'], response.body) self.assertTrue( '<p> Barcode %s general details updated </p>' % data['barcode'], response.body)
def get(self): barcode = self.get_argument('barcode', None) if barcode is None: self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return barcode_projects, parent_project = db.getBarcodeProjType(barcode) project_names = db.getProjectNames() # barcode exists get general info # TODO (Stefan Janssen): check spelling of "received", i.e. tests in # the template check for 'Recieved'. I think the logic is broken due # to that. if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = "" if (barcode_details['obsolete'] == "Y"): # the barcode is obsolete div_id = "obsolete" # TODO: Stefan: why is that set here, as far as I see, this # message will in all cases be overwritten! message = "Barcode is Obsolete" # get project info for div ag_details = [] if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user)
def get(self): barcode = self.get_argument('barcode', None) if barcode is None: self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return barcode_projects, parent_project = db.getBarcodeProjType(barcode) project_names = db.getProjectNames() # barcode exists get general info if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = "" if (barcode_details['obsolete'] == "Y"): # the barcode is obsolete div_id = "obsolete" message = "Barcode is Obsolete" # get project info for div ag_details = [] if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user)
def test_post(self): data = { "barcode": "000029153", "parent_project": "American+Gut", "postmark_date": "2015-06-25", "scan_date": "2015-07-01", "bstatus": "Recieved", "biomass_remaining": "Unknown", "sequencing_status": "WAITING", "obsolete_status": "N", "sent_date": "2015-01-07", "login_user": "******", "login_email": "REMOVED", "email_type": "1", "sample_date": "2015-06-24", "sample_time": "22%3A50%3A00", "sample_site": "Stool", "other_text": "REMOVED", "send_mail": "send_mail", } self.mock_login_admin() # check normal behaviour response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s general details updated" % data["barcode"], response.body) self.assertIn("Project successfully changed", response.body) dbInfo = db.get_barcode_details(data["barcode"]) self.assertEqual(date(2015, 6, 25), dbInfo["sample_postmark_date"]) self.assertEqual(date(2015, 7, 1), dbInfo["scan_date"]) # check that postmark_date and scan_date is set to None # if missed as an argument del data["postmark_date"] del data["scan_date"] response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) dbInfo = db.get_barcode_details(data["barcode"]) self.assertEqual(None, dbInfo["sample_postmark_date"]) self.assertEqual(None, dbInfo["scan_date"]) data["postmark_date"] = "2015-06-25" data["scan_date"] = "2015-07-01" # TODO: Stefan Janssen: looks like we can successfully update a non # existing barcode!! data["barcode"] = "rdskjmxykgrlyh" response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertTrue("<p> Barcode %s general details updated </p>" % data["barcode"], response.body) data["barcode"] = "000029153" # check that update failes for wrong data types data["postmark_date"] = "invalid date" response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s general details failed" % data["barcode"], response.body) # test changing the barcode's project to a non existing one # TODO: Stefan Janssen: I think this should not result in a positive # message like 'Project successfully changed', because this does not # trigger the creation of a new project! data["project"] = "NotAProject" response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertTrue("<p> Barcode %s general details updated </p>" % data["barcode"], response.body) self.assertIn("Project successfully changed", response.body) # check updating a AGP barcode del data["project"] response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s AG info was successfully updated" % data["barcode"], response.body) # check updating a non-AGP barcode data = { "barcode": "000033786", "parent_project": "PROJECT4", "scan_date": "2016-10-31", "bstatus": "Recieved", "biomass_remaining": "Unknown", "sequencing_status": "WAITING", "obsolete_status": "N", "project": "UNKNOWN", } response = self.post("/barcode_util/", data) self.assertEqual(response.code, 200) self.assertNotIn("Barcode %s AG info was successfully updated" % data["barcode"], response.body) self.assertTrue("<p> Barcode %s general details updated </p>" % data["barcode"], response.body)
def get(self): barcode = self.get_argument('barcode', None) if barcode is None: self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return barcode_projects, parent_project = db.getBarcodeProjType( barcode) project_names = db.getProjectNames() # barcode exists get general info # TODO (Stefan Janssen): check spelling of "received", i.e. tests in # the template check for 'Recieved'. I think the logic is broken due # to that. if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = "" if (barcode_details['obsolete'] == "Y"): # the barcode is obsolete div_id = "obsolete" # TODO: Stefan: why is that set here, as far as I see, this # message will in all cases be overwritten! message = "Barcode is Obsolete" # get project info for div ag_details = [] if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user)
def post(self): barcode = self.get_argument('barcode', None) bstatus = self.get_argument('bstatus', None) postmark_date = self.get_argument('postmark_date', None) scan_date = self.get_argument('scan_date', None) biomass_remaining_value = self.get_argument('biomass_remaining_value', None) sequencing_status = self.get_argument('sequencing_status', None) obsolete_status = self.get_argument('obsolete_status', None) projects = set(self.get_arguments('project')) barcode_projects = 'Unknown' ag_details = {} if bstatus is None: # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return else: barcode_projects, parent_project = db.getBarcodeProjType( barcode) project_names = db.getProjectNames() # barcode exists get general info if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = email_type = "" ag_details = [] if (barcode_details['obsolete'] == "Y"): #the barcode is obsolete div_id = "obsolete" message = "Barcode is Obsolete" #get project info for div if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user) else: #now we collect data and update based on forms #first update general barcode info #Set to non to make sure no conflicts with new date typing in DB if not postmark_date: postmark_date = None if not scan_date: scan_date = None try: db.updateBarcodeStatus('Received', postmark_date, scan_date, barcode, biomass_remaining_value, sequencing_status, obsolete_status) msg1 = "Barcode %s general details updated" % barcode except: msg1 = "Barcode %s general details failed" % barcode msg2 = msg3 = msg4 = None exisiting_proj, parent_project = db.getBarcodeProjType(barcode) exisiting_proj = set(exisiting_proj.split(',')) if exisiting_proj != projects: try: add_projects = projects.difference(exisiting_proj) rem_projects = exisiting_proj.difference(projects) print exisiting_proj print projects print add_projects print rem_projects db.setBarcodeProjects(barcode, add_projects, rem_projects) msg4 = "Project successfully changed" except: msg4 = "Error changing project" new_proj, parent_project = db.getBarcodeProjType(barcode) if parent_project == 'American Gut': msg2, msg3 = self.update_ag_barcode(barcode) self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=(msg1, msg2, msg3, msg4), currentuser=self.current_user)
def post(self): barcode = self.get_argument('barcode', None) bstatus = self.get_argument('bstatus', None) postmark_date = self.get_argument('postmark_date', None) scan_date = self.get_argument('scan_date', None) biomass_remaining_value = self.get_argument('biomass_remaining_value', None) sequencing_status = self.get_argument('sequencing_status', None) obsolete_status = self.get_argument('obsolete_status', None) projects = set(self.get_arguments('project')) barcode_projects = 'Unknown' ag_details = {} if bstatus is None: # gather info to display barcode_details = db.get_barcode_details(barcode) if len(barcode_details) == 0: div_id = "invalid_barcode" message = ("Barcode %s does not exist in the database" % barcode) self.render("barcode_util.html", div_and_msg=(div_id, message, barcode), barcode_projects=[], parent_project=None, project_names=[], barcode=barcode, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=None, currentuser=self.current_user) return else: barcode_projects, parent_project = db.getBarcodeProjType( barcode) project_names = db.getProjectNames() # barcode exists get general info if barcode_details['status'] is None: barcode_details['status'] = 'Received' if barcode_details['biomass_remaining'] is None: barcode_details['biomass_remaining'] = 'Unknown' if barcode_details['sequencing_status'] is None: barcode_details['sequencing_status'] if barcode_details['obsolete'] is None: barcode_details['obsolete'] = 'N' div_id = message = email_type = "" ag_details = [] if (barcode_details['obsolete'] == "Y"): #the barcode is obsolete div_id = "obsolete" message = "Barcode is Obsolete" #get project info for div if parent_project == 'American Gut': div_id, message, ag_details = self.get_ag_details(barcode) else: div_id = "verified" message = "Barcode Info is correct" div_and_msg = (div_id, message, barcode) self.render("barcode_util.html", div_and_msg=div_and_msg, barcode_projects=barcode_projects, parent_project=parent_project, project_names=project_names, barcode=barcode, email_type=None, barcode_info=barcode_details, proj_barcode_info=ag_details, msgs=None, currentuser=self.current_user) else: #now we collect data and update based on forms #first update general barcode info #Set to non to make sure no conflicts with new date typing in DB if not postmark_date: postmark_date = None if not scan_date: scan_date = None try: db.updateBarcodeStatus('Received', postmark_date, scan_date, barcode, biomass_remaining_value, sequencing_status, obsolete_status) msg1 = "Barcode %s general details updated" % barcode except: msg1 = "Barcode %s general details failed" % barcode msg2 = msg3 = msg4 = None exisiting_proj, parent_project = db.getBarcodeProjType( barcode) exisiting_proj = set(exisiting_proj.split(',')) if exisiting_proj != projects: try: add_projects = projects.difference(exisiting_proj) rem_projects = exisiting_proj.difference(projects) print exisiting_proj print projects print add_projects print rem_projects db.setBarcodeProjects(barcode, add_projects, rem_projects) msg4 = "Project successfully changed" except: msg4 = "Error changing project" new_proj, parent_project = db.getBarcodeProjType(barcode) if parent_project == 'American Gut': msg2, msg3 = self.update_ag_barcode(barcode) self.render("barcode_util.html", div_and_msg=None, barcode_projects=[], parent_project=None, project_names=[], barcode=None, email_type=None, barcode_info=None, proj_barcode_info=None, msgs=(msg1, msg2, msg3, msg4), currentuser=self.current_user)
def test_post(self): data = { 'barcode': '000029153', 'parent_project': 'American+Gut', 'postmark_date': '2015-06-25', 'scan_date': '2015-07-01', 'bstatus': 'Recieved', 'biomass_remaining': 'Unknown', 'sequencing_status': 'WAITING', 'obsolete_status': 'N', 'sent_date': '2015-01-07', 'login_user': '******', 'login_email': 'REMOVED', 'email_type': '1', 'sample_date': '2015-06-24', 'sample_time': '22%3A50%3A00', 'sample_site': 'Stool', 'other_text': 'REMOVED', 'send_mail': 'send_mail', } self.mock_login_admin() # check normal behaviour response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn('Barcode %s general details updated' % data['barcode'], response.body) self.assertIn('Project successfully changed', response.body) dbInfo = db.get_barcode_details(data['barcode']) self.assertEqual(date(2015, 6, 25), dbInfo['sample_postmark_date']) self.assertEqual(date(2015, 7, 1), dbInfo['scan_date']) # check that postmark_date and scan_date is set to None # if missed as an argument del data['postmark_date'] del data['scan_date'] response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) dbInfo = db.get_barcode_details(data['barcode']) self.assertEqual(None, dbInfo['sample_postmark_date']) self.assertEqual(None, dbInfo['scan_date']) data['postmark_date'] = '2015-06-25' data['scan_date'] = '2015-07-01' # TODO: Stefan Janssen: looks like we can successfully update a non # existing barcode!! data['barcode'] = 'rdskjmxykgrlyh' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertTrue('<p> Barcode %s general details updated </p>' % data['barcode'], response.body) data['barcode'] = '000029153' # check that update failes for wrong data types data['postmark_date'] = 'invalid date' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s general details failed" % data['barcode'], response.body) # test changing the barcode's project to a non existing one # TODO: Stefan Janssen: I think this should not result in a positive # message like 'Project successfully changed', because this does not # trigger the creation of a new project! data['project'] = 'NotAProject' response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertTrue('<p> Barcode %s general details updated </p>' % data['barcode'], response.body) self.assertIn('Project successfully changed', response.body) # check updating a AGP barcode del data['project'] response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertIn("Barcode %s AG info was successfully updated" % data['barcode'], response.body) data = { 'barcode': db.ut_get_arbitrary_non_ag_barcode(), 'parent_project': db.getProjectNames()[1], 'scan_date': '2014-12-15', 'bstatus': 'Recieved', 'biomass_remaining': 'Unknown', 'sequencing_status': 'WAITING', 'obsolete_status': 'N', 'project': 'UNKNOWN', } response = self.post('/barcode_util/', data) self.assertEqual(response.code, 200) self.assertNotIn("Barcode %s AG info was successfully updated" % data['barcode'], response.body) self.assertTrue('<p> Barcode %s general details updated </p>' % data['barcode'], response.body)