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, }
def testGetGroups(self): """ """ gm = IGroupManagement(self.shop) ids = [g.getId() for g in gm.getGroups()] self.assertEqual(ids, ["group_1", "group_2"])
def getGroups(self): """Returns groups of the shop. """ shop = self._getShop() gm = IGroupManagement(shop) return gm.getGroups()
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)
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
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
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()
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()
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
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
def testGetGroups_2(self): """ """ cm = IGroupManagement(self.shop.products.product_3) self.assertEqual(cm.getGroups(), [])
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"])