users.py 文件源码

python
阅读 29 收藏 0 点赞 0 评论 0

项目:chalice-trivia 作者: kyleknap 项目源码 文件源码
def update_user_score(self, username, question_id, provided_answer,
                          is_correct):
        update_expression_components = []
        expression_attribute_names = {}
        expression_attribute_values = {}

        update_expression_components.append('#ans.#qid = :answer')
        expression_attribute_names['#ans'] = 'answers'
        expression_attribute_names['#qid'] = question_id
        expression_attribute_values[':answer'] = {
            'provided_answer': provided_answer,
            'is_correct': is_correct,
        }

        update_expression_components.append(
            'total_answered = total_answered + :inc')
        expression_attribute_values[':inc'] = 1

        if is_correct:
            update_expression_components.append(
                'total_correct = total_correct + :inc')

        try:
            self._dynamodb.Table(self._table_name).update_item(
                Key={
                    'username': username
                },
                UpdateExpression='SET ' + ', '.join(
                    update_expression_components),
                ExpressionAttributeNames=expression_attribute_names,
                ConditionExpression=Attr(
                    'answers.' + question_id).not_exists(),
                ExpressionAttributeValues=expression_attribute_values
            )
        except self._dynamodb.meta.client.exceptions.\
                ConditionalCheckFailedException:
            raise UserAlreadyAnsweredError(
                'User \'%s\' has already answered this question. A specific '
                'user is only allowed to answer a question once.' % username
            )
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号