def get_users_from_spec(meeting_spec): logging.info('Meeting subscription for spec:') logging.info(meeting_spec.meeting_subscription) logging.info('All Preferences') logging.info(UserSubscriptionPreferences.query().fetch()) user_sub_preferences = UserSubscriptionPreferences.query( UserSubscriptionPreferences.subscription == meeting_spec.meeting_subscription).fetch() logging.info('User Preferences') logging.info(user_sub_preferences) users = [] for user_preference in user_sub_preferences: if user_preference.preference: logging.info('User Preference') logging.info(user_preference.preference) logging.info(user_preference.preference.get()) preference_dt = user_preference.preference.get().datetime if preference_dt.hour == meeting_spec.datetime.hour and \ preference_dt.minute == meeting_spec.datetime.minute and \ preference_dt.weekday() == meeting_spec.datetime.weekday(): user = User.query(User.subscription_preferences == user_preference.key).get() logging.info('user added: ') logging.info(user) users.append(user) return users
def test_remove_preferences_removes_on_opt_out(minimal_database, subscription): preference = subscription.datetime[0] user_pref = UserSubscriptionPreferences( preference=preference, subscription=subscription.key, ).put() user = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref]) user.put() assert user.subscription_preferences == [user_pref] updated_preferences = {preference: False} removed = remove_preferences(user, updated_preferences, subscription.key) assert removed == {user_pref} user = user.key.get() assert user.subscription_preferences == [] assert UserSubscriptionPreferences.query().fetch() == []
def metrics_api(): keys_only = ndb.QueryOptions(keys_only=True) meeting_subscriptions = MeetingSubscription.query().fetch() metrics = [] for subscription in meeting_subscriptions: data = { 'title': subscription.title, 'subscribed': UserSubscriptionPreferences.query( UserSubscriptionPreferences.subscription == subscription.key).count(options=keys_only), 'meetings': Meeting.query().count(options=keys_only), } metrics.append(data) return json.dumps(metrics)
def test_remove_preferences_multiple_remove_on_opt_in(minimal_database, subscription): preference_1 = subscription.datetime[0] preference_2 = subscription.datetime[1] user_pref_1 = UserSubscriptionPreferences( preference=preference_1, subscription=subscription.key, ).put() user_pref_2 = UserSubscriptionPreferences( preference=preference_2, subscription=subscription.key, ).put() user = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref_1, user_pref_2]) user.put() assert user.subscription_preferences == [user_pref_1, user_pref_2] updated_preferences = {preference_1: False, preference_2: False} removed = remove_preferences(user, updated_preferences, subscription.key) assert removed == {user_pref_1, user_pref_2} user = user.key.get() assert user.subscription_preferences == [] assert UserSubscriptionPreferences.query().fetch() == []