11import sys
2- from typing import Dict , Any
2+ from typing import Dict , Any , Optional
33
44import click
55from django .apps import apps
@@ -32,16 +32,16 @@ def get_task_type(model_str: str) -> TaskType:
3232 raise ValueError (f"Invalid model { model_str } " )
3333
3434
35- def create_task_from_dict (task_dict : Dict [str , Any ], update ) :
36- existing_job = Task .objects .filter (name = task_dict ["name" ]).first ()
35+ def create_task_from_dict (task_dict : Dict [str , Any ], update : bool ) -> Optional [ Task ] :
36+ existing_task = Task .objects .filter (name = task_dict ["name" ]).first ()
3737 task_type = get_task_type (task_dict ["model" ])
38- if existing_job :
38+ if existing_task :
3939 if update :
40- click .echo (f'Found existing job "{ existing_job } , removing it to be reinserted"' )
41- existing_job .delete ()
40+ click .echo (f'Found existing job "{ existing_task } , removing it to be reinserted"' )
41+ existing_task .delete ()
4242 else :
43- click .echo (f'Found existing job "{ existing_job } ", skipping' )
44- return
43+ click .echo (f'Found existing job "{ existing_task } ", skipping' )
44+ return None
4545 kwargs = dict (task_dict )
4646 kwargs ["task_type" ] = task_type
4747 del kwargs ["model" ]
@@ -52,27 +52,28 @@ def create_task_from_dict(task_dict: Dict[str, Any], update):
5252 if not settings .USE_TZ and not timezone .is_naive (target ):
5353 target = timezone .make_naive (target )
5454 kwargs ["scheduled_time" ] = target
55- model_fields = filter (lambda field :hasattr (field ,'attname' ),Task ._meta .get_fields ())
55+ model_fields = filter (lambda field : hasattr (field , 'attname' ), Task ._meta .get_fields ())
5656 model_fields = set (map (lambda field : field .attname , model_fields ))
5757 keys_to_ignore = list (filter (lambda _k : _k not in model_fields , kwargs .keys ()))
5858 for k in keys_to_ignore :
5959 del kwargs [k ]
60- scheduled_job = Task .objects .create (** kwargs )
61- click .echo (f"Created job { scheduled_job } " )
62- content_type = ContentType .objects .get_for_model (scheduled_job )
60+ task = Task .objects .create (** kwargs )
61+ click .echo (f"Created task { task } " )
62+ content_type = ContentType .objects .get_for_model (task )
6363
6464 for arg in task_dict ["callable_args" ]:
6565 TaskArg .objects .create (
6666 content_type = content_type ,
67- object_id = scheduled_job .id ,
67+ object_id = task .id ,
6868 ** arg ,
6969 )
7070 for arg in task_dict ["callable_kwargs" ]:
7171 TaskKwarg .objects .create (
7272 content_type = content_type ,
73- object_id = scheduled_job .id ,
73+ object_id = task .id ,
7474 ** arg ,
7575 )
76+ return task
7677
7778
7879class Command (BaseCommand ):
0 commit comments