Last active
December 8, 2022 19:29
-
-
Save simranjaising30/b3d6d1882a934782d5d1d3f529e99d7a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import csv | |
from fund_admin.capital_account.models import CommitmentTransaction, Partner | |
import requests | |
from dateutil import parser as date_parser | |
import logging | |
fund_id = 79372 | |
csv_url = 'https://gist.githubusercontent.com/simranjaising30/c3d79b6de918e052039acd390b982c6a/raw/41f75a4819227e602a61b699b97437f599cdd789/isd-5684-3.csv' | |
partner_ids = dict( | |
Partner.objects.filter(fund_id=fund_id).values_list("name", "id") | |
) | |
response = requests.get(csv_url) | |
response.raise_for_status() | |
decoded_content = response.content.decode("utf-8") | |
csv_reader = csv.reader(decoded_content.splitlines()) | |
commitment_transactions = [] | |
for line in csv_reader: | |
partner_name, from_date, to_date = line | |
partner_id = partner_ids[partner_name] | |
from_date = date_parser.parse(from_date) | |
to_date = date_parser.parse(to_date) | |
if partner_id and from_date and to_date: | |
partner = Partner.objects.filter(fund_id=fund_id, id=partner_id).get() | |
assert partner_id == partner.id | |
target_transactions = CommitmentTransaction.objects.filter( | |
date=from_date, partner_id=partner.id | |
) | |
logging.info( | |
f"number of target transactions for {partner_id} is {len(target_transactions)}" | |
) | |
for transaction in target_transactions: | |
transaction.date = to_date | |
logging.info( | |
f"target transaction f{transaction.partner.id} to date {to_date}" | |
) | |
commitment_transactions.append(transaction) | |
logging.info(f"target transactions to update = {commitment_transactions}") | |
CommitmentTransaction.objects.bulk_update(commitment_transactions, ["date"]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
LGTM