예제 #1
0
def create_invoice(account_id, client_id, invoice):
    if not invoice.get('number'):
        invoice['number'] = next_invoice_num(account_id)
    invoice_id = str(ULID.from_datetime(invoice['issued_on']))
    invoice['invoice_id'] = invoice_id
    invoice['client_id'] = client_id

    invoice_item = {
        **make_indexes(
            'Invoice',
            PK=f'CLIENT#{client_id}',
            SK=f'#INVOICE#{invoice_id}',
            GSI1PK=f'INVOICE#{invoice_id}',
            GSI1SK=f'INVOICE#{invoice_id}',
        ),
        **dict_to_item(invoice)
    }
    ddb_client.transact_write_items(TransactItems=[
        make_put_unique(invoice_item),
        make_put_unique(
            dict_to_item(
                {
                    'PK':
                    f'ACCOUNT#{account_id}#INVOICENUMBER#{invoice["number"]}',
                    'SK':
                    f'ACCOUNT#{account_id}#INVOICENUMBER#{invoice["number"]}',
                }, False)),
    ])
    return invoice_id
예제 #2
0
def test_ulid_from_time():
    ulid1 = ULID.from_timestamp(time.time())
    ulid2 = ULID.from_datetime(utcnow())

    now = utcnow()
    t = time.time()

    assert ulid1.timestamp == pytest.approx(t)
    datetimes_almost_equal(ulid1.datetime, now)

    assert ulid2.timestamp == pytest.approx(t)
    datetimes_almost_equal(ulid2.datetime, now)