Exemplo n.º 1
0
def ask_question(question_id, notification_type='question-ask-self_user'):

    '''Creates an in-app notification
        for a new question that has been
        asked to the user'''

    k = key[notification_type]
    question = Question.query.get(question_id)
    users = User.query.filter(User.id.in_([question.question_to, question.question_author])).all()

    for u in users:
        if u.id == question.question_author:
            question_author = u
        if u.id == question.question_to:
            question_to = u

    nobject = {
        'notification_type': notification_type,
        'text': helper.question_asked_text(question=question, question_author=question_author.first_name,
                                           question_to=question_to.first_name),
        'icon': question_author.profile_picture,
        'link': k['url'] % question.short_id,
        'object_id': question_id
    }

    push_now = notification_decision.decide_question_push(question_to.id, question_id)
    notification = notification_logger(nobject=nobject, for_users=[question_to.id],
                                       push_at=datetime.datetime.now() if push_now else None)

    return notification
Exemplo n.º 2
0
def question_upvote(user_id, question_id):
    try:

        should_be_pushed = notification_decision.decide_question_push(user_id=user_id, question_id=question_id)
        if should_be_pushed:

            n = Notification.query.filter(Notification.object_id == question_id,
                                          Notification.type == 'question-ask-self_user').first()
            if n is not None:
                pushed = UserPushNotification.query.filter(UserPushNotification.notification_id == n.id,
                                                           UserPushNotification.user_id == user_id).count()

                if not pushed:
                    push.send(notification_id=n.id, user_id=user_id)
    except ObjectNotFoundException:
        pass