def get_article_categories(id=None):
    page, per_page = get_page_from_args()
    name = request.args.get('name')
    items = [ArticleCategory.query.get(id)
             ] if id else ArticleCategory.get_items(
                 name=name, page=page, per_page=per_page)
    return res([item.as_dict() for item in items])
def get_order_status(id=None):
    page, per_page = get_page_from_args()
    name = request.args.get('name')
    per_page_for_stat = 50  # not many statuses so return all
    items = [OrderStatus.query.get(id)] if id else OrderStatus.get_items(
        name=name, page=page, per_page=per_page_for_stat)
    return res([item.as_dict() for item in items])
Esempio n. 3
0
def get_user_orders(id=None):
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    user_id = parse_int(request.args.get('user_id'))
    # order_id = parse_int(request.args.get('order_id'))
    status_id = parse_int(request.args.get('status'))

    if user_id:
        items = Order.get_items(user_id=user_id,
                                status_id=status_id,
                                page=page,
                                per_page=per_page,
                                sort_by=sort_by,
                                is_desc=is_desc)
        return res([item.as_dict() for item in items])

    elif id:
        items = [Order.query.get(id)] if id else Order.get_items(
            user_id=user_id,
            status_id=status_id,
            page=page,
            per_page=per_page,
            sort_by=sort_by,
            is_desc=is_desc)
        return res([item.as_dict() for item in items][0])
    else:
        return Responses.OPERATION_FAILED()
Esempio n. 4
0
def user_get_product_categories(id=None):
    page, per_page = get_page_from_args()
    name = request.args.get('name')
    items = [ProductCategory.query.get(id)
             ] if id else ProductCategory.get_items(
                 name=name, page=page, per_page=per_page)
    return res([item.as_dict() for item in items])
Esempio n. 5
0
def get_order_pages(name=None): # pagination details for all orders

    """
    get default get query

    Args:
        filter_queries (single query or query list, optional): example - [Article.category_id == 1] or Article.category_id == 1
        page (int, optional): which page. Defaults to 1.
        per_page (int, optional): how many items for each return. Defaults to 10.
        order ([type], optional): example db.desc(Post.post_date) or db.asc
        error_out (bool, optional): [description]. Defaults to False.

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    user_id = parse_int(request.args.get('user'))
    status_id = parse_int(request.args.get('status'))

    page_details =  Order.get_items_pages(user_id=user_id, status_id=status_id, page=page, per_page=per_page, sort_by=sort_by, is_desc=is_desc)
    

    return res({"total_items": page_details.total, "no_of_pages": page_details.pages, "per_page": page_details.per_page})
Esempio n. 6
0
def user_get_product_pages_category(
        category=None):  # pagination details for products filtered by category
    """
    get_products meeting criteria
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    category_details = []
    if request.args.get('category') is None:
        category_details = ProductCategory.get_category_from_name(category)
    else:
        category_details = ProductCategory.get_category_from_name(
            request.args.get('category'))
    cat_id = category_details[0].id

    page_details = Product.get_items_pages(category_id=cat_id,
                                           page=page,
                                           per_page=per_page,
                                           sort_by=sort_by,
                                           is_desc=is_desc)

    return res({
        "total_items": page_details.total,
        "no_of_pages": page_details.pages,
        "per_page": page_details.per_page
    })
Esempio n. 7
0
def get_orders(id=None):
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    user_id = parse_int(request.args.get('user'))
    status_id = parse_int(request.args.get('status'))
    items = [Order.query.get(id)] if id else Order.get_items(
        user_id=user_id, status_id=status_id, page=page, per_page=per_page, sort_by=sort_by, is_desc=is_desc)
    return res([item.as_dict() for item in items])
Esempio n. 8
0
def get_subscription_types(plan=None):
    """
    get_subscription_types gets all subscription types
    
    """
    page, per_page = get_page_from_args()

    items = SubscriptionType.get_items(plan=plan, page=page, per_page=per_page)

    return res([item.as_dict() for item in items])
Esempio n. 9
0
def user_get_products(id=None):
    """
    get_products returns all product or the product with specific id
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    sort_by_price = request.args.get('sort_by_price')
    is_desc = parse_int(request.args.get('is_desc'))
    category_id = parse_int(request.args.get('category'))
    items = [Product.query.get(id)] if id else Product.get_items(
        category_id=category_id,
        page=page,
        per_page=per_page,
        sort_by=sort_by,
        is_desc=is_desc)

    variations = Variation.get_items(category_id=None,
                                     page=1,
                                     per_page=per_page,
                                     sort_by=sort_by,
                                     is_desc=is_desc)

    all_product_variations = []

    for item in items:
        available_product_variations = []
        for variation in variations:
            if (item.id == variation.product_id):
                available_product_variations.append(variation)

        product_variations = ProductVariations(product=item)
        product_variations.variations = available_product_variations

        all_product_variations.append(product_variations)

    if sort_by_price == 'price':
        sorted_productVariations_by_price = sorted(
            all_product_variations,
            key=lambda x: x.variations[0].price,
            reverse=False)
        return res([
            product_variation.as_dict()
            for product_variation in sorted_productVariations_by_price
        ])

    return res([
        product_variation.as_dict()
        for product_variation in all_product_variations
    ])
Esempio n. 10
0
def delete_subscription_types(plan=None):
    """
    get_subscription_types gets all subscription types
    
    """
    page, per_page = get_page_from_args()

    item = SubscriptionType.get_items(plan=plan, page=page, per_page=per_page)
    error = item[0].delete()
    if len(error) > 0:
        return Responses.OPERATION_FAILED()
    return Responses.SUCCESS()
Esempio n. 11
0
def delete_vouchers(id=None):
    """
   delete voucher
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    item = Voucher.query.get(id)
    error = item.delete()
    if len(error) > 0:
        return Responses.OPERATION_FAILED()
    return Responses.SUCCESS()
Esempio n. 12
0
def get_users(email=None):
    """
    get_users gets all user or specify user

    Args:
        email ([type], optional): [description]. Defaults to None.

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    items = [User.get_user_by_email(email)] if email else User.get(
        page=page, per_page=per_page)
    return res([item.as_dict() for item in items])
Esempio n. 13
0
def get_vouchers(name=None):
    """
    get_vouchers gets all vouchers
    
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    items = Voucher.get_items(name=name,
                              page=page,
                              per_page=per_page,
                              sort_by=sort_by,
                              is_desc=is_desc)

    return res([item.as_dict() for item in items])
Esempio n. 14
0
def get_articles(id=None):
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    category_id = parse_int(request.args.get('category'))
    user_id = parse_int(request.args.get('user'))
    status_id = parse_int(request.args.get('status'))
    items = [Article.query.get(id)] if id else Article.get_items(
        category_id=category_id,
        user_id=user_id,
        status_id=status_id,
        page=page,
        per_page=per_page,
        sort_by=sort_by,
        is_desc=is_desc)
    return res([item.as_dict() for item in items])
Esempio n. 15
0
def get_subscriptions(id=None):
    """
    get_subscriptions gets all user subscriptions
    
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    items = UserSubscription.get_items(id=id,
                                       page=page,
                                       per_page=per_page,
                                       sort_by=sort_by,
                                       is_desc=is_desc)

    return res([item.as_dict() for item in items])
Esempio n. 16
0
def user_get_quicksearch(name=None):
    """
    get_products meeting criteria
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))
    category_id = parse_int(request.args.get('category'))
    date = request.args.get('date')
    size = request.args.get('size')
    requested_date = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')

    variations = Variation.get_items_for_size(
        size=size, page=page, per_page=100,
        sort_by=sort_by)  # show only 100 results

    all_product_variations = []

    for variation in variations:
        if int(variation.stock) < 0:
            if variation.next_available_date != None:
                nad = datetime.strptime(variation.next_available_date,
                                        '%Y-%m-%d %H:%M:%S')
                if requested_date > nad + relativedelta(days=14):
                    product = Product.get_product_from_id(variation.product_id)
                    product_variations = ProductVariations(product=product)
                    product_variations.variations = variation
                    all_product_variations.append(product_variations)
        else:
            product = Product.get_product_from_id(variation.product_id)
            product_variations = ProductVariations(product=product)
            product_variations.variations = variation
            all_product_variations.append(product_variations)

    return res([
        product_variation.as_dict()
        for product_variation in all_product_variations
    ])
Esempio n. 17
0
def get_users_pages(email=None):
    """
    get_users gets all user or specify user

    Args:
        email ([type], optional): [description]. Defaults to None.

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()

    page_details = User.get_page_details(page=page, per_page=per_page)

    return res({
        "total_items": page_details.total,
        "no_of_pages": page_details.pages,
        "per_page": page_details.per_page
    })
Esempio n. 18
0
def get_subscription_pages(id=None):  # pagination details for all products
    """
    get_subscriptions gets all user subscriptions
    
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    page_details = UserSubscription.get_items_pages(id=id,
                                                    page=page,
                                                    per_page=per_page,
                                                    sort_by=sort_by,
                                                    is_desc=is_desc)

    return res({
        "total_items": page_details.total,
        "no_of_pages": page_details.pages,
        "per_page": page_details.per_page
    })
Esempio n. 19
0
def get_vouchers_pages(name=None):
    """
    get_vouchers gets all vouchers
    
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    page_details = Voucher.get_items_pages(name=name,
                                           page=page,
                                           per_page=per_page,
                                           sort_by=sort_by,
                                           is_desc=is_desc)

    return res({
        "total_items": page_details.total,
        "no_of_pages": page_details.pages,
        "per_page": page_details.per_page
    })
Esempio n. 20
0
def user_get_productsearch(name=None):
    """
    get_products returns all product or the product with specific id
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    is_desc = parse_int(request.args.get('is_desc'))

    itemSearchResult = []

    products = Product.query.filter(Product.name.like("%" + name + "%")).all()
    if len(products) > 0:
        for item in products:
            variations = Variation.get_items_for_id(item.id)
            product_variations = ProductVariations(product=item)
            product_variations.variations = variations
            itemSearchResult.append(product_variations)

    categories = ProductCategory.query.filter(
        ProductCategory.name.like("%" + name + "%")).all()
    if len(categories) > 0:
        for category in categories:
            productsInCategory = Product.get_items(category_id=category.id,
                                                   page=page,
                                                   per_page=50,
                                                   sort_by=sort_by,
                                                   is_desc=is_desc)
            for product in productsInCategory:
                variations = Variation.get_items_for_id(product.id)
                product_variations = ProductVariations(product=product)
                product_variations.variations = variations
                itemSearchResult.append(product_variations)

    return res([
        product_variation.as_dict() for product_variation in itemSearchResult
    ])
Esempio n. 21
0
def user_get_sizes(size=None):
    """
    get_products meeting criteria
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    sort_by_price = request.args.get('sort_by_price')
    # category_id = parse_int(request.args.get('category'))

    variations = Variation.get_items_for_size(size=size,
                                              page=page,
                                              per_page=per_page,
                                              sort_by=sort_by)

    all_product_variations = []

    for variation in variations:
        product = Product.get_product_from_id(variation.product_id)
        product_variations = ProductVariations(product=product)
        product_variations.variations = variation
        all_product_variations.append(product_variations)

    if sort_by_price == 'price':
        sorted_productVariations_by_price = sorted(
            all_product_variations,
            key=lambda x: x.variations.price,
            reverse=False)
        return res([
            product_variation.as_dict()
            for product_variation in sorted_productVariations_by_price
        ])

    return res([
        product_variation.as_dict()
        for product_variation in all_product_variations
    ])
Esempio n. 22
0
def user_get_product_pages_size(
        size=None):  # pagination details for products filtered by size
    """
    get_products meeting criteria
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')

    page_details = Variation.get_items_for_size_paging(size=size,
                                                       page=page,
                                                       per_page=per_page,
                                                       sort_by=sort_by)

    return res({
        "total_items": page_details.total,
        "no_of_pages": page_details.pages,
        "per_page": page_details.per_page
    })
Esempio n. 23
0
def user_get_productcategories(category=None):
    """
    get_products meeting criteria
    Args:
        id ([type]): product id

    Returns:
        [type]: [description]
    """
    page, per_page = get_page_from_args()
    sort_by = request.args.get('sort_by')
    sort_by_price = request.args.get('sort_by_price')
    is_desc = parse_int(request.args.get('is_desc'))

    category_details = []
    if request.args.get('category') is None:
        category_details = ProductCategory.get_category_from_name(category)
    else:
        category_details = ProductCategory.get_category_from_name(
            request.args.get('category'))
    print(category)
    cat_id = category_details[0].id

    # category_details = ProductCategory.get_category_from_name(category)
    # cat_id = category_details[0].id

    items = Product.get_items(category_id=cat_id,
                              page=page,
                              per_page=per_page,
                              sort_by=sort_by,
                              is_desc=is_desc)

    variations = Variation.get_items(
        category_id=None,
        page=1,
        per_page=per_page,
        sort_by=sort_by,
        is_desc=is_desc
    )  # TODO UPDATE from one page, done as only currently small number of prods

    all_product_variations = []

    for item in items:
        available_product_variations = []
        for variation in variations:
            if (item.id == variation.product_id):
                available_product_variations.append(variation)

        product_variations = ProductVariations(product=item)
        product_variations.variations = available_product_variations

        all_product_variations.append(product_variations)

    if sort_by_price == 'price':
        sorted_productVariations_by_price = sorted(
            all_product_variations,
            key=lambda x: x.variations[0].price,
            reverse=False)
        return res([
            product_variation.as_dict()
            for product_variation in sorted_productVariations_by_price
        ])

    return res([
        product_variation.as_dict()
        for product_variation in all_product_variations
    ])