def test_common_count(clean_db): """Test counting behavior, inherited from CommonColumns""" num = 105 for i in range(num): name = f"user_{i}" Users(email=f"{name}@example.com", first_n=name).insert() # Count without filter assert Users.count() == num # Count with filter def f(q): return q.filter(Users.first_n.like("%9%")) num_expected = len(list(f"user_{i}" for i in range(100) if "9" in str(i))) assert Users.count(filter_=f) == num_expected
def refresh_download_permissions(*args): """ Extend the expiry date for GCS download permissions belonging to users who accessed the system in the last 2 (or so) days. If we don't do this, users whose accounts are still active might lose GCS download permission prematurely. """ active_today = lambda q: q.filter( # Provide a 3 day window to ensure we don't miss anyone # if, e.g., this function fails to run on a certain day. Users._accessed > datetime.today() - timedelta(days=3) ) with sqlalchemy_session() as session: active_users = Users.list( page_size=Users.count(session=session, filter_=active_today), session=session, filter_=active_today, ) for user in active_users: print(f"Refreshing IAM download permissions for {user.email}") Permissions.grant_iam_permissions(user, session=session)