def test_update_document(db_conn): schema = vases_schema data1 = { 'name': 'celestial', 'plants': [ { 'species': 'zzplant', 'quantity': 2 }, { 'species': 'rubbertree', 'quantity': 1 }, ], 'soil': { 'color': 'black' } } document1, errors1 = util.insert_document(schema, data1, db_conn) subdoc1 = pick(document1, ('name', 'plants', 'soil')) subdata1 = pick(data1, ('name', 'plants', 'soil')) data2 = { 'id': 'haxxor', 'name': 'zen', } document2, errors2 = util.update_document(schema, document1, data2, db_conn) subdoc2 = pick(document2, ('name', 'plants', 'soil')) subdata2 = pick(data2, ('name', 'plants', 'soil')) assert len(errors1) == 0 assert subdoc1 == subdata1 assert document1['id'] == document2['id'] assert len(errors2) == 0 assert subdoc2 == extend({}, subdata1, subdata2)
def mark_notice_as_unread(notice, db_conn): """ Marks the notice as unread. """ schema = notice_schema return update_document(schema, notice, {'read': False}, db_conn)
def test_update_document(db_conn): schema = vases_schema data1 = { 'name': 'celestial', 'plants': [ {'species': 'zzplant', 'quantity': 2}, {'species': 'rubbertree', 'quantity': 1}, ], 'soil': {'color': 'black'} } document1, errors1 = util.insert_document(schema, data1, db_conn) subdoc1 = pick(document1, ('name', 'plants', 'soil')) subdata1 = pick(data1, ('name', 'plants', 'soil')) data2 = { 'id': 'haxxor', 'name': 'zen', } document2, errors2 = util.update_document(schema, document1, data2, db_conn) subdoc2 = pick(document2, ('name', 'plants', 'soil')) subdata2 = pick(data2, ('name', 'plants', 'soil')) assert len(errors1) == 0 assert subdoc1 == subdata1 assert document1['id'] == document2['id'] assert len(errors2) == 0 assert subdoc2 == extend({}, subdata1, subdata2)
def update_user_password(prev_data, data, db_conn): """ Overwrite update method to add password. """ schema = user_schema data = pick(data, ('password',)) data, errors = update_document(schema, prev_data, data, db_conn) return data, errors
def remove_user_subjects(user_id, subject_id, db_conn): """ Remove a subject from a user's list of subjects. """ prev_data = get_user_subjects(user_id, db_conn) data = deepcopy(prev_data) data['subject_ids'].remove(subject_id) schema = user_subjects_schema return update_document(schema, prev_data, data, db_conn)
def append_user_subjects(user_id, subject_id, db_conn): """ Add a subject to a user's list of subjects. """ prev_data = get_user_subjects(user_id, db_conn) data = deepcopy(prev_data) data['subject_ids'].append(subject_id) schema = user_subjects_schema return update_document(schema, prev_data, data, db_conn)
def update_topic(prev_data, data, db_conn): """ Update an existing topic. """ schema = topic_schema data, errors = update_document(schema, prev_data, data, db_conn) if not errors: add_topic_to_es(data) return data, errors
def update_user(prev_data, data, db_conn): """ Overwrite update method to remove password. """ schema = user_schema data = omit(data, ('password',)) data, errors = update_document(schema, prev_data, data, db_conn) if not errors: add_user_to_es(data) return data, errors
def update_post(prev_data, data, db_conn): """ Update an existing post. """ schema = get_post_schema(data) data2 = omit(data, ('id', 'created', 'modified')) data2 = extend({}, prev_data, data2) data, errors = validate_post(data2, db_conn) if errors: return data, errors data, errors = update_document(schema, prev_data, data, db_conn) if not errors: add_post_to_es(data, db_conn) return data, errors
def update_card_parameters(prev_data, data, db_conn): """ """ schema = card_parameters_schema return update_document(schema, prev_data, data, db_conn)