return f'{self.name} (Vision {self.id})'
+class PreferGoal(SQLModel, table=True):
+ goal_id: int | None = Field(default=None, foreign_key="goal.id", primary_key=True)
+
+
class Goal(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
name: str = Field(default=None, unique=True)
return 'Success'
+ def _set_pref_goal_id(self, goal_id):
+ with Session(self.engine) as session:
+ prefs = session.exec(select(PreferGoal)).all()
+ for pref in prefs:
+ session.delete(pref)
+ pref = PreferGoal()
+ pref.goal_id = goal_id
+ session.add(pref)
+ session.commit()
+
+ def _get_pref_goal_id(self):
+ with Session(self.engine) as session:
+ pref = session.exec(select(PreferGoal)).one()
+ return pref.goal_id
+
+
+
def get_all_visions(self):
with Session(self.engine) as session:
cmd = select(Vision).where(Vision.complete_date == None)
return session.exec(cmd).all()
- def get_goal(self, id):
+ def get_goal(self, goal_id):
+ self._set_pref_goal_id(goal_id)
with Session(self.engine) as session:
- cmd = select(Goal).where(Goal.id == id)
+ cmd = select(Goal).where(Goal.id == goal_id)
goal = session.exec(cmd).first()
return (goal, goal.tasks)
session.commit()
- def complete_goal(self, id):
+ def complete_goal(self, goal_id):
+ self._set_pref_goal_id(goal_id)
vision_id = -1
with Session(self.engine) as session:
- cmd = select(Goal).where(Goal.id == id)
+ cmd = select(Goal).where(Goal.id == goal_id)
goal = session.exec(cmd).first()
goal.complete_date = dt.today()
vision_id = goal.vision_id
return vision_id
def rename_goal(self, goal_id, name):
+ self._set_pref_goal_id(goal_id)
vision_id = -1
with Session(self.engine) as session:
cmd = select(Goal).where(Goal.id == goal_id)
task.complete_date = dt.today()
goal_id = task.goal_id
session.commit()
+ self._set_pref_goal_id(goal_id)
return goal_id
def add_with_name(self, cls, name):
return self.add_with_name(Vision, name)
def add_goal(self, name):
- return self.add_with_name(Goal, name)
+ goal_id = self.add_with_name(Goal, name)
+ self._set_pref_goal_id(goal_id)
+ return goal_id
+
+ def quick_add_task(self, name):
+ goal_id = self._get_pref_goal_id()
+ return self.add_task(goal_id, name)
def add_task(self, goal_id, name):
+ self._set_pref_goal_id(goal_id)
result = self.add_with_name(Task, name)
with Session(self.engine) as session:
cmd = select(Task).where(Task.name == name)
def assign_vision(self, goal_id, vision_id):
'''Goals may move between visions'''
+ self._set_pref_goal_id(goal_id)
with Session(self.engine) as session:
cmd = select(Goal).where(Goal.id == goal_id)
goal = session.exec(cmd).first()