def valid_message_receive()

in rabbitmq/pluto_core_message_processor.py [0:0]


    def valid_message_receive(self, exchange_name, routing_key, delivery_tag, body: dict):
        """
        Takes an incoming message, looks up the bundle based on the project id. and attempts to delete the bundle and any assets for it.
        :param exchange_name:
        :param routing_key:
        :param delivery_tag:
        :param body:
        :return:
        """
        logger.debug("Got incoming message: " + str(body))
        logger.debug("Exchange name: {0}".format(exchange_name))
        logger.debug("Routing key: {0}".format(routing_key))
        logger.debug("Delivery tag: {0}".format(delivery_tag))

        try:
            parent_bundle = Deliverable.objects.get(pluto_core_project_id=body["project_id"])
            deliverables = DeliverableAsset.objects.filter(deliverable=parent_bundle)

            for asset in deliverables:
                try:
                    if os.path.exists(str(asset.absolute_path)):
                        asset.remove_file()
                    asset.purge()
                    if asset.online_item_id is None:
                        asset.delete()
                except Exception as e:
                    logger.error("Could not delete existing path or asset for asset {0}: {1}".format(str(asset), str(e)))

            try:
                if os.path.exists(str(get_path_for_deliverable(parent_bundle.name))):
                    shutil.rmtree(str(get_path_for_deliverable(parent_bundle.name)), ignore_errors=True)
            except Exception as e:
                logger.error("Could not delete folder for bundle {0}: {1}".format(str(body["project_id"]), str(e)))

            parent_bundle.delete()

        except Exception as e:
            logger.error("Could not delete bundle {0}: {1}".format(str(body["project_id"]), str(e)))