def test_assign_user_to_icu(self): store = self.store manager_user_id = self.manager_user_id user_id = store.add_user(User(name="user")) icu_id = self.add_icu() self.assertFalse(store.can_edit_bed_count(user_id, icu_id)) # Manager is not managing the ICU and request should fail. with self.assertRaises(ValueError): store.assign_user_to_icu(manager_user_id, user_id, icu_id) store.assign_user_as_icu_manager(self.admin_user_id, manager_user_id, icu_id) store.assign_user_to_icu(manager_user_id, user_id, icu_id) self.assertTrue(store.can_edit_bed_count(user_id, icu_id))
def test_remove_user_from_icu(self): store = self.store icu_id = self.add_icu() # Add a new user to the ICU. manager_user_id = self.manager_user_id store.assign_user_as_icu_manager(self.admin_user_id, manager_user_id, icu_id) user_id = store.add_user_to_icu(manager_user_id, icu_id, User(name="user")) self.assertTrue(store.can_edit_bed_count(user_id, icu_id)) # Now remove the assignment. store.remove_user_from_icu(manager_user_id, user_id, icu_id) # User should lose access. self.assertFalse(store.can_edit_bed_count(user_id, icu_id)) # Removing a non-existent assignment is a no-op. store.remove_user_from_icu(manager_user_id, user_id, icu_id)
def test_get_visible_bed_counts_for_user(self): store = self.store admin_user_id = self.admin_user_id region_id1 = self.add_region("region1") region_id2 = self.add_region("region2") now = datetime.now() def get_values(user_id, max_date=None, force=False): return key_by_name_and_create_date( store.get_visible_bed_counts_for_user(user_id, max_date=max_date, force=force)) icu_id1 = self.add_icu_with_values(region_id1, "icu1", now, [1, 2]) self.add_icu_with_values(region_id1, "icu2", now, [4, 3]) icu_id3 = self.add_icu_with_values(region_id2, "icu3", now, [5]) self.add_icu_with_values(region_id2, "icu4", now, [5], is_active=False) # Admin user should see bed counts of all ICUs. now_plus_1 = add_seconds(now, 1) self.assertDictEqual(get_values(admin_user_id), { ("icu1", now_plus_1): 2, ("icu2", now_plus_1): 3, ("icu3", now): 5 }) # Restrict to now + 1. self.assertDictEqual(get_values(admin_user_id, now_plus_1), { ("icu1", now): 1, ("icu2", now): 4, ("icu3", now): 5 }) # user1 can view ICU1 and 2 as they are in the same region and user1 is # assigned to ICU1. user_id1 = store.add_user_to_icu(admin_user_id, icu_id1, User(name="user1")) self.assertDictEqual(get_values(user_id1), { ("icu1", now_plus_1): 2, ("icu2", now_plus_1): 3 }) # user2 can only view ICU3. user_id2 = store.add_user_to_icu(admin_user_id, icu_id3, User(name="user2")) self.assertDictEqual(get_values(user_id2), {("icu3", now): 5}) # Unless we force to see everything. self.assertDictEqual(get_values(user_id2, force=True), { ("icu1", now_plus_1): 2, ("icu2", now_plus_1): 3, ("icu3", now): 5, }) # when force=True, user_id can be None. get_values(user_id=None, force=True) # When force=False, user_id=None is invalid with self.assertRaisesRegex(ValueError, "Cannot find user with id None"): get_values(user_id=None, force=False)
def test_get_admins(self): store = self.store store.add_user(User(name="user1")) store.add_user(User(name="user2")) self.assertEqual(len(store.get_admins()), 1)
def prepare_for_display(self, user: store.User): if user.is_active is None: user.is_active = True if user.is_admin is None: user.is_admin = False
def get(self): # TODO(fred): load the ICUs to show in the form. self.render("user.html", icus=[], user=User(), error="")
def main(unused_argv): cfg = config.Config(FLAGS.config, mode=FLAGS.mode) store = db_store.create_store_for_sqlite_db(cfg) admin_user_id = store.add_user( User(name='admin', telephone='+33111111111', email='*****@*****.**', is_admin=True, password_hash=store.get_password_hash('password'))) manager_user_id = store.add_user( User(name='manager', telephone='+33222222222', email='*****@*****.**', password_hash=store.get_password_hash('manager'))) region_id = store.add_region(admin_user_id, Region(name='Paris')) def add_icu(name, dept, city, lat, long, telephone, n_covid_occ, n_covid_free, n_ncovid_free, n_covid_deaths, n_covid_healed, n_covid_refused, n_covid_transfered): icu_id = store.add_icu( admin_user_id, ICU(name=name, region_id=region_id, dept=dept, city=city, lat=lat, long=long, telephone=telephone)) store.update_bed_count_for_icu( admin_user_id, BedCount(icu_id=icu_id, n_covid_occ=n_covid_occ, n_covid_free=n_covid_free, n_ncovid_free=n_ncovid_free, n_covid_deaths=n_covid_deaths, n_covid_healed=n_covid_healed, n_covid_refused=n_covid_refused, n_covid_transfered=n_covid_transfered)) return icu_id add_icu('A. Beclere', '92', 'Clamart', 48.788055555555545, 2.2547222222222216, 'test_tel', 23, 4, 12, 200, 34, 7, 1) add_icu('A. Pare', '93', 'Unknown', 48.84916666666667, 2.2355555555555555, 'test_tel', 3, 14, 12, 200, 3, 7, 1) icu_id = add_icu('Avicenne', '93', 'Bobigny', 48.914722222222224, 2.4241666666666664, 'test_tel', 12, 23, 12, 200, 34, 12, 1) store.add_user_to_icu( admin_user_id, icu_id, User(name='user2', telephone='+336699999', description='desc2')) store.assign_user_as_icu_manager(admin_user_id, manager_user_id, icu_id) add_icu('Beaujon', '93', 'Bobigny', 48.90833333333333, 2.310277777777777, 'test_tel', 5, 6, 12, 200, 34, 7, 1) icu_id = add_icu('Bicetre', '93', 'Kremelin-Bicetre', 48.81, 2.353888888888889, 'test_tel', 9, 2, 12, 200, 34, 44, 1) store.add_user_to_icu( admin_user_id, icu_id, User(name='user1', telephone='+336666666', description='desc1'))