@@ -46,7 +46,34 @@ class TaskAdmin(admin.ModelAdmin):
4646 'started' , 'finished' ]
4747 list_display_links = ['pk' , 'created' , 'process' ]
4848 list_filter = ['status' ]
49- readonly_fields = ['process' , 'flow_task' , 'started' , 'finished' , 'previous' , 'token' ]
49+ readonly_fields = ['process' , 'status' , 'flow_task' , 'started' , 'finished' , 'previous' , 'token' ]
50+
51+ @property
52+ def change_form_template (self ):
53+ opts = self .model ._meta
54+
55+ return [
56+ "admin/%s/%s/change_form.html" % (opts .app_label , opts .model_name ),
57+ "admin/%s/change_form.html" % opts .app_label ,
58+ 'admin/viewflow/task/change_form.html'
59+ ]
60+
61+ def save_model (self , request , obj , form , change ):
62+ result = super (TaskAdmin , self ).save_model (request , obj , form , change )
63+
64+ status_action = next ((action [len ('_change_status_' ):]
65+ for action in request .POST .keys ()
66+ if action .startswith ('_change_status_' )), None )
67+ if status_action :
68+ activation = obj .activate ()
69+ activation_cls = activation .__class__
70+ transition = next ((transition for transition in activation_cls .status .get_available_transtions (activation )
71+ if transition .name == status_action ), None )
72+ if transition :
73+ transition (activation )
74+ request .POST ['_continue' ] = True
75+
76+ return result
5077
5178
5279admin .site .register (Process , ProcessAdmin )
0 commit comments