示例#1
0
    def getVariants(self):
        """
        """
        result = []
        pvm = IProductVariantsManagement(self.context)

        for variant in pvm.getVariants():

            # Options
            properties = []
            properties_ids = {}
            for property in variant.getForProperties():
                property_id, option_id = property.split(":")
                properties_ids[property_id] = option_id
                titles = getTitlesByIds(variant, property_id, option_id)
                if titles is None:
                    continue
                properties.append(titles)

            result.append({
                "id": variant.getId(),
                "path": "/".join(variant.getPhysicalPath()),
                "article_id": variant.getArticleId(),
                "title": variant.Title(),
                "url": variant.absolute_url(),
                "properties": properties,
                "properties_ids": properties_ids,
                "price": variant.getPrice(),
            })
        return result
示例#2
0
    def getVariants(self):
        """
        """
        result = []
        pvm = IProductVariantsManagement(self.context)

        for variant in pvm.getVariants():

            # Options
            properties = []
            properties_ids = {}
            for property in variant.getForProperties():
                property_id, option_id = property.split(":")
                properties_ids[property_id] = option_id
                titles = getTitlesByIds(variant, property_id, option_id)
                if titles is None:
                    continue
                properties.append(titles)

            result.append({
                "id"             : variant.getId(),
                "path"           : "/".join(variant.getPhysicalPath()),
                "article_id"     : variant.getArticleId(),
                "title"          : variant.Title(),
                "url"            : variant.absolute_url(),
                "properties"     : properties,
                "properties_ids" : properties_ids,
                "price"          : variant.getPrice(),
            })
        return result
示例#3
0
def deleteProperty(property, event):
    """Removes property from all existing product variants.
    """
    product = property.aq_inner.aq_parent
    pvm = IProductVariantsManagement(product)

    if pvm.hasVariants() == False:
        return

    to_delete_property_id = property.getId()
    for variant in pvm.getVariants():
        new_properties = []
        for variant_property in variant.getForProperties():
            variant_property_id = variant_property.split(":")[0]
            if variant_property_id != to_delete_property_id:
                new_properties.append(variant_property)
        new_properties.sort()

        variant.setForProperties(new_properties)
示例#4
0
def deleteProperty(property, event):
    """Removes property from all existing product variants.
    """
    product = property.aq_inner.aq_parent
    pvm = IProductVariantsManagement(product)
    
    if pvm.hasVariants() == False:
        return 
        
    to_delete_property_id = property.getId()
    for variant in pvm.getVariants():
        new_properties = []
        for variant_property in variant.getForProperties():
            variant_property_id = variant_property.split(":")[0]
            if variant_property_id != to_delete_property_id:
                new_properties.append(variant_property)
        new_properties.sort()

        variant.setForProperties(new_properties)
示例#5
0
    def saveVariants(self):
        """Saves all variants.
        """
        article_ids = {}
        prices = {}
        properties = {}
        titles = {}

        for id, value in self.request.form.items():
            if id.startswith("price"):
                prices[id[6:]] = value
            elif id.startswith("article-id"):
                article_ids[id[11:]] = value
            elif id.startswith("title"):
                titles[id[6:]] = value
            elif id.startswith("property"):
                property_id, variant_id = id.split("|")
                property_id = property_id[9:]
                if properties.has_key(variant_id) == False:
                    properties[variant_id] = []
                properties[variant_id].append("%s:%s" % (property_id, value))

        pvm = IProductVariantsManagement(self.context)
        for variant in pvm.getVariants():
            # Title
            variant.setTitle(titles[variant.getId()])

            # Article ID
            variant.setArticleId(article_ids[variant.getId()])

            # Price
            variant.setPrice(prices[variant.getId()])

            properties[variant.getId()].sort()
            variant.setForProperties(properties[variant.getId()])
            variant.reindexObject()

        putils = getToolByName(self.context, "plone_utils")
        putils.addPortalMessage(MESSAGES["VARIANTS_SAVED"])

        url = self.context.absolute_url() + "/manage-variants-view"
        self.request.response.redirect(url)
示例#6
0
    def saveVariants(self):
        """Saves all variants.
        """
        article_ids = {}
        prices = {}
        properties = {}
        titles = {}

        for id, value in self.request.form.items():
            if id.startswith("price"):
                prices[id[6:]] = value
            elif id.startswith("article-id"):
                article_ids[id[11:]] = value
            elif id.startswith("title"):
                titles[id[6:]] = value
            elif id.startswith("property"):
                property_id, variant_id = id.split("|")
                property_id = property_id[9:]
                if properties.has_key(variant_id) == False:
                    properties[variant_id] = []
                properties[variant_id].append("%s:%s" % (property_id, value))

        pvm = IProductVariantsManagement(self.context)
        for variant in pvm.getVariants():
            # Title
            variant.setTitle(titles[variant.getId()])

            # Article ID
            variant.setArticleId(article_ids[variant.getId()])

            # Price
            variant.setPrice(prices[variant.getId()])

            properties[variant.getId()].sort()
            variant.setForProperties(properties[variant.getId()])
            variant.reindexObject()

        putils = getToolByName(self.context, "plone_utils")
        putils.addPortalMessage(MESSAGES["VARIANTS_SAVED"])

        url = self.context.absolute_url() + "/manage-variants-view"
        self.request.response.redirect(url)