Example #1
0
    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}
Example #2
0
    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}
Example #3
0
    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}
Example #4
0
    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}
Example #6
0
    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}
Example #7
0
    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}
Example #8
0
    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}
Example #9
0
    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}
Example #11
0
    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}
Example #12
0
    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}
Example #13
0
    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}
Example #16
0
    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}