def SearchMissingReceipts(last_receipt_id=-1): dhnio.Dprint(8, 'money.SearchMissingReceipts ' + str(last_receipt_id)) def try2remove(filepath): try: os.remove(filepath) except: dhnio.Dprint(4, 'money.SearchMissingReceipts.try2remove WARNING can not remove ' + filepath) dhnio.Dprint(6, 'money.SearchMissingReceipts.try2remove %s removed' % filepath) existing_receipts = set() max_index = -1 for filename in os.listdir(settings.getReceiptsDir()): filepath = os.path.join(settings.getReceiptsDir(), filename) if not filename.endswith('.dhnreceipt'): try2remove(filepath) continue receipt_id = filename[:-11] if len(receipt_id) != 8: try2remove(filepath) continue try: receipt_id = int(receipt_id) except: try2remove(filepath) continue if receipt_id < 0: try2remove(filepath) continue if receipt_id > 99999999: try2remove(filepath) continue if receipt_id > max_index: max_index = receipt_id existing_receipts.add(receipt_id) if last_receipt_id > max_index: max_index = last_receipt_id r = [] dhnio.Dprint(8, 'money.SearchMissingReceipts existing_receipts=%s max_index=%s' % (str(len(existing_receipts)), str(max_index))) for i in range(max_index + 1): if i not in existing_receipts: r.append(misc.receiptIDstr(i)) if len(r) >= 100: break if max_index not in existing_receipts: r.insert(0, misc.receiptIDstr(max_index)) existing_receipts.clear() return r
def UnpackReceipt2(body): sin = StringIO.StringIO(str(body)) ReceiptID = misc.receiptIDstr(sin.readline().strip()) DateTime = sin.readline().strip() Command = sin.readline().strip() FromID = sin.readline().strip() ToID = sin.readline().strip() try: Amount = float(sin.readline().strip()) Balance = float(sin.readline().strip()) AmountNT = float(sin.readline().strip()) BalanceNT = float(sin.readline().strip()) except: Amount = 0.0 Balance = 0.0 AmountNT = 0.0 BalanceNT = 0.0 PayRate = sin.readline().strip() Report = sin.read().strip() return (ReceiptID, DateTime, Command, FromID, ToID, Amount, Balance, AmountNT, BalanceNT, PayRate, Report)