Example #1
0
    def get_models_to_update(self,
                             form_id,
                             stock_report_helpers,
                             deprecated_helpers,
                             ledger_db=None):
        ledger_db = ledger_db or LedgerDBSQL()
        result = StockModelUpdateResult()

        ledgers_needing_rebuild = {
            deprecated_transaction.ledger_reference
            for deprecated_helper in deprecated_helpers
            for deprecated_transaction in deprecated_helper.transactions
        }

        updated_ledgers = {}
        for helper in stock_report_helpers:
            for stock_trans in helper.transactions:
                ledger_value = self._process_transaction(
                    helper, stock_trans, ledger_db)
                updated_ledgers[ledger_value.ledger_reference] = ledger_value

        for ledger_reference, ledger_value in updated_ledgers.items():
            if ledger_reference in ledgers_needing_rebuild:
                rebuilt_ledger_value = self._rebuild_ledger(
                    form_id, ledger_value)
                result.to_save.append(rebuilt_ledger_value)
            else:
                result.to_save.append(ledger_value)

        return result
Example #2
0
    def get_models_to_update(self,
                             form_id,
                             stock_report_helpers,
                             deprecated_helpers,
                             ledger_db=None):
        ledger_db = ledger_db or LedgerDBCouch()
        result = StockModelUpdateResult()

        if len(deprecated_helpers):
            form_ids = list({
                deprecated_helper.form_id
                for deprecated_helper in deprecated_helpers
            })
            assert form_ids == [form_id]
            result.to_delete.append(
                StockReport.objects.filter(domain=self.domain,
                                           form_id=form_id))

        for helper in stock_report_helpers:
            if helper.report_type not in const.VALID_REPORT_TYPES:
                continue

            report_model = _get_model_for_stock_report(self.domain, helper)
            result.to_save.append(report_model)
            for transaction_helper in helper.transactions:
                transaction = _get_model_for_stock_transaction(
                    report_model, transaction_helper, ledger_db)
                result.to_save.append(transaction)

        return result