Esempio n. 1
0
    def on_orderProcessButton_clicked(self):
        selection = self.orderTableWidget.selectedItems()
        if not selection:
            return

        index = self.indexFromOrderStatus()
        prevmsg = MM_util.searchlistbyhash(self.listDict[index],
                                           str(selection[4].text()))
        offer = self.do_offerfromordermsg(prevmsg)
        vendor = MM_util.searchlistbyhash(self.listDict['ident'],
                                          prevmsg.obj['vendorid'])

        if index == 'conf':
            # Send pay based on this conf
            replyindex = 'pay'
            if not self.yorn("Are you sure?"):
                return

            for ver in self.listDict['pay']:
                if ver.obj['confhash'] == prevmsg.hash:
                    self.info("This Order is already Paid.")
                    return

            order = MM_util.searchlistbyhash(self.listDict['order'],
                                             prevmsg.obj['orderhash'])
            msgstr = MM_util.createpay(self.myid.hash, self.btcaddr, prevmsg,
                                       order, offer, self.getFee())

        elif index == 'rec':
            # Send final based on this rec
            replyindex = 'final'
            flag = self.yorn("Click Yes to Finalize this purchase, " + \
                                "or click No to collect the refund.")
            if not self.yorn("Are you sure?"):
                return

            for ver in self.listDict['final']:
                if ver.obj['rechash'] == prevmsg.hash:
                    self.info("This Order has already been Finalized.")
                    return

            price = decimal.Decimal(offer.obj['price'])
            msgstr = MM_util.createfinal(self.myid.hash, self.btcaddr, \
                                    flag, prevmsg, vendor, offer, price)

        elif index == 'final':
            # Send feedback based on this final
            replyindex = 'feedback'
            flag = self.yorn("Click Yes to give positive feedback on this purchase, " + \
                                "or click No to give negative feedback.")
            if not self.yorn("Are you sure?"):
                return

            for ver in self.listDict['feedback']:
                if ver.obj['finalhash'] == prevmsg.hash:
                    self.info("You've already given feedback on this Order.")
                    return

            message = self.input("Leave a message with your feedback.")
            order = None
            for ver in self.listDict['order']:
                if ver.obj['offerhash'] == offer.hash:
                    order = ver
                    break
            msgstr = MM_util.createfeedback(self.btcaddr, \
                                    "buyer", flag, message, prevmsg, offer, order)

        else:
            self.info("Buyers cannot process this type of message.")
            return

        hash = MM_util.MM_writefile(msgstr)
        MM_util.appendindex(replyindex, hash)

        self.do_sendmsgviabm(vendor.obj['bmaddr'], msgstr)
        self.info("Message sent to Vendor!")