Exemplo n.º 1
0
def send_request_message(reqs):
    for mid, value in reqs.items():
        # store sent mids for receiving result
        user = User.get_key(mid).get()
        if user is None:
            key = create_user(mid)
            user = key.get()

        user.status = User.STAT_WAIT_RESULT
        user.status_info = value
        user.status_expire = utc_now()+timedelta(seconds=RESULT_TIMEOUT*60)
        user.put()
        
    send_message(reqs.keys(), u'昨日はお疲れさまでした。今日の様子はいかがですか?返信してくださいね!')
Exemplo n.º 2
0
def send_watch_message(watches):
    for mid, value in watches.items():
        # store sent mids for receiving replies
        user = User.get_key(mid).get()
        if user is None:
            key = create_user(mid)
            user = key.get()

        user.status = User.STAT_WAIT_REPLY
        user.status_info = value
        user.status_expire = utc_now()+timedelta(seconds=WATCH_REPLY_TIMEOUT*60)
        user.put()
        
    send_message(watches.keys(), u'楽しんでいますか?どのくらい飲みましたか?返信してくださいね!')
Exemplo n.º 3
0
def send_request_message(reqs):
    for mid, value in reqs.items():
        # store sent mids for receiving result
        user = User.get_key(mid).get()
        if user is None:
            key = create_user(mid)
            user = key.get()

        user.status = User.STAT_WAIT_RESULT
        user.status_info = value
        user.status_expire = utc_now() + timedelta(seconds=RESULT_TIMEOUT * 60)
        user.put()

    send_message(reqs.keys(), u'昨日はお疲れさまでした。今日の様子はいかがですか?返信してくださいね!')
Exemplo n.º 4
0
def send_watch_message(watches):
    for mid, value in watches.items():
        # store sent mids for receiving replies
        user = User.get_key(mid).get()
        if user is None:
            key = create_user(mid)
            user = key.get()

        user.status = User.STAT_WAIT_REPLY
        user.status_info = value
        user.status_expire = utc_now() + timedelta(
            seconds=WATCH_REPLY_TIMEOUT * 60)
        user.put()

    send_message(watches.keys(), u'楽しんでいますか?どのくらい飲みましたか?返信してくださいね!')
Exemplo n.º 5
0
    def testHistory(self):
        test_id = 'test'
        test_msgs = [u'過去の飲みは?', u'これまでの呑みを', u'今までの呑みは?', u'前の呑み']
        for test_msg in test_msgs:
            msg = handle_message(test_id, test_msg)
            self.assertTrue(msg.startswith(u'まだ飲みの'), msg)

        user = User(id=test_id)
        user.put()
        for test_msg in test_msgs:
            msg = handle_message(test_id, test_msg)
            self.assertTrue(msg.startswith(u'過去の飲みは'), msg)

        user = User.get_key(test_id).get()
        self.assertTrue(user.history_url != None and len(user.history_url) > 0)
        self.assertTrue(user.history_expire < utc_now() +
                        timedelta(minutes=HISTORY_DURATION))

        sdt = utc_now() + timedelta(days=-2)
        check_sdt = []
        for i in range(MAX_HISTORY + 1):
            watches = []
            for j in range(WATCH_COUNTS):
                watches.append(
                    Watch(date=sdt + timedelta(minutes=WATCH_INTERVAL *
                                               (i + 1))))

            key = test_id + sdt.strftime('%Y%m%d%H%M')
            drinking = Drinking(id=key,
                                mid=test_id,
                                start_date=sdt,
                                watches=watches)
            drinking.put()
            check_sdt.append(
                format_jdate(sdt.replace(tzinfo=tz_utc).astimezone(tz_jst)))
            sdt = sdt + timedelta(days=-1)

        self.assertEqual(get_drinking_history_content(user.history_url[:-1]),
                         None)

        soup = BeautifulSoup(get_drinking_history_content(user.history_url),
                             'html.parser')
        trs = soup.body.div.table.tbody.findAll('tr')
        self.assertEqual(len(trs), MAX_HISTORY * 2)
        for i in range(MAX_HISTORY):
            self.assertEqual(trs[i * 2].td.text, check_sdt[i])
Exemplo n.º 6
0
def get_status(user_id, is_peek=False):
    mid = user_id
    now = utc_now()
    user = User.get_key(mid).get()
    if user is None or user.status == User.STAT_NONE:
        return (User.STAT_NONE, None)
    else:
        status = user.status
        expire = user.status_expire
        info = user.status_info

        if is_peek == False:
            user.status = User.STAT_NONE
            user.put()

        if expire < now:
            # expired
            return (User.STAT_NONE, None)

        return (status, info)
Exemplo n.º 7
0
def get_status(user_id, is_peek=False):
    mid = user_id
    now = utc_now()
    user = User.get_key(mid).get()
    if user is None or user.status == User.STAT_NONE:
        return (User.STAT_NONE, None)
    else:
        status = user.status
        expire = user.status_expire
        info = user.status_info

        if is_peek == False:
            user.status = User.STAT_NONE
            user.put()

        if expire < now:
            # expired
            return (User.STAT_NONE, None)

        return (status, info)
Exemplo n.º 8
0
def history_drinking(mid):
    worst_drinking = get_worst_dinking(mid)

    history_url = generate_random_url(mid)
    user = User.get_key(mid).get()
    if history_url is None or user is None:
        return u'まだ飲みの登録がないか、参照が行えません'

    user.history_url = history_url
    user.history_expire = utc_now()+timedelta(minutes=HISTORY_DURATION)
    user.put()

    msg = ''
    if worst_drinking:
        msg += u'最悪の飲みは %s だったようです。\n' % \
               (format_jdate(worst_drinking.start_date.
                             replace(tzinfo=tz_utc).astimezone(tz_jst)))
        for kind in worst_drinking.summary:
            msg += u'  %s %d 杯\n' % (kind, worst_drinking.summary[kind])
        msg += '\n'

    url = service_url + '/history/' + history_url
    return msg + u'過去の飲みは %s を参照ください。このURLは%d分間有効です。' % (url, HISTORY_DURATION)
Exemplo n.º 9
0
def history_drinking(mid):
    worst_drinking = get_worst_dinking(mid)

    history_url = generate_random_url(mid)
    user = User.get_key(mid).get()
    if history_url is None or user is None:
        return u'まだ飲みの登録がないか、参照が行えません'

    user.history_url = history_url
    user.history_expire = utc_now() + timedelta(minutes=HISTORY_DURATION)
    user.put()

    msg = ''
    if worst_drinking:
        msg += u'最悪の飲みは %s だったようです。\n' % \
               (format_jdate(worst_drinking.start_date.
                             replace(tzinfo=tz_utc).astimezone(tz_jst)))
        for kind in worst_drinking.summary:
            msg += u'  %s %d 杯\n' % (kind, worst_drinking.summary[kind])
        msg += '\n'

    url = service_url + '/history/' + history_url
    return msg + u'過去の飲みは %s を参照ください。このURLは%d分間有効です。' % (url, HISTORY_DURATION)