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 SaveReceipt(data): try: rfilename = settings.getReceiptsDir() + os.sep + data[0] + '.dhnreceipt' except: return src = '' for i in data: if isinstance(i, float): src += '%f\n' % i else: src += str(i).strip() + '\n' dhnio.Dprint(8, 'money.SaveReceipt %s to %s' % (data[0], rfilename)) if not dhnio._write_data(rfilename, src.strip()): dhnio.Dprint(1, 'money.SaveReceipt ERROR during writing to file ' + rfilename) SaveBalance(data[6], data[8], data[0]) currentBal, currentNTBal, maxReceiptId = LoadBalance()
def ReadAllReceipts(): l = [] burnRate = 0.0 balanceTrans = 0.0 balanceNonTrans = 0.0 try: current_balance = '' filenames = os.listdir(settings.getReceiptsDir()) filenames.sort() for filename in filenames: if not filename.endswith('.dhnreceipt'): continue receipt_id = filename[:-11] if len(receipt_id) != 8: continue try: receipt_id = int(receipt_id) except: continue if receipt_id < 0: continue if receipt_id > 99999999: continue path = settings.getReceiptsDir() + os.sep + filename if not os.path.exists(path): continue receipt = LoadReceipt(path) if receipt is None: continue if receipt[2] == '' or receipt[3] == '' or receipt[4] == '': # if we don't have a to, from, or command leave out? continue tupple = ( receipt[0], receipt[2], GetTrueAmount(receipt), nameurl.GetName(receipt[3]), nameurl.GetName(receipt[4]), receipt[1]) l.append(tupple) balanceTrans = float(receipt[6]) balanceNonTrans = float(receipt[8]) if receipt[2] == 'space': burnRate = float(receipt[5]) + float(receipt[7]) except: dhnio.Dprint(1, 'money.ReadAllReceipts unexpected ERROR') dhnio.DprintException() #def key_func(t): # try: # return int(t[0]) # except: # return 0 #l.sort(key=key_func) # if summary.SetBalanceAndBurnRate is not None: # summary.SetBalanceAndBurnRate(balanceTrans+balanceNonTrans, burnRate) return l
def ReadReceipt( number ): path = settings.getReceiptsDir() + os.sep + number + '.dhnreceipt' if not os.path.exists(path): dhnio.Dprint(1, 'money.ReadReceipt ERROR file not exist ' + path) return None return LoadReceipt(path)