@@ -47,6 +47,8 @@ class Task(db.Model):
4747 ) # task due date
4848 priority = db .Column (db .Integer , default = 1 ,
4949 nullable = False ) # task priority
50+ difficulty = db .Column (db .Integer , default = 1 ,
51+ nullable = False ) # task difficulty
5052 completed = db .Column (
5153 db .Boolean , default = False , nullable = False
5254 ) # is task completed
@@ -120,12 +122,14 @@ def add_task(): # add task to task list
120122 name = request .form .get ("name" ) # get name from request form
121123 due_date = request .form .get ("due_date" ) # get due date
122124 priority = int (request .form .get ("priority" )) # get priority
125+ difficulty = int (request .form .get ("difficulty" )) # get difficulty
123126 user = User .query .first () # get first user
124127 if user :
125128 new_task = Task (
126129 name = name ,
127130 user_id = user .id ,
128131 priority = priority ,
132+ difficulty = difficulty ,
129133 due_date = datetime .strptime (due_date , "%Y-%m-%d" ),
130134 )
131135 db .session .add (new_task ) # add new task to task list
@@ -140,7 +144,7 @@ def complete_task(task_id): # complete task from task id
140144 task .completed = True # complete the task
141145 user = User .query .first () # get first user
142146 if user :
143- user .add_xp (round (task .priority )) # add XP
147+ user .add_xp (round (task .priority * task . difficulty )) # add XP
144148 db .session .commit () # commit database changes
145149 return redirect (url_for ("index" )) # redirect to index page template
146150
@@ -156,14 +160,22 @@ def init_db(): # initialize database
156160 column ["name" ] for column in db .inspect (db .engine ).get_columns ("task" )
157161 ]: # check if due date column is not in task table
158162 db .session .execute (
159- text ("ALTER TABLE task ADD COLUMN due_date DATE NOT NULL" )
163+ text (
164+ "ALTER TABLE task ADD COLUMN due_date DATE NOT NULL DEFAULT CURRENT_TIMESTAMP"
165+ )
160166 ) # create due date column
161167 if "priority" not in [
162168 column ["name" ] for column in db .inspect (db .engine ).get_columns ("task" )
163169 ]: # check if priority column is not in task table
164170 db .session .execute (
165- text ("ALTER TABLE task ADD COLUMN priority INT NOT NULL" )
171+ text ("ALTER TABLE task ADD COLUMN priority INT NOT NULL DEFAULT 1 " )
166172 ) # create priority column
173+ if "difficulty" not in [
174+ column ["name" ] for column in db .inspect (db .engine ).get_columns ("task" )
175+ ]: # check if difficulty column is not in task table
176+ db .session .execute (
177+ text ("ALTER TABLE task ADD COLUMN difficulty INT NOT NULL DEFAULT 1" )
178+ ) # create difficulty column
167179 tasks = Task .query .all () # get list of tasks
168180 for task in tasks : # repeat for each task
169181 if task .due_date is None : # check if task due date is none
@@ -172,6 +184,8 @@ def init_db(): # initialize database
172184 ) # set task due date to today's date
173185 if task .priority is None : # check if task priority is none
174186 task .priority = 1 # set task priority to low
187+ if task .difficulty is None : # check if task difficulty is none
188+ task .difficulty = 1 # set task difficulty to low
175189 db .session .commit () # commit database changes
176190
177191
0 commit comments