Exemplo n.º 1
0
def mark_notice_route(request, notice_id):
    """
    Mark notice as read or unread.
    Must be logged in as user, provide a valid ID, and own the notice.
    Return notice.
    """

    db_conn = request['db_conn']

    current_user = get_current_user(request)
    if not current_user:
        return abort(401)
    notice = get_notice({'id': notice_id}, db_conn)
    if not notice:
        return abort(404)
    if notice['user_id'] != current_user['id']:
        return abort(403)

    if 'read' not in request['params']:
        errors = [{
            'name': 'read',
            'message': 'You must specify read or unread.',
        }]
    elif request['params'].get('read') is True:
        notice, errors = mark_notice_as_read(notice, db_conn)
    elif request['params'].get('read') is False:
        notice, errors = mark_notice_as_unread(notice, db_conn)
    if len(errors):
        return 400, {
            'errors': errors,
            'ref': 'qR4CBtcfcYfWDTqK9JOXXLhO',
        }

    return 200, {'notice': deliver_notice(notice, access='private')}
Exemplo n.º 2
0
def mark_notice_route(request, notice_id):
    """
    Mark notice as read or unread.
    Must be logged in as user, provide a valid ID, and own the notice.
    Return notice.
    """

    db_conn = request['db_conn']

    current_user = get_current_user(request)
    if not current_user:
        return abort(401)
    notice = get_notice({'id': notice_id}, db_conn)
    if not notice:
        return abort(404)
    if notice['user_id'] != current_user['id']:
        return abort(403)

    if 'read' not in request['params']:
        errors = [{
            'name': 'read',
            'message': 'You must specify read or unread.',
        }]
    elif request['params'].get('read') is True:
        notice, errors = mark_notice_as_read(notice, db_conn)
    elif request['params'].get('read') is False:
        notice, errors = mark_notice_as_unread(notice, db_conn)
    if len(errors):
        return 400, {
            'errors': errors,
            'ref': 'qR4CBtcfcYfWDTqK9JOXXLhO',
        }

    return 200, {'notice': deliver_notice(notice, access='private')}
Exemplo n.º 3
0
def test_mark(db_conn, session):
    """
  Expect to mark a notice as read.
  """
    notice, errors = insert_notice(
        db_conn, {
            'user_id': user_id,
            'kind': 'create_proposal',
            'data': {
                'user_name': '',
                'proposal_name': '',
                'entity_kind': '',
                'entity_name': '',
            }
        })
    nid = notice['id']

    request = {
        'cookies': {
            'session_id': session
        },
        'params': {
            'read': True
        },
        'db_conn': db_conn
    }
    code, response = routes.notice.mark_notice_route(request, nid)
    assert code == 200
    assert response['notice']['read'] is True
    record = get_notice(db_conn, {'id': nid})
    assert record['read'] is True
    assert not errors
Exemplo n.º 4
0
def test_deliver_notice(db_conn):
  create_test_notices(db_conn)
  notice = get_notice(db_conn, {
    'id': notice_a_id
  })
  notice = deliver_notice(notice, access=None)
  assert notice['body']
Exemplo n.º 5
0
def mark_notice_route(request, notice_id):
  """
  Mark notice as read or unread.
  Must be logged in as user, provide a valid ID, and own the notice.
  Return notice.
  """

  db_conn = request['db_conn']

  current_user = get_current_user(request)
  if not current_user:
    return abort(401, 'EWoueZr0TYSccUhdNISK3A')
  notice = get_notice(db_conn, {'id': notice_id})
  if not notice:
    return abort(404, 'xsNPOqJoRw-aUrFo0RhVoA')
  if notice['user_id'] != current_user['id']:
    return abort(403, 'xPkb7MYXRIOaI7HeV9U37A')
  if 'read' not in request['params']:
    errors = [{
      'name': 'read',
      'message': 'You must specify read or unread.',
      'ref': 'bvtS4G4jQnaLlVSLyUXjVg',
    }]
  elif request['params'].get('read') is True:
    notice, errors = mark_notice_as_read(db_conn, notice)
  elif request['params'].get('read') is False:
    notice, errors = mark_notice_as_unread(db_conn, notice)
  if errors:
    return 400, {
      'errors': errors,
      'ref': 'FeEtTWJJQv22dTpz8y5fZA',
    }
  return 200, {'notice': deliver_notice(notice, access='private')}
Exemplo n.º 6
0
def test_get_notice(db_conn):
  create_test_notices(db_conn)
  params = {
    'id': notice_a_id,
  }
  notice = get_notice(db_conn, params)
  assert notice
  assert notice['id'] == notice_a_id
Exemplo n.º 7
0
def test_get_notice_body(db_conn):
  create_test_notices(db_conn)
  notice = get_notice(db_conn, {
    'id': notice_a_id
  })
  body = get_notice_body(notice)
  assert body == ('Doris created a new topic, ' +
                  'A new topic, for unit Adding numbers.')
Exemplo n.º 8
0
def test_mark_notice_as_read(db_conn):
  create_test_notices(db_conn)
  notice = get_notice(db_conn, {
    'id': notice_a_id
  })
  assert notice
  notice, errors = mark_notice_as_read(db_conn, notice)
  assert not errors
  assert notice
  assert notice['read'] is True
Exemplo n.º 9
0
def test_mark_no_user(db_conn, session):
    """
  Expect to error on not logged in when marking as read.
  """
    notice, errors = insert_notice(
        db_conn, {
            'user_id': user_id,
            'kind': 'create_proposal',
            'data': {
                'user_name': '',
                'proposal_name': '',
                'entity_kind': '',
                'entity_name': '',
            }
        })
    assert not errors
    nid = notice['id']
    request = {'params': {'read': True}, 'db_conn': db_conn}
    code, _ = routes.notice.mark_notice_route(request, nid)
    assert code == 401
    record = get_notice(db_conn, {'id': nid})
    assert record['read'] is False
Exemplo n.º 10
0
def test_mark_not_owned(db_conn, session):
    """
  Expect to error when not own notice when marking as read.
  """
    user_b_uuid = uuid.uuid4()
    raw_insert_users(db_conn, [{
        'id': user_b_uuid,
        'name': 'other',
        'email': '*****@*****.**',
        'password': '******',
    }])
    notice, errors = insert_notice(
        db_conn, {
            'user_id': user_b_uuid,
            'kind': 'create_proposal',
            'data': {
                'user_name': '',
                'proposal_name': '',
                'entity_kind': '',
                'entity_name': '',
            }
        })
    assert not errors
    nid = notice['id']

    request = {
        'cookies': {
            'session_id': session
        },
        'params': {
            'read': True
        },
        'db_conn': db_conn,
    }
    code, _ = routes.notice.mark_notice_route(request, nid)
    assert code == 403
    record = get_notice(db_conn, {'id': nid})
    assert record['read'] is False
Exemplo n.º 11
0
def test_insert_notice(db_conn):
  create_test_notices(db_conn)
  data = {
    'user_id': user_uuid,
    'kind': 'OMG',
    'data': {
      'user_name': 'Doris',
      'topic_name': 'A new topic',
      'entity_kind': 'unit',
      'entity_name': 'Adding numbers',
    }
  }
  notice, errors = insert_notice(db_conn, data)
  assert errors
  assert not notice
  data['kind'] = 'create_topic'
  notice, errors = insert_notice(db_conn, data)
  assert not errors
  assert notice
  got_notice = get_notice(db_conn, {
    'id': notice['id']
  })
  assert got_notice
  assert notice['id'] == got_notice['id']