blob: f56821dd7bcf583764d5009f53216134d6a53c18 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is govered by a BSD-style
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
"""Simple servlet to store the fact that a user has dismissed a cue card.
Cue cards are small on-page help items that appear when the user has
done a certain action or is viewing a project that is in a certain
state. The cue card give the user a suggestion of what he/she should
do next. Cue cards can be dismissed to reduce visual clutter on the
page once the user has learned the content of the suggestion. That
preference is recorded in the User PB, and the same cue card will not
be presented again to the same user.
Exmple: The logged in user has dismissed the cue card that tells him/her how
to search for numbers in the issue tracker:
POST /hosting/cues.do
cue_id=search_for_numbers&token=12344354534
"""
import logging
from framework import jsonfeed
from framework import monorailrequest
class SetCuesFeed(jsonfeed.JsonFeed):
"""A class to process an AJAX request to dismiss a cue card."""
def HandleRequest(self, mr):
"""Processes a user's POST request to dismiss a cue card.
Args:
mr: commonly used info parsed from the request.
"""
cue_id = mr.GetParam('cue_id')
if not cue_id:
raise monorailrequest.InputException('no cue_id specified')
logging.info('Handling user set cue request: %r', cue_id)
new_dismissed_cues = mr.auth.user_pb.dismissed_cues
new_dismissed_cues.append(cue_id)
self.services.user.UpdateUserSettings(
mr.cnxn, mr.auth.user_id, mr.auth.user_pb,
dismissed_cues=new_dismissed_cues)