Пример #1
0
def product_variants():
    """
        List Product variants for a product
    """
    from openstudio.os_shop_product import ShopProduct
    from openstudio.os_shop_products_variants import ShopProductsVariants

    spID = request.vars['spID']
    product = ShopProduct(spID)

    response.title = T('Shop')
    response.subtitle = T('Catalog')
    response.view = 'general/tabs_menu.html'

    variants = ShopProductsVariants(spID)
    content = DIV(
        H4(T('Variants for'), ' ', product.row.Name),
        variants.list_formatted()
    )

    add = ''
    if not product.has_products_set():
        add = os_gui.get_button('add',
                                URL('shop_manage', 'product_variant_add',
                                    vars={'spID':spID}))

    back = os_gui.get_button('back', shop_products_get_return_url())
    menu = catalog_get_menu('products')

    return dict(content=content,
                add=add,
                back=back,
                menu=menu)
Пример #2
0
def product_variant_edit():
    """
        Edit a product variant
    """
    from openstudio.os_forms import OsForms
    from openstudio.os_shop_product import ShopProduct

    spID = request.vars['spID']
    spvID = request.vars['spvID']

    product = ShopProduct(spID)

    response.title = T('Shop')
    response.subtitle = T(
        'Edit product - {product_name}'.format(product_name=product.row.Name))
    response.view = 'general/tabs_menu.html'

    return_url = product_variants_get_return_url(spID)

    if product.has_products_set():
        db.shop_products_variants.Name.writable = False

    os_forms = OsForms()
    result = os_forms.get_crud_form_update(
        db.shop_products_variants,
        return_url,
        spvID,
    )

    form = result['form']
    back = os_gui.get_button('back', return_url)

    menu = product_edit_get_menu('product_variants', spID)

    return dict(content=form, save=result['submit'], back=back, menu=menu)
Пример #3
0
def product_variant_add_check_products_set(spID):
    """
    Check if a product has a set, if so, don't allow adding variants.
    :param spID: db.shop_products.id
    :return: None
    """
    from openstudio.os_shop_product import ShopProduct
    product = ShopProduct(spID)
    if product.has_products_set():
        session.flash = T("Unable to add variants for a product with a set")
        redirect(product_variants_get_return_url(spID))
Пример #4
0
    def list_formatted(self):
        """
            :return: HTML table with shop products variants
        """
        from openstudio.os_shop_product import ShopProduct

        T = current.T
        os_gui = current.globalenv['os_gui']
        auth = current.auth

        product = ShopProduct(self.shop_products_id)

        header = THEAD(
            TR(TH(), TH(T('Name')), TH(T('Price')), TH(T('Article Code')),
               TH(T('Keep stock')), TH(T('Stock shop')),
               TH(T('Stock warehouse')), TD(), TH()))
        table = TABLE(header, _class='table table-striped table-hover')
        table_disabled = TABLE(header,
                               _class='table table-striped table-hover')

        permission_edit = (auth.has_membership(group_id='Admins')
                           or auth.has_permission('update',
                                                  'shop_products_variants'))
        permission_delete = (auth.has_membership(group_id='Admins')
                             or auth.has_permission('delete',
                                                    'shop_products_variants'))

        onclick_delete = self._list_formatted_get_onclick_delete()

        rows = self.list()
        for i, row in enumerate(rows):
            repr_row = list(rows[i:i + 1].render())[0]

            default = self._list_formatted_get_label_default(T, os_gui, row)
            buttons = self._list_formatted_get_buttons(permission_edit,
                                                       permission_delete,
                                                       onclick_delete, T,
                                                       os_gui, row)

            tr = TR(TD(repr_row.thumbsmall),
                    TD(os_gui.max_string_length(row.Name, 50)),
                    TD(repr_row.Price), TD(repr_row.ArticleCode),
                    TD(repr_row.KeepStock), TD(row.StockShop),
                    TD(row.StockWarehouse), TD(default), TD(buttons))

            if row.Enabled:
                table.append(tr)
            else:
                table_disabled.append(tr)

        if product.has_products_set():
            return DIV(table, H4(T('Disabled')), table_disabled)
        else:
            return table
Пример #5
0
    def _list_formatted_get_onclick_delete(self):
        """
            :return: onclick delete for
        """
        from openstudio.os_shop_product import ShopProduct

        T = current.T
        product = ShopProduct(self.shop_products_id)
        if product.has_products_set():
            delete_message = T('Do you really want to disable this variant?')
        else:
            delete_message = T('Do you really want to delete this variant?')
        onclick_delete = "return confirm('" \
            + delete_message + "');"

        return onclick_delete
Пример #6
0
def product_variant_delete():
    """
        Delete variant when not linked to a set
        Disable variant when linked to a set
    """
    from openstudio.os_shop_product import ShopProduct
    from openstudio.os_shop_products_variant import ShopProductsVariant

    spID = request.vars['spID']
    spvID = request.vars['spvID']

    product = ShopProduct(spID)
    if product.has_products_set():
        variant = ShopProductsVariant(spvID)
        variant.disable()
        session.flash = T('Disabled variant')
    else:
        query = (db.shop_products_variants.id == spvID)
        db(query).delete()
        session.flash = T('Deleted variant')

    redirect(product_variants_get_return_url(spID))