Пример #1
0
def put_batch(id):
    req = request.get_json()

    try:
        batch = user_restrict(
            db_session.query(models.Batch),
            models.UserBatchLink).filter(models.Batch.id == id).one()

        params = {
            'brew_date', 'rack_date', 'package_date', 'pre_boil_gravity',
            'original_gravity', 'final_gravity'
        }
        for param in params & req.keys():
            setattr(batch, param, req[param])

        db_session.commit()

        return jsonify(hal.item(batch, href='/batch/{id}'.format(id=id)))

    except sqlalchemy.orm.exc.NoResultFound:
        db_session.rollback()
        return make_response(('Batch not found', 404))

    except:
        db_session.rollback()
        raise
Пример #2
0
def new_batch():
    req = request.get_json()

    try:
        query = user_restrict(db_session.query(models.Recipe),
                              models.UserRecipeLink)
        recipe = query.filter(models.Recipe.id == req['recipe_id']).one()

        batch = models.Batch(**req)

        if not batch.profile_id:
            batch.actual_profile = recipe.profile

        if not batch.brew_date:
            batch.brew_date = datetime.now()

        db_session.add(batch)
        db_session.add(
            models.UserBatchLink(user=get_logged_in_user(), batch=batch))
        db_session.commit()

        return jsonify(hal.item(batch, href='/batch/{id}'.format(id=batch.id)))

    except KeyError:
        db_session.rollback()
        return make_response(('Must supply recipe ID', 400))

    except sqlalchemy.orm.exc.NoResultFound:
        db_session.rollback()
        return make_response(('Recipe not found', 404))

    except:
        db_session.rollback()
        raise
Пример #3
0
def get_recipe(id=None):
    if id is None:
        # We're fetch the list of recipes
        query = user_restrict(db_session.query(models.Recipe),
                              models.UserRecipeLink)
        return jsonify(hal.query(query, href='/recipe'))

    try:
        recipe = load_recipe(id)
        result = hal.item(recipe,
                          href='/recipe/{id}',
                          stats='/recipe/{id}/stats')
        result['profile'] = hal.item(recipe.profile,
                                     href='/recipe/{id}/profile'.format(id=id))
        result['grain_bill'] = hal.item(
            recipe.grain_bill, href='/recipe/{id}/grain_bill'.format(id=id))
        result['hop_schedule'] = hal.item(
            recipe.hop_schedule,
            href='/recipe/{id}/hop_schedule'.format(id=id))
        if recipe.yeast:
            result['yeast'] = hal.item(
                recipe.yeast, href='/yeast/{id}'.format(id=recipe.yeast_id))
        return jsonify(result)

    except sqlalchemy.orm.exc.NoResultFound:
        return make_response(('Recipe not found', 404))
Пример #4
0
def get_profile(id):
    try:
        profile = user_restrict(db_session.query(models.BrewingProfile),
                                models.UserProfileLink).filter(
                                    models.BrewingProfile.id == id).one()
        return jsonify(hal.item(profile, href='/profile/{id}'.format(id=id)))

    except sqlalchemy.orm.exc.NoResultFound:
        db_session.rollback()
        return make_response(('Profile not found', 404))
Пример #5
0
def get_batch(id):
    try:
        batch = user_restrict(
            db_session.query(models.Batch),
            models.UserBatchLink).filter(models.Batch.id == id).one()
        result = hal.item(batch, href='/batch/{id}'.format(id=id))
        result['profile'] = hal.item(
            batch.actual_profile,
            href='/profile/{id}'.format(id=batch.profile_id))
        result['recipe'] = hal.item(
            batch.recipe, href='/recipe/{id}'.format(id=batch.recipe_id))
        return jsonify(result)

    except sqlalchemy.orm.exc.NoResultFound:
        return make_response(('Batch not found', 404))
Пример #6
0
def load_recipe(id):
    """Convenience function to load the recipe given the ID"""
    query = user_restrict(db_session.query(models.Recipe),
                          models.UserRecipeLink)
    return query.filter(models.Recipe.id == id).one()