taskai-cli 1.1.1__tar.gz → 1.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/PKG-INFO +1 -1
  2. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/pyproject.toml +1 -1
  3. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/cli.py +28 -1
  4. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/models.py +1 -0
  5. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/.github/workflows/publish-to-pypi.yml +0 -0
  6. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/.gitignore +0 -0
  7. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/DEVLOG.md +0 -0
  8. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/README.md +0 -0
  9. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/docs/index.md +0 -0
  10. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/migrations/_001_removing_lists.py +0 -0
  11. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/migrations/convert_title_to_name.py +0 -0
  12. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/mkdocs.yml +0 -0
  13. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/config.py +0 -0
  14. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/help_menu.py +0 -0
  15. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/json_dir_database.py +0 -0
  16. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/services/ai.py +0 -0
  17. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/services/pomodoro.py +0 -0
  18. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/services/repair_database.py +0 -0
  19. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/services/user_setup.py +0 -0
  20. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/taskai/views.py +0 -0
  21. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/test/test_cli.py +0 -0
  22. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/test/test_execution.py +0 -0
  23. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/test/test_json_dir_database.py +0 -0
  24. {taskai_cli-1.1.1 → taskai_cli-1.1.3}/test/test_view.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskai-cli
3
- Version: 1.1.1
3
+ Version: 1.1.3
4
4
  Author-email: Alex Paskal <alexcpaskal@gmail.com>
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: google-genai>=2.8
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "taskai-cli"
3
- version = "1.1.1"
3
+ version = "1.1.3"
4
4
  description = ""
5
5
  authors = [{name = "Alex Paskal", email = "alexcpaskal@gmail.com"}]
6
6
  readme = "README.md"
@@ -208,6 +208,30 @@ class Controller:
208
208
  db.update_item(src_id, dependency_ids=dependency_ids)
209
209
  db.commit()
210
210
 
211
+ def reorder(id1: int, id2: int, position: str):
212
+ if position not in ("before", "after"):
213
+ Controller.throw_error("position must be one of before, after")
214
+
215
+ child1 = db.get_item(id1)
216
+ parent = db.get_item(child1.parent_id)
217
+ if parent is None:
218
+ Controller.throw_error("Cannot reorder root items")
219
+
220
+
221
+ new_child_ids = []
222
+ for child_id in parent.child_ids:
223
+ if child_id == id1:
224
+ continue
225
+ if child_id == id2:
226
+ new_child_ids.extend(
227
+ [id1, id2] if position == "before" else [id2, id1]
228
+ )
229
+ continue
230
+ new_child_ids.append(child_id)
231
+ db.update_item(parent.id, child_ids=new_child_ids)
232
+ db.commit()
233
+
234
+
211
235
  # utilities
212
236
  def _parse_arg_string(arg_string: str) -> list[str]:
213
237
  """parses a string properly before dispatching it to the argument parser"""
@@ -309,7 +333,10 @@ def execute_commands(*args, **kwargs) -> int:
309
333
 
310
334
  case "update":
311
335
  Controller.update_item(args[1], **kwargs)
312
-
336
+
337
+ case "reorder":
338
+ Controller.reorder(int(args[1]), int(args[3]), args[2])
339
+
313
340
  case "delete" | "remove":
314
341
  match args[1]:
315
342
  case _ if _is_int(args[1]): Controller.delete_item(args[1])
@@ -44,6 +44,7 @@ class TodoItem(Base):
44
44
  recurs_every: Optional[list[timedelta]] = None
45
45
  recurs_until: Optional[datetime] = None
46
46
  recur_keep_incomplete: bool = False
47
+ status: str|bool = None
47
48
 
48
49
 
49
50
  class Comment(Base):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes