예제 #1
0
 def ResetNrOfLaps(self):
     query = \
             " UPDATE times" +\
                 " SET lap1 = Null, lap2 = Null, lap3 = Null, lap4 = Null"
     res = db.query(query)
     db.commit()
     return res
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
    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                    
예제 #5
0
 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                    
예제 #6
0
    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
예제 #7
0
    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