def ResetNrOfLaps(self): query = \ " UPDATE times" +\ " SET lap1 = Null, lap2 = Null, lap3 = Null, lap4 = Null" res = db.query(query) db.commit() return res
def ResetCalculatedValuesForUser(self, user_id): query = \ " UPDATE times" +\ " SET time1 = Null, lap1 = Null, time2 = Null, lap2 = Null, time3 = Null, lap3 = Null, time4 = Null, lap4 = Null" +\ " WHERE (times.user_id = \""+str(user_id)+"\")" res = db.query(query) db.commit() return res
def sCivilsToZeroes(self): if (uiAccesories.showMessage("Civils to zeroes", "Are you sure you want to set civils numbers to zeroes?", MSGTYPE.warning_dialog) != True): return print "A: Times: Civils to zeroes.. " query = \ " UPDATE times" +\ " SET user_id=0, time1 = Null, lap1 = Null, time2 = Null, lap2 = Null, time3 = Null, lap3 = Null, time4 = Null, lap4 = Null" +\ " WHERE (times.user_id > 100000)" res = db.query(query) db.commit() eventCalcNow.set() print "A: Times: Civils to zeroes.. press F5 to finish" return res
def sRecalculate(self): if (uiAccesories.showMessage("Recalculate", "Are you sure you want to recalculate times and laptimes?", MSGTYPE.warning_dialog) != True): return query = \ " UPDATE times" +\ " SET time1 = Null, lap1 = Null, time2 = Null, lap2 = Null, time3 = Null, lap3 = Null, time4 = Null, lap4 = Null" res = db.query(query) #self.ResetStatus() db.commit() eventCalcNow.set() print "A: Times: Recalculating.. press F5 to finish" return res
def sRecalculate(self, run_id): if (uiAccesories.showMessage("Recalculate", "Are you sure you want to recalculate times and laptimes? \n (only for the current run) ", MSGTYPE.warning_dialog) != True): return print "A: Times: Recalculating.. run id:", run_id query = \ " UPDATE times" +\ " SET time1 = Null, lap1 = Null, time2 = Null, lap2 = Null, time3 = Null, lap3 = Null, time4 = Null, lap4 = Null" +\ " WHERE (times.run_id = \""+str(run_id)+"\")" res = db.query(query) #self.ResetStatus() db.commit() eventCalcNow.set() print "A: Times: Recalculating.. press F5 to finish" return res
def IsUserTime(self, dbTime, mode): ''' jde momentálně o poslední/nejlepší čas daného závodníka? ''' if(dbTime['time1'] == None): return True if(dbTime['time1'] == 0): return True if(dbTime['cell'] == 1): return True if(dbTime['user_id'] == 0): return True query = \ " SELECT COUNT(times.id) FROM times" +\ " WHERE " query = query + \ " (times.run_id=\""+str(dbTime['run_id'])+"\") AND"+\ " (times.user_id == " +str(dbTime['user_id'])+ ") AND "+\ " (times.cell = 250)" if(mode == self.IS_WORST_TIME): query = query + \ " AND (times.time_raw > " + str(dbTime['time_raw']) + ")" elif(mode == self.IS_BEST_TIME): query = query + \ " AND (times.time_raw < " + str(dbTime['time_raw']) + ")" res_cnt = db.query(query).fetchone()[0] #print "isusertime:",res_cnt, query if(res_cnt == 0): return True return False
def Get(self, dbTime, lap, category_id = None): """ vrací pořadí závodníka v závodě/kategorii """ # zobrazovat pořadí? (kontrola checkboxů) # if (dstore.Get("additional_info")["enabled"] == 0): # return None # if (category_id == None) and (dstore.Get("additional_info")["order"] == 0): # return None # if (category_id != None) and (dstore.Get("additional_info")["order_in_cat"] == 0): # return None # RACE: pořadí jen u nejhorších/posledních časů # SLALOM: pořadí jen u prvních/nejlepších časů if(self.IsResultTime(dbTime) == False): return None if(dbTime['time1'] == None): return None if(dbTime['time1'] == 0): return None if(dbTime['cell'] == 1): return None if(dbTime['user_id'] == 0): return None if category_id != None: '''ORDER IN THE SAME CATEGORY''' #do skupin podle zavodníků (group by) query_order = \ "SELECT COUNT(*) FROM("+\ " SELECT user_id FROM times" #ir: bez tabulky tags => user_id == users.id #rfid: přes tabulku tags => user_id == tag_id if(dstore.GetItem("racesettings-app", ['rfid']) == 2): query_order = query_order + \ " INNER JOIN tags ON times.user_id = tags.tag_id"+\ " INNER JOIN users ON tags.user_nr = users.nr " else: query_order = query_order + \ " INNER JOIN users ON times.user_id = users.id" query_order = query_order + \ " WHERE (times.time < " + str(dbTime['time1']) + ")" #if(dstore.Get('onelap_race') == 0): query_order = query_order + \ " AND (times.run_id=\""+str(dbTime['run_id'])+"\")"+\ " AND (times.user_id != " +str(dbTime['user_id'])+ ")" query_order = query_order + \ " AND (times.user_id != 0)"+\ " AND (times.time != 0 )" if(dstore.Get("evaluation")['laptime'] == LaptimeEvaluation.ALL_TIMES): query_order = query_order + \ " AND (times.cell != 1 )" else: query_order = query_order + \ " AND (times.cell = 250 )" query_order = query_order + \ " AND (users.category_id=\"" +str(category_id)+ "\")"+\ " GROUP BY user_id" if(dstore.Get('evaluation')['order'] == OrderEvaluation.RACE): query_order = query_order + \ " HAVING count(*) == " + str(lap) if(dstore.Get('evaluation')['order'] != OrderEvaluation.SLALOM): #zohlednit závodníky s horším časem ale více koly query_order = query_order + \ " UNION "+\ " SELECT user_id FROM times" if(dstore.GetItem("racesettings-app", ['rfid']) == 2): query_order = query_order + \ " INNER JOIN tags ON times.user_id = tags.tag_id"+\ " INNER JOIN users ON tags.user_nr = users.nr " else: query_order = query_order + \ " INNER JOIN users ON times.user_id = users.id" query_order = query_order + \ " WHERE" query_order = query_order + \ "(times.run_id=\""+str(dbTime['run_id'])+"\") AND"+\ " (times.user_id != " +str(dbTime['user_id'])+ ")"+\ " AND (times.user_id != 0 )"+\ " AND (times.time != 0 )" if(dstore.Get("evaluation")['laptime'] == LaptimeEvaluation.ALL_TIMES): query_order = query_order + \ " AND (times.cell != 1 )" else: query_order = query_order + \ " AND (times.cell = 250 )" query_order = query_order + \ " AND (users.category_id=\"" +str(category_id)+ "\")"+\ " GROUP BY user_id"+\ " HAVING count(*) > "+str(lap) query_order = query_order + ")" #print "query_order_cat: ",dstore.Get('onelap_race') ,query_order else: '''ORDER IN ALL RUN''' query_order = \ "SELECT COUNT(*) FROM("+\ "SELECT user_id FROM times" query_order = query_order + \ " WHERE (times.time < " + str(dbTime['time1']) + ")" #if(dstore.Get('onelap_race') == 0): query_order = query_order + \ " AND (times.run_id=\""+str(dbTime['run_id'])+"\")"+\ " AND (times.user_id != " +str(dbTime['user_id'])+ ")" query_order = query_order + \ " AND (times.user_id != 0)"+\ " AND (times.time != 0 )" if (dstore.Get("evaluation")['laptime'] == LaptimeEvaluation.ALL_TIMES): query_order = query_order + \ " AND (times.cell != 1 )" else: query_order = query_order + \ " AND (times.cell = 250 )" query_order = query_order + \ " GROUP BY user_id" if(dstore.Get('evaluation')['order'] == OrderEvaluation.RACE): query_order = query_order + \ " HAVING count(*) == " + str(lap) if(dstore.Get('evaluation')['order'] != OrderEvaluation.SLALOM): #zohlednit závodníky s horším časem ale více koly query_order = query_order + \ " UNION "+\ " SELECT user_id FROM times" +\ " WHERE" query_order = query_order +\ " (times.run_id=\""+str(dbTime['run_id'])+"\") AND"+\ " (times.user_id != 0)"+\ " AND (times.time != 0 )" if(dstore.Get("evaluation")['laptime'] == LaptimeEvaluation.ALL_TIMES): query_order = query_order + \ " AND (times.cell != 1 )" else: query_order = query_order + \ " AND (times.cell = 250 )" query_order = query_order + \ " GROUP BY user_id"+\ " HAVING count(*) > "+str(lap) query_order = query_order +\ ")" #print "order in run: ", query_order try: #print query_order res_order = db.query(query_order).fetchone()[0] res_order = res_order + 1 except: res_order = None return res_order