コード例 #1
0
ファイル: money.py プロジェクト: vesellov/datahaven
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
コード例 #2
0
ファイル: money.py プロジェクト: vesellov/datahaven
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()
コード例 #3
0
ファイル: money.py プロジェクト: vesellov/datahaven
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
コード例 #4
0
ファイル: money.py プロジェクト: vesellov/datahaven
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)