Skip to content

Commit

Permalink
Merge pull request #5215 from onepercentclub/ticket/BB-19400-tne-ranking
Browse files Browse the repository at this point in the history
Add script to rank tne activities on when they reached a specific target
  • Loading branch information
gannetson authored Sep 1, 2022
2 parents 9bf6fa9 + 60ef766 commit 9266141
Showing 1 changed file with 64 additions and 0 deletions.
64 changes: 64 additions & 0 deletions scripts/tne_campaign_ranking.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from datetime import date
import xlsxwriter

from bluebottle.clients.models import Client
from bluebottle.clients.utils import LocalTenant

from bluebottle.funding.models import Funding, Donor
from bluebottle.geo.models import Location


OFFICE_NAME = 'Mogadishu'
TARGET = 500
DEADLINES = [date(2022, 8, 20), date(2022, 8, 21)]


def run(*args):
tne = Client.objects.get(client_name='nexteconomy')

with LocalTenant(tne, clear_tenant=True):
result = []

location = Location.objects.get(name=OFFICE_NAME)

campaigns = Funding.objects.filter(
initiative__location__name=OFFICE_NAME,
deadline__date__in=DEADLINES,
status__in=('succeeded', 'partially_funded')
)
print(len(campaigns))

for activity in campaigns:
print(activity.title, activity.amount_raised, activity.status)

for campaign in campaigns:
donors = campaign.contributors.instance_of(
Donor
).filter(
status='succeeded'
).order_by(
'created'
)

total = 0
for donor in donors:
total += donor.amount.amount

if total >= TARGET:
result.append({
'id': campaign.id,
'title': campaign.title,
'status': campaign.status,
'target reached': str(donor.created),
})
break

workbook = xlsxwriter.Workbook(f'TNE-{location.name}-{DEADLINES[0]}.xlsx', {'remove_timezone': True})
worksheet = workbook.add_worksheet()

worksheet.write_row(0, 0, result[0].keys())

for (index, row) in enumerate(result):
worksheet.write_row(index + 1, 0, row.values())

workbook.close()

0 comments on commit 9266141

Please sign in to comment.