Query for all missing information in the transaction

def complete(self, uio, dropped=False):
        """Query for all missing information in the transaction"""
        if self.dropped and not dropped:
            # do nothing for dropped xn, unless specifically told to
            return

        for end in ['src', 'dst']:
            if getattr(self, end):
                continue  # we have this information

            uio.show('\nEnter ' + end + ' for transaction:')
            uio.show('')
            uio.show(self.summary())
            try:
                endpoints = []
                remaining = self.amount
                while remaining:
                    account = uio.text(' Enter account', None)
                    amount = uio.decimal(
                        ' Enter amount',
                        default=remaining,
                        lower=0,
                        upper=remaining
                    )
                    endpoints.append(Endpoint(account, amount))
                    remaining = self.amount \
                        - sum(map(lambda x: x.amount, endpoints))
            except ui.RejectWarning:
                # bail out
                sys.exit("bye!")

            # flip amounts if it was a src outcome
            if end == 'src':
                endpoints = map(
                    lambda x: Endpoint(x.account, -x.amount),
                    endpoints
                )

            # set endpoints
            setattr(self, end, endpoints)