@@ -152,6 +152,7 @@ def deletePackage(self, id):
152
152
153
153
p = self .getPackage (id )
154
154
oldorder = p .order
155
+ queue = p .queue
155
156
156
157
if not p :
157
158
if id in self .packageCache : del self .packageCache [id ]
@@ -175,7 +176,11 @@ def deletePackage(self, id):
175
176
176
177
packs = self .packageCache .values ()
177
178
for pack in packs :
179
+ < << << << mine
180
+ if pack .queue == queue and pack .order > oldorder :
181
+ == == == =
178
182
if pack .queue == p .queue and p .order < oldorder :
183
+ > >> >> >> theirs
179
184
pack .order -= 1
180
185
pack .notifyChange ()
181
186
@@ -193,6 +198,7 @@ def deleteLink(self, id):
193
198
e = RemoveEvent ("file" , id , "collector" if not f .package ().queue else "queue" )
194
199
195
200
oldorder = f .order
201
+ package = f .package
196
202
197
203
if id in self .core .threadManager .processingIds ():
198
204
self .cache [id ].abortDownload ()
@@ -210,7 +216,7 @@ def deleteLink(self, id):
210
216
211
217
pyfiles = self .cache .values ()
212
218
for pyfile in pyfiles :
213
- if pyfile .packageid == f [ " package" ] and pyfile .order > oldorder :
219
+ if pyfile .packageid == package and pyfile .order > oldorder :
214
220
pyfile .order -= 1
215
221
pyfile .notifyChange ()
216
222
@@ -574,6 +580,11 @@ def restartFailed(self):
574
580
""" restart all failed links """
575
581
self .db .restartFailed ()
576
582
583
+ @lock
584
+ @change
585
+ def fixPackageOrder (self , queue = 0 ):
586
+ self .db .fixPackageOrder (queue )
587
+
577
588
class FileMethods ():
578
589
@style .queue
579
590
def filecount (self , queue ):
@@ -882,6 +893,35 @@ def restartFailed(self):
882
893
self .c .execute ("UPDATE links SET status=3,error='' WHERE status IN (8, 9)" )
883
894
884
895
896
+ @style .queue
897
+ def fixPackageOrder (self , queue = 0 ):
898
+ found = 0
899
+ order = 0
900
+ i = 0
901
+ self .c .execute ("SELECT count(*) FROM packages WHERE queue = ?" , (queue , ))
902
+ count = self .c .fetchone ()[0 ]
903
+ if count == 0 :
904
+ return
905
+ while order < count :
906
+ self .c .execute ("SELECT id FROM packages WHERE packageorder = ? AND queue = ?" , (i , queue ))
907
+ all = self .c .fetchall ()
908
+ if len (all ) == 0 :
909
+ i += 1
910
+ elif len (all ) == 1 :
911
+ self .c .execute ("UPDATE packages SET packageorder=? WHERE id = ?" , (order , all [0 ][0 ]))
912
+ order += 1
913
+ i += 1
914
+ elif len (all ) > 1 :
915
+ self .c .execute ("UPDATE packages SET packageorder=? WHERE id = ?" , (order , all [0 ][0 ]))
916
+ order += 1
917
+ i += len (all )
918
+ del all [0 ]
919
+ self .c .execute ("UPDATE packages SET packageorder=packageorder+? WHERE packageorder >= ? AND queue=?" , (len (all ), order , queue ))
920
+ for r in all :
921
+ self .c .execute ("UPDATE packages SET packageorder=? WHERE id = ?" , order , r [0 ])
922
+ order += 1
923
+
924
+
885
925
@style .queue
886
926
def findDuplicates (self , id , folder , filename ):
887
927
""" checks if filename exists with different id and same package """
0 commit comments