コード例 #1
0
ファイル: groups_view.py プロジェクト: Easyshop/Easyshop
    def getGroup(self):
        """Returns a group by given id via request.
        """
        group_id = self.request.get("group_id")
        if group_id is None:
            return None
            
        shop = self._getShop()

        # Returns group or None
        group = IGroupManagement(shop).getGroup(group_id)        

        products = []
        line = []
        for i, product in enumerate(IProductManagement(group).getProducts()):
            line.append({
                "title"  : product.Title(),
                "id"     : product.getId(),
                "url"    : product.absolute_url(),
            })
            
            if (i+1) % 5 == 0:
                products.append(line)
                line = []
                
        if len(line) > 0:
            products.append(line)
            
        return {
            "title"       : group.Title(),
            "description" : group.Description(),
            "url"         : group.absolute_url(),
            "products"    : products,
        }
コード例 #2
0
    def testGetGroups(self):
        """
        """
        gm = IGroupManagement(self.shop)
        ids = [g.getId() for g in gm.getGroups()]

        self.assertEqual(ids, ["group_1", "group_2"])
コード例 #3
0
ファイル: groups_view.py プロジェクト: Easyshop/Easyshop
 def getGroups(self):
     """Returns groups of the shop.
     """
     shop = self._getShop()
     
     gm = IGroupManagement(shop)
     return gm.getGroups()
コード例 #4
0
 def testGetGroups(self):
     """
     """
     gm = IGroupManagement(self.shop)
     ids = [g.getId() for g in gm.getGroups()]
     
     self.assertEqual(ids, ["group_1", "group_2"])
コード例 #5
0
    def testHasGroups(self):
        """
        """
        cm = IGroupManagement(self.shop.products.product_1)
        self.assertEqual(cm.hasGroups(), True)

        cm = IGroupManagement(self.shop.products.product_3)
        self.assertEqual(cm.hasGroups(), False)
コード例 #6
0
ファイル: group.py プロジェクト: ned14/Easyshop
    def isValid(self, product):
        """Returns True if given product is at least in one of the selected
        groups of the criterion.
        """
        pm = IGroupManagement(product)
        product_groups = [group.getId() for group in pm.getGroups()]
        criteria_groups = self.context.getGroups()

        for criteria_group in criteria_groups:
            if criteria_group in product_groups:
                return True
        return False
コード例 #7
0
ファイル: group.py プロジェクト: viona/Easyshop
    def isValid(self, product):
        """Returns True if given product is at least in one of the selected
        groups of the criterion.
        """
        pm = IGroupManagement(product)
        product_groups = [group.getId() for group in pm.getGroups()]
        criteria_groups = self.context.getGroups()

        for criteria_group in criteria_groups:
            if criteria_group in product_groups:
                return True
        return False
コード例 #8
0
ファイル: property_management.py プロジェクト: viona/Easyshop
    def getProperties(self):
        """Returns all unique Properties for a Product, wheras properties from 
        the Product have higher precedence than Properties from a Group.
        """
        # NOTE: We can't use dictionaries here to unify properties, because we
        # need the properties in the order of positions within the product.

        property_ids = []
        properties = []

        # Get all Properties from Groups
        for group in IGroupManagement(self.context).getGroups():
            for property in group.objectValues("ProductProperty"):
                property_ids.append(property.getId())
                properties.append(property)

        # Overwrite with Properties from Product
        for property in self.context.objectValues("ProductProperty"):
            if property.getId() in property_ids:
                index = property_ids.index(property.getId())
                properties[index] = property
            else:
                properties.append(property)

        return properties
コード例 #9
0
    def addToGroup(self):
        """
        """
        catalog = getToolByName(self.context, "portal_catalog")
        group_name = self.request.form.get("group_name")

        if group_name is not None:
            gm = IGroupManagement(self.context)
            group = gm.addGroup(group_name)

            if group != False:

                products = []
                uids = self.request.get("selected_uids")

                for brain in catalog.searchResults(UID=uids):
                    products.append(brain.getObject())

                group.setProducts(products)

        return self._showView()
コード例 #10
0
ファイル: manage_products.py プロジェクト: Easyshop/Easyshop
    def addToGroup(self):
        """
        """
        catalog = getToolByName(self.context, "portal_catalog")
        group_name = self.request.form.get("group_name")

        if group_name is not None:
            gm = IGroupManagement(self.context)            
            group = gm.addGroup(group_name)
            
            if group != False:

                products = []
                uids = self.request.get("selected_uids")

                for brain in catalog.searchResults(UID = uids):
                    products.append(brain.getObject())
                    
                group.setProducts(products)

        return self._showView()
コード例 #11
0
    def testHasGroups(self):
        """
        """
        cm = IGroupManagement(self.shop.products.product_1)
        self.assertEqual(cm.hasGroups(), True)

        cm = IGroupManagement(self.shop.products.product_3)
        self.assertEqual(cm.hasGroups(), False)
コード例 #12
0
ファイル: property_management.py プロジェクト: viona/Easyshop
    def _getPropertiesAsDict(self):
        """Returns all unique Properties for a Product, wheras properties from 
        the Product have higher precedence than Properties from a Group.
        """
        groups = IGroupManagement(self.context).getGroups()

        # Get all Properties from Groups
        result = {}
        for group in groups:
            for property in group.objectValues("ProductProperty"):
                result[property.getId()] = property

        # Overwrite with Properties from Product
        for property in self.context.objectValues("ProductProperty"):
            result[property.getId()] = property

        return result
コード例 #13
0
    def getGlobalProperties(self):
        """Returns properties which are provided from groups of the product.
        """
        result = []
        for group in IGroupManagement(self.context).getGroups():
            properties = []
            # TODO: Change to IPropertyManagement().getProperties()
            for property in group.objectValues("ProductProperty"):
                properties.append({
                    "id": property.getId(),
                    "title": property.Title(),
                    "url": property.absolute_url(),
                    "options": property.getOptions(),
                })

            result.append({
                "group_title": group.Title(),
                "group_url": group.absolute_url(),
                "properties": properties,
            })

        return result
コード例 #14
0
 def testGetGroups_2(self):
     """
     """
     cm = IGroupManagement(self.shop.products.product_3)
     self.assertEqual(cm.getGroups(), [])
コード例 #15
0
 def testGetGroups_2(self):
     """
     """
     cm = IGroupManagement(self.shop.products.product_3)
     self.assertEqual(cm.getGroups(), [])
コード例 #16
0
 def testGetGroups_1(self):
     """
     """
     cm = IGroupManagement(self.shop.products.product_1)
     ids = [g.getId() for g in cm.getGroups()]
     self.assertEqual(ids, ["group_1", "group_2"])
コード例 #17
0
 def testGetGroups_1(self):
     """
     """
     cm = IGroupManagement(self.shop.products.product_1)
     ids = [g.getId() for g in cm.getGroups()]
     self.assertEqual(ids, ["group_1", "group_2"])