def test_agency_with_user_no_incident_report(self): Agency.insert_agencies() agency = Agency.get_agency_by_name('SEPTA') u1 = User(email='*****@*****.**', password='******') u2 = User(email='*****@*****.**', password='******') agency.users = [u1, u2] self.assertEqual(agency.name, 'SEPTA') self.assertTrue(agency.is_official) self.assertFalse(agency.is_public) self.assertEqual(agency.users, [u1, u2])
def test_agency_with_incident_report_no_user(self): Agency.insert_agencies() agency = Agency.get_agency_by_name('SEPTA') incident1 = IncidentReport(description='Truck idling on the road!', send_email_upon_creation=False) incident2 = IncidentReport(description='Another one!', send_email_upon_creation=False) agency.incident_reports = [incident1, incident2] self.assertEqual(agency.name, 'SEPTA') self.assertTrue(agency.is_official) self.assertFalse(agency.is_public) self.assertEqual(agency.incident_reports, [incident1, incident2])
def setup_dev(): """Runs the set-up needed for local development.""" setup_general() # Create a default admin user admin = User(email='*****@*****.**', phone_number='+12345678910', password='******', first_name='Admin', last_name='User', role=Role.query.filter_by(permissions=Permission.ADMINISTER) .first(), confirmed=True) # Create a default agency worker user worker = User(email='*****@*****.**', phone_number='+11098764321', password='******', first_name='AgencyWorker', last_name='User', role=Role.query .filter_by(permissions=Permission.AGENCY_WORKER) .first(), confirmed=True) worker.agencies = [Agency.get_agency_by_name('SEPTA')] # Create a default general user general = User(email='*****@*****.**', phone_number='+15434549876', password='******', first_name='General', last_name='User', role=Role.query.filter_by(permissions=Permission.GENERAL) .first(), confirmed=True) db.session.add(admin) db.session.add(worker) db.session.add(general) db.session.commit()
def test_agency_no_user_no_incident_report(self): Agency.insert_agencies() agency = Agency.get_agency_by_name('SEPTA') self.assertEqual(agency.name, 'SEPTA') self.assertTrue(agency.is_official) self.assertFalse(agency.is_public)
def test_agency_case_insensitive(self): db.session.add(Agency(name='sEpTa')) db.session.commit() agency = Agency.get_agency_by_name('septa') self.assertEqual(agency.name, 'SEPTA')
def parse_to_db(db, filename): """Reads a csv and imports the data into a database.""" # The indices in the csv of different data vehicle_id_index = 8 license_plate_index = 9 location_index = 4 date_index = 0 agency_index = 6 picture_index = 13 description_index = 11 validator_form = IncidentReportForm() with open(filename, 'rb') as csv_file: reader = csv.reader(csv_file) columns = reader.next() for i, row in enumerate(reader, start=2): # i is the row number address_text = row[location_index] coords = geocode(address_text) # Ignore rows that do not have correct geocoding if coords[0] is None or coords[1] is None: print_error(i, 'Failed to geocode "{:s}"'.format(address_text)) # Insert correctly geocoded row to database else: loc = Location( latitude=coords[0], longitude=coords[1], original_user_text=address_text) db.session.add(loc) time1, time2 = parse_start_end_time(date_index, row) # Assign correct agency id agency_name = row[agency_index].rstrip() if agency_name.upper() == 'OTHER': agency_name = row[agency_index + 1].rstrip() agency = Agency.get_agency_by_name(agency_name) # Create new agency object if not in database if agency is None: agency = Agency(name=agency_name) agency.is_public = True agency.is_official = False db.session.add(agency) db.session.commit() vehicle_id_text = row[vehicle_id_index].strip() license_plate_text = row[license_plate_index].strip() # If the license plate is too short, just ignore it if len(strip_non_alphanumeric_chars(license_plate_text)) < 3: license_plate_text = '' # Validate all the fields validate_field = functools.partial( validate_field_partial, form=validator_form, row_number=i ) errors = 0 if not validate_field( field=validator_form.vehicle_id, data=vehicle_id_text ): errors += 1 if not validate_field( field=validator_form.description, data=row[description_index] ): errors += 1 if not validate_field( field=validator_form.picture_url, data=row[picture_index] ): errors += 1 if errors == 0: vehicle_id_text = strip_non_alphanumeric_chars( vehicle_id_text) license_plate_text = strip_non_alphanumeric_chars( license_plate_text) incident = IncidentReport( vehicle_id=vehicle_id_text if len(vehicle_id_text) > 0 else None, license_plate=license_plate_text if len(license_plate_text) > 0 else None, location=loc, date=time1, duration=time2 - time1, agency=agency, picture_url=row[picture_index], description=row[description_index], send_email_upon_creation=False, ) db.session.add(incident) db.session.commit() return columns