Example #1
0
 def test_utils_delete_entities_all(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     utils.store(self.testdata["items"], models.Item, "items", self.request)
     utils.delete_all("items", self.request)
     items = [x for x in self.app_root["items"].items()]
     assert (items == [])
Example #2
0
    def test_utils_store_entities_with_unit_of_measure(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        self.testdata["items"][0]["unit_of_measure_id"] = "unit"
        unit = models.EntityData()
        self.app_root["unit_of_measures"]["unit"] = unit

        utils.store(self.testdata["items"], models.Item, "items", self.request)
        item = self.app_root["items"]["itemka32"]
        assert item.unit_of_measure == unit
Example #3
0
    def test_utils_store_entities_with_vpe_type(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        self.testdata["items"][0]["vpe_type_id"] = "portion"
        vpe_type = models.EntityData()
        self.app_root["vpe_types"]["portion"] = vpe_type

        utils.store(self.testdata["items"], models.Item, "items", self.request)
        item = self.app_root["items"]["itemka32"]
        assert item.vpe_type == vpe_type
Example #4
0
def vpe_types_put(request):
    """Update vpe type data (for items).

       request body :

       * vpe_types: Sequence of VPEType
    """

    utils.store(request.validated["vpe_types"], models.EntityData, "vpe_types",
                request)
    return {"status": "succeeded"}
Example #5
0
def unit_of_measures_put(request):
    """Update unit of measure data (for items)

       reqeust body :

       * Sequence of UnitOfMeasure
    """

    utils.store(request.validated["unit_of_measures"], models.EntityData,
                "unit_of_measures", request)
    return {"status": "succeeded"}
Example #6
0
    def test_utils_delete_entities(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        from repoze.catalog.query import Eq
        utils.store(self.testdata["items"], models.Item, "items", self.request)

        utils.delete(self.testdata["items"], "items", self.request)
        items = [x for x in self.app_root["items"].items()]
        assert (items == [])
        catalog = self.app_root["catalog"]
        search_results = catalog.query(Eq('id', 'itemka32'))[0]
        assert (search_results == 0)
Example #7
0
def vpe_types_post(request):
    """Create new vpe type data (for items).
       You should delete referencing items first.

       request body :

       * vpe_types: Sequence of VPEType
    """

    utils.store(request.validated["vpe_types"], models.EntityData, "vpe_types",
                request)
    return {"status": "succeeded"}
Example #8
0
 def test_utils_store_entities_with_parent_missing(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     self.testdata["items"][0]["parent_id"] = "wrong_id"
     self.testdata["items"][0]["id"] = "itemka32"
     parent = models.ItemGroup()
     self.app_root["item_groups"]["karotten"] = parent
     models.ItemGroup().__children__
     utils.store(self.testdata["items"], models.Item, "items", self.request)
     item = self.app_root["items"]["itemka32"]
     assert item.__parent__ is None
     assert parent.__children__ == []
Example #9
0
    def test_utils_store_entities_with_quality(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        quality = {"id": "quality"}
        parent = models.ItemGroup()
        parent.from_appstruct({"qualities": [quality]})
        self.app_root["item_groups"]["parent"] = parent

        self.testdata["items"][0]["parent_id"] = "parent"
        self.testdata["items"][0]["quality_id"] = "quality"
        utils.store(self.testdata["items"], models.Item, "items", self.request)
        item = self.app_root["items"]["itemka32"]
        assert item.quality is quality
Example #10
0
    def test_utils_store_entities_update_parent(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        self.testdata["items"][0]["parent_id"] = "karotten"
        self.testdata["items"][0]["id"] = "itemka32"
        item = utils.store(self.testdata["items"], models.Item, "items",
                           self.request)[0]

        parent = utils.store([{
            "id": "karotten"
        }], models.ItemGroup, "item_groups", self.request)[0]
        assert item.__parent__ is parent
        assert parent.__children__ == [item]
Example #11
0
    def test_utils_store_entities_with_quality_wrong_id(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        from organicseeds_webshop_api.exceptions import _400
        quality = {"id": "quality"}
        parent = models.ItemGroup()
        parent.from_appstruct({"qualities": [quality]})
        self.app_root["item_groups"]["parent"] = parent

        self.testdata["items"][0]["parent_id"] = "parent"
        self.testdata["items"][0]["wrong_quality_id"] = "quality"
        with pytest.raises(_400):
            utils.store(self.testdata["items"], models.Item, "items",
                        self.request)
Example #12
0
def item_groups_post(request):
    """Create new item group entities

       request body :

       * item_groups : Sequence of ItemGroup
    """

    save_in_webshop = request.validated.get("save_in_webshop", True)
    appstructs = request.validated["item_groups"]
    item_groups = utils.store(appstructs, models.ItemGroup, "item_groups",
                              request)
    if save_in_webshop:
        with magentoapi.ItemGroups(request) as proxy:
            try:
                # create item_groups in webshop
                webshop_ids = proxy.create(appstructs)
                utils.set_webshop_ids(item_groups, webshop_ids)
                # activate categories in webshop shops
                proxy.update_shops(webshop_ids, appstructs)
                # link item_group parents in webshop
                proxy.link_item_parents(webshop_ids, appstructs)
                # link item_group children in webshop
                item_webshop_ids, items = utils.get_entities_item_children(
                    item_groups, request)
                proxy.link_item_parents(item_webshop_ids, items)
            except exceptions._502 as e:
                proxy.delete([x for x in e.success if isinstance(x, int)])
                raise
        magentoapi.indexing_reindex(request)
    return {"status": "succeeded"}
Example #13
0
    def test_utils_store_entities_update_item_quality_missing(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        child = models.Item()
        child.from_appstruct({
            "id": "child",
            "parent_id": "parent",
            "quality_id": "quality"
        })
        self.app_root["items"]["child"] = child

        utils.store([{
            "id": "parent",
            "qualities": []
        }], models.ItemGroup, "item_groups", self.request)
        assert child.quality is None
Example #14
0
 def test_utils_store_entities_update_item_quality(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     quality = {"id": "quality"}
     child_appstruct = {
         "id": "child",
         "parent_id": "parent",
         "quality_id": "quality"
     }
     childs = utils.store([child_appstruct], models.Item, "items",
                          self.request)
     child = childs[0]
     utils.store([{
         "id": "parent",
         "qualities": [quality]
     }], models.ItemGroup, "item_groups", self.request)
     assert child.quality is quality
Example #15
0
    def test_utils_store_entities_update_item_quality_wrong_id(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        from organicseeds_webshop_api.exceptions import _400
        quality = {"id": "quality"}
        child_appstruct = {
            "id": "child",
            "parent_id": "parent",
            "quality_id": "wrong_id"
        }
        utils.store([child_appstruct], models.Item, "items", self.request)

        with pytest.raises(_400):
            quality = {"id": "quality"}
            utils.store([{
                "id": "parent",
                "qualities": [quality]
            }], models.ItemGroup, "item_groups", self.request)
Example #16
0
 def test_utils_search_OR(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     appstructs = [{
         "id": "item1",
         "__type__": "vpe1",
         "title": {
             "default": "title"
         }
     }, {
         "id": "item2",
         "__type__": "vpe2",
         "title": {
             "default": "title"
         }
     }]
     utils.store(appstructs, models.Item, "items", self.request)
     kwargs = {"id": "item1", "__type__": "vpe2"}
     results = utils.search(self.request, operator="OR", **kwargs)
     assert len(results) == 2
Example #17
0
 def test_utils_delete_entities_with_parents(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     item = utils.store(self.testdata["items"], models.Item, "items",
                        self.request)[0]
     parent = models.ItemGroup()
     item.__parent__ = parent
     parent.__children__.append(item)
     utils.delete(self.testdata["items"], "items", self.request)
     assert item.__parent__ is None
     assert item not in parent.__children__
Example #18
0
    def test_item_group_get(self):
        from organicseeds_webshop_api.testing import set_testfile
        from organicseeds_webshop_api.services import item_group_get
        from organicseeds_webshop_api import models
        from organicseeds_webshop_api import utils
        cattests = set_testfile("/testdata/categories_post.yaml")["testdata"]
        utils.store(cattests["categories"], models.Category, "categories",
                    self.request)
        item_groups = utils.store(self.testdata["item_groups"],
                                  models.ItemGroup, "item_groups",
                                  self.request)
        item_group = item_groups[0]

        self.request.validated = {
            "id": item_group["id"],
            "lang": "default",
            "with_children": False,
            "children_shop_id": ""
        }
        response = item_group_get(self.request)
        assert response["title"] == item_group["title"]["default"]
Example #19
0
    def test_utils_store_entities(self):
        from organicseeds_webshop_api import utils
        from organicseeds_webshop_api import models
        from repoze.catalog.query import Eq
        catalog = self.app_root["catalog"]
        self.testdata["items"][0]["title"] = {"default": "Aktuelle Aussaten"}

        items = utils.store(self.testdata["items"], models.Item, "items",
                            self.request)
        assert len(items) == len(self.testdata["items"])
        results = catalog.query(Eq('id', 'itemka32'))[0]
        assert (results == 1)
Example #20
0
def items_put(request):
    """Update existing item entities

       request body :

       * items: Sequence of ItemUpdate
    """
    save_in_webshop = request.validated.get("save_in_webshop", True)
    appstructs = utils.remove_none_values(request.validated["items"])
    utils.store(appstructs, models.Item, "items", request)
    items = request.root.app_root["items"]
    if save_in_webshop:
        magentoapi.indexing_enable_manual(request)
        with magentoapi.Items(request) as proxy:
            webshop_ids = []
            for a in appstructs:
                webshop_id = items[a["id"]].webshop_id
                webshop_ids.append(webshop_id)
            proxy.update(appstructs)
            proxy.update_shops(webshop_ids, appstructs)
            magentoapi.indexing_reindex(request)
    return {"status": "succeeded"}
Example #21
0
 def test_utils_store_entities_with_url_slug(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     from organicseeds_webshop_api.url_normalizer import url_normalizer
     from repoze.catalog.query import Eq
     catalog = self.app_root["catalog"]
     appstructs = [{
         "id": "1",
         "sku": "sku1",
         "title": {
             "default": "title",
             "fr": u"titlé fr"
         }
     }]
     item = utils.store(appstructs, models.Item, "items", self.request)[0]
     assert item["url_slug"]["default"] == url_normalizer('title' + "-1")
     assert item["url_slug"]["fr"] == url_normalizer(u'titlé fr') + "-1-fr"
     results = catalog.query(
         Eq('title_url_slugs',
            url_normalizer(u'titlé fr') + "-1-fr"))[0]
     assert (results == 1)
Example #22
0
def items_post(request):
    """Create new item entities

       body :

       * Sequence of Item
    """
    save_in_webshop = request.validated.get("save_in_webshop", True)
    appstructs = request.validated["items"]
    items = utils.store(appstructs, models.Item, "items", request)
    if save_in_webshop:
        magentoapi.indexing_enable_manual(request)
        with magentoapi.Items(request) as proxy:
            try:
                webshop_ids = proxy.create(appstructs)
                utils.set_webshop_ids(items, webshop_ids)
                proxy.update_shops(webshop_ids, appstructs)
                proxy.link_item_parents(webshop_ids, appstructs)
            except exceptions._502 as e:
                proxy.delete([x for x in e.success if isinstance(x, int)])
                raise
        magentoapi.indexing_reindex(request)
    return {"status": "succeeded"}
Example #23
0
 def test_utils_store_entities_with_vpe_type_missing(self):
     from organicseeds_webshop_api import utils
     from organicseeds_webshop_api import models
     utils.store(self.testdata["items"], models.Item, "items", self.request)
     item = self.app_root["items"]["itemka32"]
     assert item.vpe_type is None