예제 #1
0
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
예제 #2
0
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() == []
예제 #3
0
파일: metrics.py 프로젝트: bxm156/beans
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)
예제 #4
0
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() == []