Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 def get(self):
     # TODO(fred): load the ICUs to show in the form.
     self.render("user.html", icus=[], user=User(), error="")
Exemplo n.º 7
0
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'))