From 5bb86bbbc31f91aecbbcfc1217d349646fe2e86a Mon Sep 17 00:00:00 2001 From: Kent Wills Date: Sat, 18 Mar 2017 06:27:37 -0700 Subject: [PATCH] populate subscription data for initial setup #23 --- cron.yaml | 5 +++++ tests/routes/tasks_test.py | 12 ++++++++++++ yelp_beans/routes/tasks.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/cron.yaml b/cron.yaml index 507c288c..20c48d31 100644 --- a/cron.yaml +++ b/cron.yaml @@ -18,3 +18,8 @@ cron: url: /tasks/match_employees schedule: every wednesday 11:00 timezone: US/Pacific + +- description: Initialization (noop when subscriptions) + url: /tasks/init + schedule: every monday 11:00 + timezone: US/Pacific diff --git a/tests/routes/tasks_test.py b/tests/routes/tasks_test.py index 28577271..cd393cf1 100644 --- a/tests/routes/tasks_test.py +++ b/tests/routes/tasks_test.py @@ -6,9 +6,11 @@ from google.appengine.ext import ndb from yelp_beans.models import MeetingSpec +from yelp_beans.models import MeetingSubscription from yelp_beans.models import User from yelp_beans.models import UserSubscriptionPreferences from yelp_beans.routes.tasks import generate_meeting_specs +from yelp_beans.routes.tasks import init from yelp_beans.routes.tasks import weekly_opt_in @@ -42,3 +44,13 @@ def test_weekly_opt_in(minimal_database, subscription): user1.put() response = weekly_opt_in() assert response == 'OK' + + +def test_init(minimal_database): + assert len(MeetingSubscription.query().fetch()) == 0 + response = init() + assert response == 'OK' + assert len(MeetingSubscription.query().fetch()) == 1 + response = init() + assert response == 'OK' + assert len(MeetingSubscription.query().fetch()) == 1 diff --git a/yelp_beans/routes/tasks.py b/yelp_beans/routes/tasks.py index 5cb92fb8..6c6346ca 100644 --- a/yelp_beans/routes/tasks.py +++ b/yelp_beans/routes/tasks.py @@ -4,6 +4,8 @@ from __future__ import unicode_literals import logging +from datetime import datetime +from datetime import timedelta from flask import Blueprint @@ -19,6 +21,8 @@ from yelp_beans.models import MeetingParticipant from yelp_beans.models import MeetingRequest from yelp_beans.models import MeetingSubscription +from yelp_beans.models import Rule +from yelp_beans.models import SubscriptionDateTime from yelp_beans.send_email import send_batch_meeting_confirmation_email from yelp_beans.send_email import send_batch_unmatched_email from yelp_beans.send_email import send_batch_weekly_opt_in_email @@ -92,3 +96,31 @@ def send_match_emails(): logging.info(matches) send_batch_meeting_confirmation_email(matches, spec) return "OK" + + +@tasks.route('/init', methods=['POST']) +def init(): + subscriptions = MeetingSubscription.query().fetch() + if not subscriptions: + preference_1 = SubscriptionDateTime( + datetime=datetime.now() + ).put() + preference_2 = SubscriptionDateTime( + datetime=datetime.now() + timedelta(days=1) + ).put() + rule = Rule( + name='office', + value='USA: CA SF New Montgomery Office' + ).put() + + MeetingSubscription( + title='Yelp Weekly', + size=2, + location='8th Floor', + office='USA: CA SF New Montgomery Office', + timezone='US/Pacific', + datetime=[preference_1, preference_2], + rules=[rule], + rule_logic='any' + ).put() + return "OK"