def get(self): args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) # Get public exercises and exercises owned by this user exercise_query = RiffExercise.query.filter( (RiffExercise.created_by == current_user.id) | (RiffExercise.is_public.is_(True))) query_result, content_range = query_with_filters( RiffExercise, exercise_query, range, sort, filter, quick_search_columns=["name", "id"]) for exercise in query_result: exercise.tags = [{ "id": tag.id, "name": tag.tag.name } for tag in exercise.riff_exercise_to_tags] return query_result, 200, {"Content-Range": content_range}
def get(self): args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) riffs_query = Riff.query if "admin" not in current_user.roles: riffs_query = riffs_query.filter( Riff.render_valid).filter((Riff.created_by == current_user.id) | (Riff.is_public.is_(True))) else: logger.debug( "Showing unrendered riffs for admin user", user_id=current_user.id, roles=[role.name for role in current_user.roles], ) query_result, content_range = query_with_filters( Riff, riffs_query, range, sort, filter, quick_search_columns=["name", "id"]) for riff in query_result: riff.tags = [{ "id": tag.id, "name": tag.tag.name } for tag in riff.riff_to_tags] riff.image = f"https://www.improviser.education/static/rendered/120/riff_{riff.id}_c.png" return query_result, 200, {"Content-Range": content_range}
def get(self): """List (Product)Kinds""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Kind, Kind.query, range, sort, filter, quick_search_columns=["name", "short_description_nl", "short_description_en"], ) # Todo: return items from selected shop/category for kind in query_result: kind.tags = [ {"id": tag.id, "name": f"{tag.tag.name}: {tag.amount}", "amount": tag.amount} for tag in kind.kind_to_tags ] kind.tags_amount = len(kind.tags) kind.flavors = [ {"id": flavor.id, "name": flavor.flavor.name, "icon": flavor.flavor.icon, "color": flavor.flavor.color} for flavor in kind.kind_to_flavors ] kind.flavors_amount = len(kind.flavors) kind.strains = [{"id": strain.id, "name": f"{strain.strain.name}"} for strain in kind.kind_to_strains] kind.strains_amount = len(kind.strains) kind.images_amount = 0 for i in [1, 2, 3, 4, 5, 6]: if getattr(kind, f"image_{i}"): kind.images_amount += 1 return query_result, 200, {"Content-Range": content_range}
def get(self): """List Products""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Product, Product.query, range, sort, filter, quick_search_columns=[ "name", "short_description_nl", "short_description_en" ], ) for product in query_result: product.images_amount = 0 for i in [1, 2, 3, 4, 5, 6]: if getattr(product, f"image_{i}"): product.images_amount += 1 return query_result, 200, {"Content-Range": content_range}
def get(self): """List strains for a product kind""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "id") filter = get_filter_from_args(args) query_result, content_range = query_with_filters(KindToStrain, KindToStrain.query, range, sort, filter) return query_result, 200, {"Content-Range": content_range}
def get(self): """List tags for a riff""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "id") filter = get_filter_from_args(args) query_result, content_range = query_with_filters(RiffTag, RiffTag.query, range, sort, filter) return query_result, 200, {"Content-Range": content_range}
def get(self): """List Strains""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Strain, Strain.query, range, sort, filter) return query_result, 200, {"Content-Range": content_range}
def get(self): """List Flavors""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Flavor, Flavor.query, range, sort, filter) # query_result, content_range = _flavor_query_with_filters(Flavor.query) return query_result, 200, {"Content-Range": content_range}
def get(self): """List (Product)Prices""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "internal_product_id") filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Price, Price.query, range, sort, filter, quick_search_columns=["internal_product_id"] ) return query_result, 200, {"Content-Range": content_range}
def get(self): """List MainCategories""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( MainCategory, MainCategory.query, range, sort, filter) for result in query_result: result.shop_name = result.shop.name result.main_category_and_shop = f"{result.name} in {result.shop.name}" return query_result, 200, {"Content-Range": content_range}
def get(self): args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "username") filter = get_filter_from_args(args) query_result, content_range = query_with_filters( User, User.query, range, sort, filter, quick_search_columns=["username", "email"]) return query_result, 200, {"Content-Range": content_range}
def get(self): args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( BackingTrack, BackingTrack.query, range, sort, filter, quick_search_columns=["name", "file", "tempo"], ) return query_result, 200, {"Content-Range": content_range}
def get(self): """List Orders""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "created_at", default_sort_order="DESC") filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Order, Order.query, range, sort, filter) for order in query_result: if (order.status == "complete" or order.status == "cancelled") and order.completed_by: order.completed_by_name = order.user.first_name if order.table_id: order.table_name = order.table.name return query_result, 200, {"Content-Range": content_range}
def get(self): """List all product kind images""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) query_result, content_range = query_with_filters( Kind, Kind.query, range, sort, filter, quick_search_columns=[ "name", "image_1", "image_2", "image_3", "image_4", "image_5", "image_6" ], ) return query_result, 200, {"Content-Range": content_range}
def get(self): """List prices for a shop""" args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args, "id") filter = get_filter_from_args(args) query = ShopToPrice.query.join(ShopToPrice.price).options( contains_eager(ShopToPrice.price), defer("price_id")) query_result, content_range = query_with_filters( ShopToPrice, query, range, sort, filter) for result in query_result: result.half = result.price.half if result.price.half and result.use_half else None result.one = result.price.one if result.price.one and result.use_one else None result.two_five = result.price.two_five if result.price.two_five and result.use_two_five else None result.five = result.price.five if result.price.five and result.use_five else None result.joint = result.price.joint if result.price.joint and result.use_joint else None result.piece = result.price.piece if result.price.piece and result.use_piece else None return query_result, 200, {"Content-Range": content_range}
def get(self): args = parser.parse_args() range = get_range_from_args(args) sort = get_sort_from_args(args) filter = get_filter_from_args(args) riffs_query = Riff.query.filter(Riff.scale_trainer_enabled).filter( Riff.render_valid).filter(Riff.is_public.is_(True)) query_result, content_range = query_with_filters( Riff, riffs_query, range, sort, filter, quick_search_columns=["name", "id"]) for riff in query_result: riff.tags = [{ "id": tag.id, "name": tag.tag.name } for tag in riff.riff_to_tags] riff.image = f"https://www.improviser.education/static/rendered/120/riff_{riff.id}_c.png" return query_result, 200, {"Content-Range": content_range}