55 lines
1.3 KiB
Python
Executable File
55 lines
1.3 KiB
Python
Executable File
# Expects a scans.csv of the historical scans in format:
|
|
# date,card_number
|
|
|
|
import django, sys, os
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
|
|
django.setup()
|
|
|
|
import csv
|
|
from datetime import datetime, timedelta
|
|
from apiserver.api import models
|
|
from django.utils.timezone import now, pytz
|
|
|
|
def today_alberta_tz():
|
|
return datetime.now(pytz.timezone('America/Edmonton')).date()
|
|
|
|
days = {}
|
|
|
|
date = datetime(2020, 3, 7).date()
|
|
while date <= today_alberta_tz():
|
|
days[str(date)] = set()
|
|
date += timedelta(days=1)
|
|
|
|
print('Initialized with:')
|
|
print(days)
|
|
|
|
with open('scans.csv', newline='') as csvfile:
|
|
reader = csv.DictReader(csvfile)
|
|
for row in reader:
|
|
datetime_obj = datetime.strptime(row['date'], "%Y-%m-%d %H:%M:%S")
|
|
datetime_obj_utc = datetime_obj.replace(tzinfo=pytz.timezone('UTC'))
|
|
date = datetime_obj_utc.astimezone(pytz.timezone('America/Edmonton'))
|
|
|
|
card = row['card_number']
|
|
|
|
print('Processing', date, card)
|
|
day = str(date.date())
|
|
|
|
if day not in days:
|
|
days[day] = set()
|
|
|
|
days[day].add(card)
|
|
|
|
print(days)
|
|
|
|
for day, cards in days.items():
|
|
print(day, len(cards))
|
|
|
|
models.StatsSpaceActivity.objects.update_or_create(
|
|
date=day,
|
|
defaults=dict(card_scans=len(cards)),
|
|
)
|
|
|
|
print('Done.')
|
|
|