You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
# 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.') |
|
|
|
|