@@ -29,6 +29,48 @@ class Exposed(object):
2929 simple_counter = 0
3030 cache = CacheDbQueries ()
3131
32+ def skipPathSequence (self , counter , items , level ):
33+ while (counter < len (items ) and items [counter ].lvl >= level ):
34+ counter = counter + 1
35+ return counter
36+
37+ def getPathSequenceChildren (self , counter , written_sequences , items , elements_dict , level , built_sequences ):
38+ children = []
39+ while (counter < len (items ) and items [counter ].lvl == level ):
40+ elem = elements_dict [items [counter ].id_pae ]
41+ item = Pathitem (items [counter ].id_pae , elem .name , items [counter ].id_pathid , elem .paetype , items [counter ].id_parent , items [counter ].lvl , items [counter ].order , items [counter ].operator )
42+
43+ # item.gid = seqsMap.put(idgen,elem,items[counter].id_pathid,items[counter].order,items[counter].lvl,items[counter].id)
44+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl)
45+ if elem .paetype == 1 :
46+ # item.gid = modsMap.put(elem, items[counter].id_pathid, items[counter].order, items[counter].lvl)
47+ item .gid = cache .patMappingDictPut (src , items [counter ].id_pae , "mod" , cache_session , log , 0 )
48+ elif elem .paetype == 2 :
49+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl)
50+ item .gid = cache .patMappingDictPut (src , items [counter ].id_pae , "seq" , cache_session , log , 0 )
51+
52+ self .simple_counter = self .simple_counter + 1
53+ counter = counter + 1
54+ if item .paetype == 2 :
55+ if item .name in written_sequences :
56+ item .expanded = False
57+ counter , new_children , written_sequences , built_sequences = self .getPathSequenceChildren (counter , written_sequences , items , elements_dict , item .lvl + 1 , built_sequences )
58+ for child in new_children :
59+ item .children .append (child )
60+
61+ else :
62+ item .expanded = False
63+ counter , new_children , written_sequences , built_sequences = self .getPathSequenceChildren (counter , written_sequences , items , elements_dict , item .lvl + 1 , built_sequences )
64+ for child in new_children :
65+ item .children .append (child )
66+
67+ written_sequences .add (item .name )
68+ built_sequences .add (item )
69+
70+ children .append (item )
71+
72+ return counter , children , written_sequences , built_sequences
73+
3274 #Returns the path items (Sequences and Modules)
3375 #@params: patsMap: map of paths database ids
3476 # seqsMap: map of sequences database ids
@@ -85,55 +127,58 @@ def getPathItems(self, gid=-2, ver=-2, db = None, log = None, src = 0, request =
85127 idpaes = {}
86128
87129 #Build all the sequences
88- for p in items :
89- elem = elements_dict [p .id_pae ]
90- item = Pathitem (p .id_pae , elem .name , p .id_pathid , elem .paetype , p .id_parent , p .lvl , p .order , p .operator )
91-
92- if (item .paetype == 2 ):
93- # item.gid = seqsMap.put(elem, p.id_pathid, p.order, p.lvl)
94- item .gid = cache .patMappingDictPut (src , p .id_pae , "seq" , cache_session , log , 0 )
95- item .expanded = False
96- seq [item .gid ]= item
97- idpaes [item .gid ]= p .id_pae
98- if (item .lvl == 0 ):
99- iid = item .id
100- lvlZeroSeq_Dict [item .gid ] = iid
101-
102- # It is a module
103- else :
104- # item.gid = modsMap.put(elem, p.id_pathid, p.order, p.lvl)
105- item .gid = cache .patMappingDictPut (src , p .id_pae , "mod" , cache_session , log , 0 )
106- id_par = item .id_parent
107- # idPae_values = idpaes.viewvalues()
108- idPae_values = idpaes .values ()
109- lKeys = []
110- for key , value in idpaes .iteritems ():
111- if value == id_par :
112- lKeys .append (key )
113-
114- # lKey = [key for key, value in idpaes.iteritems() if value == id_par][0]
115-
116- for lKey in lKeys :
117- childs = seq [lKey ].children
118- isIn = False
119- for c in childs :
120- if c .id == item .id :
121- isIn = True
122- if not isIn :
123- seq [lKey ].children .insert (p .order , item )
124- # seq[p.id_parent].children.insert(p.order, item)
125-
126- # seqs = seq.viewvalues()
127- seqs = seq .values ()
128- for s in seqs :
129- if (s .lvl != 0 ):
130- id_par = s .id_parent
131-
132- lKey = [key for key , value in idpaes .iteritems () if value == id_par ][0 ]
133-
134- childs = seq [lKey ].children
135- childs .insert (s .order , s )
136- childs .sort (key = lambda x : x .order , reverse = False )
130+ # #
131+ # ----------------------------------------------------------------------------------------------------------------- #
132+ # New Routine for sequences
133+ #
134+
135+ elements_dict = dict ((element .id , element ) for element in elements )
136+
137+ counter = 0
138+ idgen_new = 1
139+
140+ while counter < len (items ):
141+ elem = elements_dict [items [counter ].id_pae ]
142+ item = Pathitem (items [counter ].id_pae , elem .name , items [counter ].id_pathid , elem .paetype , items [counter ].id_parent , items [counter ].lvl , items [counter ].order , items [counter ].operator )
143+ # item.gid = seqsMap.put(idgen,elem,items[counter].id_pathid,items[counter].order,items[counter].lvl,items[counter].id)
144+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl)
145+
146+ if elem .paetype == 1 :
147+ # item.gid = modsMap.put(elem, items[counter].id_pathid, items[counter].order, items[counter].lvl)
148+ item .gid = cache .patMappingDictPut (src , items [counter ].id_pae , "mod" , cache_session , log , 0 )
149+ elif elem .paetype == 2 :
150+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl)
151+ item .gid = cache .patMappingDictPut (src , items [counter ].id_pae , "seq" , cache_session , log , 0 )
152+
153+ self .simple_counter = self .simple_counter + 1
154+ counter = counter + 1
155+
156+ if item .paetype == 2 :
157+
158+ if item .lvl == 0 :
159+ lvlZeroSeq_Dict [item .gid ] = item .id
160+
161+ if item .name in written_sequences :
162+ counter = self .skipPathSequence (counter , items , item .lvl + 1 )
163+ else :
164+ counter , new_children , written_sequences , built_sequences = self .getPathSequenceChildren (counter , written_sequences , items , elements_dict , item .lvl + 1 , built_sequences )
165+ for child in new_children :
166+
167+ item .children .append (child )
168+
169+ written_sequences .add (item .name )
170+ item .expanded = False
171+ built_sequences .add (item )
172+
173+
174+
175+
176+ # #
177+ # ----------------------------------------------------------------------------------------------------------------- #
178+ #
179+
180+ seq = dict ((x .gid , x ) for x in built_sequences )
181+
137182
138183 #Retreive the lvl 0 of the path
139184 lista = queries .getLevelZeroPathItems (id_p , ver , db , log )
@@ -217,55 +262,55 @@ def getEndPathItems(self, gid=-2, ver=-2, db = None, log = None, request = None,
217262 lvlZeroSeq_Dict = {}
218263 idpaes = {}
219264
220- #Build all the sequences
221- for p in items :
222- elem = elements_dict [ p . id_pae ]
223- item = Pathitem ( p . id_pae , elem . name , p . id_pathid , elem . paetype , p . id_parent , p . lvl , p . order , p . operator )
224-
225- if ( item . paetype == 2 ):
226- # item.gid = seqsMap.put(elem, p.id_pathid, p.order, p.lvl)
227- item . gid = cache . patMappingDictPut ( src , p . id_pae , "seq" , cache_session , log , 0 )
228- item . expanded = False
229- seq [ item . gid ] = item
230- idpaes [ item . gid ] = p . id_pae
231- if ( item . lvl == 0 ):
232- iid = item . id
233- lvlZeroSeq_Dict [ item .gid ] = iid
234-
235- # It is a module
236- else :
237- # item.gid = modsMap.put(elem, p .id_pathid, p .order, p .lvl)
238- item .gid = cache .patMappingDictPut (src , p .id_pae , "mod" , cache_session , log ,0 )
239- id_par = item . id_parent
240- # idPae_values = idpaes.viewvalues( )
241- idPae_values = idpaes . values ( )
242- lKeys = []
243- for key , value in idpaes . iteritems ():
244- if value == id_par :
245- lKeys . append ( key )
246-
247- # lKey = [key for key, value in idpaes.iteritems() if value == id_par][0]
248-
249- for lKey in lKeys :
250- childs = seq [ lKey ]. children
251- isIn = False
252- for c in childs :
253- if c . id == item . id :
254- isIn = True
255- if not isIn :
256- seq [ lKey ]. children . insert ( p . order , item )
257- # seq[p.id_parent]. children.insert(p.order, item )
258-
259- seqs = seq . values () #view
260- for s in seqs :
261- if ( s . lvl != 0 ):
262- id_par = s . id_parent
263-
264- lKey = [ key for key , value in idpaes . iteritems () if value == id_par ][ 0 ]
265-
266- childs = seq [ lKey ]. children
267- childs . insert ( s . order , s )
268- childs . sort ( key = lambda x : x . order , reverse = False )
265+ # #
266+ # ----------------------------------------------------------------------------------------------------------------- #
267+ # New Routine for sequences
268+ #
269+
270+ elements_dict = dict (( element . id , element ) for element in elements )
271+
272+ counter = 0
273+ idgen_new = 1
274+
275+ while counter < len ( items ):
276+ elem = elements_dict [ items [ counter ]. id_pae ]
277+ item = Pathitem ( items [ counter ]. id_pae , elem . name , items [ counter ]. id_pathid , elem . paetype , items [ counter ]. id_parent , items [ counter ]. lvl , items [ counter ]. order , items [ counter ]. operator )
278+ # item.gid = seqsMap.put(idgen,elem,items[counter].id_pathid,items[counter].order,items[counter].lvl,items[counter].id)
279+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl)
280+
281+ if elem . paetype == 1 :
282+ # item.gid = modsMap.put(elem, items[counter] .id_pathid, items[counter] .order, items[counter] .lvl)
283+ item .gid = cache .patMappingDictPut (src , items [ counter ] .id_pae , "mod" , cache_session , log , 0 )
284+ elif elem . paetype == 2 :
285+ # item.gid = seqsMap.put(elem,items[counter].id_pathid,items[counter].order,items[counter].lvl )
286+ item . gid = cache . patMappingDictPut ( src , items [ counter ]. id_pae , "seq" , cache_session , log , 0 )
287+
288+ self . simple_counter = self . simple_counter + 1
289+ counter = counter + 1
290+
291+ if item . paetype == 2 :
292+
293+ if item . lvl == 0 :
294+ lvlZeroSeq_Dict [ item . gid ] = item . id
295+
296+ if item . name in written_sequences :
297+ counter = self . skipPathSequence ( counter , items , item . lvl + 1 )
298+ else :
299+ counter , new_children , written_sequences , built_sequences = self . getPathSequenceChildren ( counter , written_sequences , items , elements_dict , item . lvl + 1 , built_sequences )
300+ for child in new_children :
301+
302+ item . children .append ( child )
303+
304+ written_sequences . add ( item . name )
305+ item . expanded = False
306+ built_sequences . add ( item )
307+
308+
309+ # #
310+ # ----------------------------------------------------------------------------------------------------------------- #
311+ #
312+
313+ seq = dict (( x . gid , x ) for x in built_sequences )
269314
270315 #Retreive the lvl 0 of the path
271316 lista = queries .getLevelZeroPathItems (id_p , ver , db , log )
0 commit comments