Welcome, guest! Login / Register - Why register?
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

Your Name: Code Language: