Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Python by Rab ( 4 years ago )
from uuid import uuid4
from datetime import date
class TrainingItem:
"""Class representing exercise in the training plan."""
def __init__(self, name: str, body_part: str, reps: int, sets: int):
self.id = uuid4()
self.name = name
self.body_part = body_part
self.reps_goal = reps
self.reps_done = 0
self.sets_goal = sets
self.sets_done = 0
def update_reps_done(self, reps: int):
self.reps_done = reps
def get_data(self):
return self.__dict__
class TrainingPlan:
"""Class representing a training plan."""
def __init__(self):
self.plan = []
def get_data(self):
return {"plan": [item.get_data() for item in self.plan]}
def add_training_items(self, training_items):
for item in training_items:
self.plan.append(item)
def add_training_data(self, training_data):
for training_item in self.plan:
training_item.reps_done = training_data[training_item.id]["reps_done"]
training_item.sets_done = training_data[training_item.id]["sets_done"]
class Training:
"""Class representing the completed workout"""
def __init__(self):
self.training = None
self.date = None
def get_data(self):
return {"training": [item.get_data() for item in self.training.plan], "date": self.date}
def create_training(self, training_plan, training_data, training_date):
self.training = training_plan
self.training.add_training_data(training_data)
self.date = training_date
def get_stats(self):
kilograms_goal = sum(item.reps_goal * item.sets_goal for item in self.training.plan)
kilograms_used = sum(item.reps_done * item.sets_done for item in self.training.plan)
return {"goal": kilograms_goal, "used": kilograms_used}
if __name__ == "__main__":
# Define exercises
item_1 = TrainingItem(name="PUSH UPS", body_part="CHEST", reps=10, sets=3)
item_2 = TrainingItem(name="SQUADS", body_part="LEGS", reps=20, sets=2)
# Create training plan
training_plan = TrainingPlan()
training_plan.add_training_items([item_1, item_2])
# Add actual training data
training_data = {
item_1.id: {"reps_done": 12, "sets_done": 3},
item_2.id: {"reps_done": 15, "sets_done": 3},
}
training = Training()
training.create_training(
training_plan=training_plan,
training_data=training_data,
training_date=str(date.today())
)
print(training.get_data())
# Generate stats
print(training.get_stats())
Revise this Paste