Skip to content

Commit

Permalink
Kode for feilhåndtering i hovedloop, samt håndtering zerodvivisionerr…
Browse files Browse the repository at this point in the history
…or i ticket-metoden
  • Loading branch information
xivind committed Mar 11, 2024
1 parent d9e5777 commit f354346
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 33 deletions.
28 changes: 14 additions & 14 deletions data/result/results.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"week_number": 10,
"athlete_name": "Thomas Rosenlund",
"activities": 16,
"moving_time": 40140,
"moving_time": 0,
"distance": 202900,
"elevation_gain": 2295,
"tickets": 2
Expand All @@ -48,7 +48,7 @@
"week_number": 10,
"athlete_name": "\u00d8rjan Stene",
"activities": 6,
"moving_time": 32280,
"moving_time": 0,
"distance": 144300,
"elevation_gain": 4266,
"tickets": 2
Expand All @@ -57,7 +57,7 @@
"week_number": 10,
"athlete_name": "\u00d8ivind Langeland",
"activities": 18,
"moving_time": 37860,
"moving_time": 0,
"distance": 199400,
"elevation_gain": 2135,
"tickets": 2
Expand All @@ -66,7 +66,7 @@
"week_number": 10,
"athlete_name": "Per \u00d8ivind Gaardsrud",
"activities": 3,
"moving_time": 33120,
"moving_time": 0,
"distance": 84300,
"elevation_gain": 1645,
"tickets": 2
Expand All @@ -75,7 +75,7 @@
"week_number": 10,
"athlete_name": "TTR Hdir",
"activities": 2,
"moving_time": 7320,
"moving_time": 0,
"distance": 19000,
"elevation_gain": 100,
"tickets": 0
Expand All @@ -84,7 +84,7 @@
"week_number": 10,
"athlete_name": "Even Espelid",
"activities": 5,
"moving_time": 9960,
"moving_time": 0,
"distance": 65700,
"elevation_gain": 921,
"tickets": 1
Expand All @@ -102,7 +102,7 @@
"week_number": 10,
"athlete_name": "Per Ludvig Skjerven",
"activities": 5,
"moving_time": 21060,
"moving_time": 0,
"distance": 33000,
"elevation_gain": 821,
"tickets": 2
Expand All @@ -111,7 +111,7 @@
"week_number": 10,
"athlete_name": "Ingvar S\u00f8rlien",
"activities": 3,
"moving_time": 11580,
"moving_time": 0,
"distance": 46100,
"elevation_gain": 786,
"tickets": 1
Expand All @@ -120,7 +120,7 @@
"week_number": 10,
"athlete_name": "Ragnhild Holst",
"activities": 2,
"moving_time": 2160,
"moving_time": 0,
"distance": 4800,
"elevation_gain": 37,
"tickets": 0
Expand All @@ -129,7 +129,7 @@
"week_number": 11,
"athlete_name": "Thomas Rosenlund",
"activities": 2,
"moving_time": 4200,
"moving_time": 0,
"distance": 30600,
"elevation_gain": 280,
"tickets": 0
Expand All @@ -138,7 +138,7 @@
"week_number": 11,
"athlete_name": "\u00d8ivind Langeland",
"activities": 2,
"moving_time": 1800,
"moving_time": 0,
"distance": 10800,
"elevation_gain": 98,
"tickets": 0
Expand All @@ -147,7 +147,7 @@
"week_number": 10,
"athlete_name": "Jonas Bergan",
"activities": 4,
"moving_time": 15480,
"moving_time": 0,
"distance": 50300,
"elevation_gain": 221,
"tickets": 1
Expand All @@ -156,7 +156,7 @@
"week_number": 10,
"athlete_name": "Jeppe Ugland",
"activities": 4,
"moving_time": 11520,
"moving_time": 0,
"distance": 27900,
"elevation_gain": 331,
"tickets": 1
Expand All @@ -165,7 +165,7 @@
"week_number": 11,
"athlete_name": "Jeppe Ugland",
"activities": 1,
"moving_time": 3600,
"moving_time": 0,
"distance": 12000,
"elevation_gain": 157,
"tickets": 0
Expand Down
61 changes: 42 additions & 19 deletions databehandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,25 @@ def get_week_number(self, date_str):
"""Method to translate weekday to week number"""
date_obj = datetime.strptime(date_str, '%Y-%m-%d')
week_number = date_obj.strftime('%G-W%V')

return week_number.split('-W')[1]

def calculate_tickets(self, moving_time_seconds):
"""Method to translate activity minutes into tickets"""
try:
if moving_time_seconds/60 in range(150, 299):
tickets = 1
elif moving_time_seconds/60 >= 300:
tickets = 2
else:
tickets = 0

except (ZeroDivisionError) as error:
tickets = 0
print(f'An error occured calculating tickets: {error}')

return tickets

def read_datastore(self):
"""Method to read json data from file"""
with open(RESULTS_FILE, 'r', encoding='utf-8') as file:
Expand All @@ -32,32 +49,38 @@ def process_csv(self):
csv_list = list(csv.DictReader(file))

for dictionary in csv_list:
week_number = self.get_week_number(dictionary["leaderboard_date_start"])
athlete_weekly_uid = f'{week_number}-{dictionary["athlete_id"]}'
self.datastore.update({athlete_weekly_uid: {"week_number": int(week_number),
"athlete_name": dictionary["athlete_name"],
"activities": int(dictionary["activities"]),
"moving_time": int(float(dictionary["moving_time"])),
"distance": int(float(dictionary["distance"])),
"elevation_gain": int(float(dictionary["elevation_gain"])),
"tickets": int(self.calculate_tickets(int(float(dictionary["moving_time"]))))
}})

def calculate_tickets(self, moving_time_seconds):
"""Method to translate activity minutes into tickets"""
if moving_time_seconds/60 in range(150, 299):
tickets = 1
elif moving_time_seconds/60 >= 300:
tickets = 2
else:
tickets = 0
return tickets
if "moving_time" in csv_list:
moving_time = int(float(dictionary["moving_time"]))
else:
moving_time = int(0)

try:
week_number = self.get_week_number(dictionary["leaderboard_date_start"])
athlete_weekly_uid = f'{week_number}-{dictionary["athlete_id"]}'

self.datastore.update(
{athlete_weekly_uid: {
"week_number": int(week_number),
"athlete_name": dictionary["athlete_name"],
"activities": int(dictionary["activities"]),
"moving_time": moving_time,
"distance": int(float(dictionary["distance"])),
"elevation_gain": int(float(dictionary["elevation_gain"])),
"tickets": int(
self.calculate_tickets(
int(float(dictionary["moving_time"]))))
}})

except (KeyError, ValueError) as error:
print(f'An error occured processing CSV: {error}')

def save_datastore(self):
"""Method to write json data to file"""
with open(RESULTS_FILE, 'w', encoding='utf-8') as file:
json.dump(self.datastore, file, indent=2)


if __name__ == "__main__":

transformer = Transformer()
Expand Down

0 comments on commit f354346

Please sign in to comment.