ComplexTDL 1.0.4
A complex to do list tool

# ComplexTDL

A Python-based to do list tool that you can use to:

* Sort out your tasks during a certain period of time
* Generating weekly and monthly work report
* Do some simple team task management

## The main features include

* Support basic information such as task title, task status, task time, etc.
* Supports a variety of advanced settings:
  * Support customizing the modules (list)
  * Supporting Tasks that is across many days
  * Support priority customization
  * Supporting subtasks and related logic
  * Support assigning the task to different people
* Convenient operation
  * Keyboard operation without mouse
  * Batch operations
* Support task list export and report generation
  * support filtering task as you wish
  * custom time
  * support many export formats, including markdown list or form, excel etc.
* Based on TinyDB, so no DB software is needed

This project does not provide a graphical interface for the time being. It is recommended to use the following methods:

* Combining efficiency tool like Alfred
* Run with Django
* Direct Use through the command line 
* Make your own graphical interface

## Quick Start

The project provides command-line tools to support direct command-line use.

```shell
# Complete some configuration
tdl_set -h # View related configuration assistance

# Add or edit tasks
tdl_modify -h # View the help related to adding or editing tasks

# View tasks or generate reports
tdl_report -h # View help related to viewing tasks or generating reports
```

## API Description

You can import the libraries and writing your own applications.
You can also see the source files for reference.

### ComplexTDL.Settings Module

Some settings for ComplexTDL.

| Function | Description|
|---|---|
|`ShowJobModules()`|Display the module (list) information|
|`SetTaskNumber(number)`|Set the starting number of the task list|

### ComplexTDL.Task Module

For insert, update, delete tasks.

| Function | Description|
|---|---|
|`DeleteRecord(formData)`|formData is a dictionary; formData['no'] is the task number to be deleted|
|UpdateData(formDataF)|Insert or update a task, formDataF is a dictionary, refer to the analysis of the task structure below|

'''
the structure of task

no Number
mo Module / Group / List
ti Title
de Description and Update
st Start time
en End time or Check time
ra Completion rate, -1 for pause
pa Parent task number
pe person in charge
pr priority
'''

### ComplexTDL.Report Module

Used to generate task lists and reports

| Function | Description|
|---|---|
|Report(period = 'this week', range = 'todo', person = 'me', deadline = False, conditions = None, detail = 'some', sort = 'module')|To generate a specific report, refer to the help information in the source file|
|Search(args)|Custom conditions to filter and query the task, see the source file for help information|
|GenerateMD(taskList, format = 'md list')|Generate md and copy it to the clipboard, the format can be 'md list' (list), 'md list no' (list with task number), 'md table' (table)|
|GenerateExcel(taskList, filePath=os.curdir, fileName='report', showParent=False)|Generates excel tables, filePath for the store path, fileName for the fileName, and use showParent to determine whether to display the parent task number|