Browse Source

Component.new_rank() correction

test si new_rank - 1 existe pour signe '='
Driky 9 years ago
parent
commit
350d15cba9
1 changed files with 35 additions and 27 deletions
  1. 35
    27
      EditorialModel/components.py

+ 35
- 27
EditorialModel/components.py View File

@@ -165,11 +165,12 @@ class EmComponent(object):
165 165
                 component = sql.Table(self.table, sqlutils.meta(dbe))
166 166
                 req = sql.sql.select([component.c.uid, component.c.rank])
167 167
                 if(sign == '='):
168
-                    req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank == new_rank - 1))
168
+                    req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and component.c.rank == new_rank - 1)
169 169
                     c = dbe.connect()
170 170
                     res = c.execute(req)
171 171
                     res = res.fetchone()
172
-                    if(res):
172
+                    c.close()
173
+                    if(res != None):
173 174
                         if(new_rank < self.rank):
174 175
                             req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank >= new_rank))
175 176
                         else:
@@ -199,42 +200,49 @@ class EmComponent(object):
199 200
                         logger.error("Bad argument")
200 201
                         raise ValueError('new_rank to big, new_rank - 1 doesn\'t exist. new_rank = '+str((new_rank)))
201 202
                 elif(sign == '+'):
202
-                    req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank <= self.rank + new_rank and component.c.rank > self.rank))
203
-
204
-                    c = dbe.connect()
205
-                    res = c.execute(req)
206
-                    res = res.fetchall()
203
+                    if(new_rank != 0):
204
+                        req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank <= self.rank + new_rank and component.c.rank > self.rank))
207 205
 
208
-                    vals = list()
209
-                    vals.append({'id' : self.id, 'rank' : self.rank + new_rank})
206
+                        c = dbe.connect()
207
+                        res = c.execute(req)
208
+                        res = res.fetchall()
210 209
 
211
-                    for row in res:
212
-                        vals.append({'id' : row.uid, 'rank' : row.rank - 1})
210
+                        vals = list()
211
+                        vals.append({'id' : self.id, 'rank' : self.rank + new_rank})
213 212
 
214
-                    req = component.update().where(component.c.uid == sql.bindparam('id')).values(rank = sql.bindparam('rank'))
215
-                    c.execute(req, vals)
216
-                    c.close()
213
+                        for row in res:
214
+                            vals.append({'id' : row.uid, 'rank' : row.rank - 1})
217 215
 
218
-                    self.rank += new_rank
216
+                        req = component.update().where(component.c.uid == sql.bindparam('id')).values(rank = sql.bindparam('rank'))
217
+                        c.execute(req, vals)
218
+                        c.close()
219 219
 
220
+                        self.rank += new_rank
221
+                    else:
222
+                        logger.error("Bad argument")
223
+                        raise ValueError('Excepted a positive int not a null. new_rank = '+str((new_rank)))
220 224
                 elif(sign == '-'):
221
-                    req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank >= self.rank - new_rank and component.c.rank < self.rank))
225
+                    if(new_rank != 0):
226
+                        req = req.where(getattr(component.c, self.ranked_in) == self.ranked_in and (component.c.rank >= self.rank - new_rank and component.c.rank < self.rank))
222 227
 
223
-                    c = dbe.connect()
224
-                    res = c.execute(req)
225
-                    res = res.fetchall()
228
+                        c = dbe.connect()
229
+                        res = c.execute(req)
230
+                        res = res.fetchall()
226 231
 
227
-                    vals = list()
228
-                    vals.append({'id' : self.id, 'rank' : self.rank - new_rank})
232
+                        vals = list()
233
+                        vals.append({'id' : self.id, 'rank' : self.rank - new_rank})
229 234
 
230
-                    for row in res:
231
-                        vals.append({'id' : row.uid, 'rank' : row.rank + 1})
235
+                        for row in res:
236
+                            vals.append({'id' : row.uid, 'rank' : row.rank + 1})
232 237
 
233
-                    req = component.update().where(component.c.uid == sql.bindparam('id')).values(rank = sql.bindparam('rank'))
234
-                    c.execute(req, vals)
235
-                    c.close()
238
+                        req = component.update().where(component.c.uid == sql.bindparam('id')).values(rank = sql.bindparam('rank'))
239
+                        c.execute(req, vals)
240
+                        c.close()
236 241
 
237
-                    self.rank -= new_rank
242
+                        self.rank -= new_rank
243
+                    else:
244
+                        logger.error("Bad argument")
245
+                        raise ValueError('Excepted a positive int not a null. new_rank = '+str((new_rank)))
238 246
                 else:
239 247
                     logger.error("Bad argument")
240 248
                     raise TypeError('Excepted a string (\'=\' or \'+\' or \'-\') not a '+str(type(new_rank)))

Loading…
Cancel
Save