def save(model_name, record_id=None): """ Create a new record or save an existing record. """ registered_models = mdb.registered_models model = next((m for m in registered_models if m.__name__.lower() == model_name.lower()), None) try: if record_id: record = populate_model(request.form, model, False) existing = model.find_one(record_id) if not existing: abort(404) for k, v in record.items(): # Not recursive and only update fields in request existing[k] = v existing.save() record._id = existing._id else: record = populate_model(request.form, model, True) record._id = ObjectId() record.save(True) except (SeedConnectionError, SeedDataError, DuplicateKeyError) as err: return jsonify(success=False, message='Save failed! (%s)' % err.message) except: current_app.logger.exception('Failed when saving %s' % model_name) return jsonify(success=False, message='Save failed!') # return jsonify(success=True, message='Save successfully. (%s)' % record._id, rid=record._id)
def save(pid=None): """ Create or Update a post. """ try: post = populate_model(request.form, Post) # Create if not pid: post.uid = current_user._id post.save() pid = post._id current_app.logger.info('Successfully create post %s' % pid) # Update else: existing = Post.find_one(pid) if not existing: abort(404) existing.title = post.title existing.tids = post.tids existing.abstract = post.abstract existing.cover = post.cover existing.body = post.body existing.updateTime = datetime.now() existing.save() current_app.logger.info('Successfully update post %s' % pid) except: current_app.logger.exception('Failed when saving post') return jsonify( success=False, message=_('Failed when saving post, please try again later!')) # return jsonify(success=True, message=_('Save post successfully.'), pid=pid)
def test_populate_model(app): md = MultiDict([('user.name', 'test'), ('user.email', '*****@*****.**'), ('user.password', 'test'), ('user.roles[0]', UserRole.MEMBER), ('user.roles[1]', UserRole.ADMIN), ('user.createTime', '2019-12-15 10:00:00')]) user = populate_model(md, User) assert user.point == 0 assert user.status == UserStatus.NORMAL assert user.is_admin assert user.createTime < datetime.now()
def save(model_name, record_id=None): """ Create a new record or save an existing record. """ registered_models = mdb.registered_models model = next((m for m in registered_models if m.__name__.lower() == model_name.lower()), None) try: record = populate_model(request.form, model, False) if record_id: record._id = record_id record.save() else: record._id = ObjectId() record.save(True) except (SeedConnectionError, SeedDataError, DuplicateKeyError) as err: return jsonify(success=False, message='Save failed! (%s)' % err.message) except: current_app.logger.exception('Failed when saving %s' % model_name) return jsonify(success=False, message='Save failed!') # return jsonify(success=True, message='Save successfully. (%s)' % record._id, rid=record._id)
def save_basic(uid): """ Save basic info for user. """ try: user = populate_model(request.form, User) existing = User.find_one(uid) if not existing: abort(404) existing.name = user.name existing.intro = user.intro existing.avatar = user.avatar existing.updateTime = datetime.now() existing.save() current_app.logger.info('Successfully update basic info %s' % uid) except: current_app.logger.exception('Failed when saving basic info') return jsonify( success=False, message='Failed when saving basic info, please try again later!') return jsonify(success=True, message='Save basic info successfully.', uid=uid)