def get_objects(self):
     # Get top-level shop metafields
     yield from super().get_objects()
     # Get parent objects, bookmarking at `metafield_<object_name>`
     for selected_parent in get_selected_parents():
         # The name member controls many things, but most importantly
         # the bookmark key. This switches us over to the
         # `metafield_<parent_type>` bookmark. We track that separately
         # to make resetting individual streams easier.
         selected_parent.name = "metafield_{}".format(selected_parent.name)
         for parent_object in selected_parent.get_objects():
             since_id = 1
             while True:
                 metafields = get_metafields(parent_object, since_id)
                 for metafield in metafields:
                     if metafield.id < since_id:
                         raise OutOfOrderIdsError("metafield.id < since_id: {} < {}".format(
                             metafield.id, since_id))
                     yield metafield
                 if len(metafields) < RESULTS_PER_PAGE:
                     break
                 if metafields[-1].id != max([o.id for o in metafields]):
                     raise OutOfOrderIdsError("{} is not the max id in metafields ({})".format(
                         metafields[-1].id, max([o.id for o in metafields])))
                 since_id += metafields[-1].id
Exemple #2
0
    def get_objects(self):
        since_id = 1
        bookmark = self.get_bookmark()
        max_bookmark = utils.strftime(utils.now())
        while True:
            query_params = {
                "since_id": since_id,
                "limit": RESULTS_PER_PAGE,
            }

            objects = self.call_api(query_params)

            for obj in objects:
                # Syncing Collects is a full sync every time but emitting records that have
                # an updated_date greater than the bookmark
                if utils.strptime_with_tz(obj.updated_at) > bookmark:
                    if obj.id < since_id:
                        raise OutOfOrderIdsError("obj.id < since_id: {} < {}".format(
                            obj.id, since_id))
                    yield obj

            if len(objects) < RESULTS_PER_PAGE:
                # Update the bookmark at the end of the last page
                self.update_bookmark(max_bookmark)
                break
            if objects[-1].id != max([o.id for o in objects]):
                raise OutOfOrderIdsError("{} is not the max id in objects ({})".format(
                    objects[-1].id, max([o.id for o in objects])))
            since_id = objects[-1].id
    def get_objects(self):
        selected_parent = Context.stream_objects['products']()
        selected_parent.name = "inventory_items"

        # Page through all `products` and product variants, bookmarking at `inventory_items`
        for parent_object in selected_parent.get_objects():
            for variant in parent_object.variants:
                since_id = 1
                while True:
                    inventory_items = self.get_inventory_items(
                        variant, since_id)
                    for inventory_item in inventory_items:
                        if inventory_item.id < since_id:
                            raise OutOfOrderIdsError(
                                "inventory_item.id < since_id: {} < {}".format(
                                    inventory_item.id, since_id))
                        yield inventory_item
                    if len(inventory_items) < RESULTS_PER_PAGE:
                        break
                    if inventory_items[-1].id != max(
                        [o.id for o in inventory_items]):
                        raise OutOfOrderIdsError(
                            "{} is not the max id in inventory_items ({})".
                            format(inventory_items[-1].id,
                                   max([o.id for o in inventory_items])))
                    since_id = inventory_items[-1].id
    def get_objects(self):
        selected_parent = Context.stream_objects[self.get_parent_name()]()
        selected_parent.name = self.name

        # Page through all `orders`, bookmarking at `child_orders`
        for parent_object in selected_parent.get_objects():
            since_id = 1
            while True:
                children = self.get_children(parent_object, since_id)
                for child in children:
                    if child.id < since_id:
                        raise OutOfOrderIdsError("child.id < since_id: {} < {}".format(
                            child.id, since_id))
                    yield child
                if len(children) < RESULTS_PER_PAGE:
                    break
                if children[-1].id != max([o.id for o in children]):
                    raise OutOfOrderIdsError("{} is not the max id in children ({})".format(
                        children[-1].id, max([o.id for o in children])))
                since_id = children[-1].id
Exemple #5
0
    def get_objects(self):
        selected_parent = Context.stream_objects['orders']()
        selected_parent.name = "refund_orders"

        # Page through all `orders`, bookmarking at `refund_orders`
        for parent_object in selected_parent.get_objects():
            since_id = 1
            while True:
                refunds = self.get_refunds(parent_object, since_id)
                for refund in refunds:
                    if refund.id < since_id:
                        raise OutOfOrderIdsError("refund.id < since_id: {} < {}".format(
                            refund.id, since_id))
                    yield refund
                if len(refunds) < RESULTS_PER_PAGE:
                    break
                if refunds[-1].id != max([o.id for o in refunds]):
                    raise OutOfOrderIdsError("{} is not the max id in refunds ({})".format(
                        refunds[-1].id, max([o.id for o in refunds])))
                since_id = refunds[-1].id