26
26
class NoDashDiGraph (gv .Digraph ):
27
27
"""Like `.graphviz.Digraph` but removes underscores from labels."""
28
28
29
+ def __init__ (self , * args , ** kwargs ):
30
+ self ._edges = []
31
+ super ().__init__ (* args , ** kwargs )
32
+
33
+ def edge (self , tail_name , head_name , label = None , _attributes = None , ** attrs ):
34
+ if not (tail_name , head_name ) in self ._edges :
35
+ self ._edges .append ((tail_name , head_name ))
36
+ super ().edge (tail_name , head_name , label = label , _attributes = _attributes , ** attrs )
37
+
29
38
@staticmethod
30
39
def _quote (identifier , * args , ** kwargs ):
40
+ """Remove underscores from labels."""
31
41
identifier = identifier .replace ('_' , ' ' )
32
42
return gv .lang .quote (identifier , * args , ** kwargs )
33
43
34
44
@staticmethod
35
45
def _quote_edge (identifier ):
46
+ """Remove underscores from labels."""
36
47
identifier = identifier .replace ('_' , ' ' )
37
48
return gv .lang .quote_edge (identifier )
38
49
@@ -219,18 +230,19 @@ def get_graph_svg(cls):
219
230
220
231
def get_instance_graph (self ):
221
232
"""Return process instance graph."""
222
- graph = self .get_graph (color = '#666666' )
233
+ graph = self .get_graph (color = '#888888' )
234
+
235
+ node_names = dict (self .get_nodes ()).keys ()
223
236
224
- for task in self .task_set .exclude (node_name = 'manual_override' ):
225
- node = task .node
237
+ for task in self .task_set .filter (node_name__in = node_names ):
226
238
href = task .get_absolute_url ()
227
239
style = 'filled'
228
240
229
- if node .node_type == tasks .HUMAN :
241
+ if task .node_type == tasks .HUMAN :
230
242
style += ', rounded'
231
243
if not task .completed :
232
244
style += ', bold'
233
- graph .node (node .node_name , href = href , style = style , color = 'black' , fontcolor = 'black' )
245
+ graph .node (task .node_name , href = href , style = style , color = 'black' , fontcolor = 'black' )
234
246
235
247
for task in self .task_set .filter (node_name = 'manual_override' ).prefetch_related (
236
248
'parent_task_set' , 'child_task_set'
@@ -242,6 +254,18 @@ def get_instance_graph(self):
242
254
for child in task .child_task_set .all ():
243
255
graph .edge ('manual_override_%s' % task .pk , child .node_name , style = 'dashed' )
244
256
257
+ for task in self .task_set .exclude (node_name__in = node_names ).exclude (node_name = 'manual_override' ):
258
+ style = 'filled, dashed'
259
+ if task .node_type == tasks .HUMAN :
260
+ style += ', rounded'
261
+ if not task .completed :
262
+ style += ', bold'
263
+ graph .node (task .node_name , style = style , color = 'black' , fontcolor = 'black' )
264
+ for parent in task .parent_task_set .all ():
265
+ graph .edge (parent .node_name , task .node_name , style = 'dashed' )
266
+ for child in task .child_task_set .all ():
267
+ graph .edge (task .node_name , child .node_name , style = 'dashed' )
268
+
245
269
return graph
246
270
247
271
def get_instance_graph_svg (self , output_format = 'svg' ):
@@ -499,7 +523,6 @@ def enqueue(self, countdown=None, eta=None):
499
523
'exception' ,
500
524
'stacktrace' ,
501
525
])
502
- print (self .status )
503
526
transaction .on_commit (lambda : celery .task_wrapper .apply_async (
504
527
args = (self .pk , self ._process_id ),
505
528
countdown = countdown ,
0 commit comments