示例#1
0
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)
示例#2
0
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)
示例#3
0
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()
示例#4
0
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)
示例#5
0
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)