Exemplo n.º 1
0
 def get(self):
     str_id = self.request.get('id')
     message = self.request.get('message')
     
     if not str_id or not message:
         self.response.status_int = 400
         self.response.body = "Invalid or missing id and or message."
         return
         
     devices = GqlQuery('SELECT * FROM Device WHERE __key__ = :1',
                        Key.from_path('Device', str_id))
     
     if devices.count() < 1:
         self.response.status_int = 404
         self.response.body = "Target device not registered."
         return
     
     payload = {'registration_ids': [devices.get().token], 'data': {'message': message}}
     headers = {'Content-Type': 'application/json',
                'Authorization': 'key=' + API_KEY}
     result = urlfetch.fetch(url = ANDROID_GCM_URL,
                             payload = json.dumps(payload),
                             method = urlfetch.POST,
                             headers = headers)
     
     self.response.status_int = result.status_code
     self.response.body = result.content
Exemplo n.º 2
0
 def evaluationMeasureOLD(self, measure):
     path = os.path.join(os.path.dirname(__file__), 'viewer_templates/class_profile_evaluation.html')
     
     userProfiles = GqlQuery("SELECT * FROM UserProfile") 
    
     exerciseThereshold = 50
     videoThereshold = 70
    
     exercisePass = 0
     videoPass = 0
     userPassCourse = 0
     
     pass_course_users = []
     fail_course_users = []
 
     for userProfile in userProfiles:
         if(userProfile.evaluation_exercise >= exerciseThereshold):
             exercisePass += 1
        
         if(userProfile.evaluation_video >= videoThereshold):
             videoPass += 1
            
         if(userProfile.evaluation_video >= videoThereshold and userProfile.evaluation_exercise >= exerciseThereshold):
             userPassCourse += 1
             pass_course_users.append(userProfile)
         else:
             fail_course_users.append(userProfile)
             
     template_values = {'exercisePass': exercisePass,
                        'exerciseFail': userProfiles.count() - exercisePass,
                        'videoPass': videoPass,
                        'videoFail': userProfiles.count() - videoPass,
                        'userPassCourse': userPassCourse,
                        'userFailCourse': userProfiles.count() - userPassCourse,
                        'measureList': Utils().getMeasureList(),
                        'passCourseUsers': pass_course_users,
                        'failCourseUsers': fail_course_users
                       }
     
     self.response.out.write(template.render(path, template_values))
Exemplo n.º 3
0
 def exercise_progress(self, usuario):
     
     x_vid = array([0.0, 25.0, 50.0, 75.0, 100.0])
     y_vid = array([0.0, 40.0, 65.0, 85.0, 100.0])
     
     pol_exercise_progress = Polynomial.fit(x_vid, y_vid, 5)
     
     subject_exercises = GqlQuery("SELECT * FROM ViewerExercise")
     
     exercise_progress = 0
     
     for subject_exercise in subject_exercises:
         userExercise = GqlQuery("SELECT * FROM UserExercise WHERE exercise_model = :1 AND user = :2", subject_exercise.exercise, usuario.user).get()
         
         if(userExercise != None):
             if(userExercise._progress == 1.0):
                 exercise_progress += 100
             else:
                 exercise_progress += pol_exercise_progress(userExercise._progress*100)
                 
     return int(exercise_progress/subject_exercises.count())
Exemplo n.º 4
0
 def get(self):
     str_id = self.request.get('id')
     token = self.request.get('token')
     
     if not str_id or not token:
         self.response.status_int = 400
         self.response.body = "Invalid or missing id and or token."
         return
         
     objects = GqlQuery('SELECT * FROM Device WHERE __key__ = :1',
                        Key.from_path('Device', str_id))
     
     if objects.count() < 1:
         obj = Device(key=Key.from_path('Device', str_id), token=token)
     else:
         obj = objects.get()
     
     obj.put()
     
     self.response.status_int = 200
     self.response.body = "OK"
Exemplo n.º 5
0
    def correct_exercise_efficiency(self, usuario):
        subject_exercises = GqlQuery("SELECT * FROM ViewerExercise")
        totalEfficiency = 0
        totalExercises= 0 
        for subject_exercise in subject_exercises:
            problemLogs = GqlQuery("SELECT * FROM ProblemLog WHERE exercise = :1 AND user = :2 ORDER BY time_done ASC", subject_exercise.name, usuario.user)
            
            if(problemLogs.count() > 0 ):
                totalExercises += 1
                problemsTime = 0
                problemsAttempt = 0
                exerciseCorrect = False
                
                for problemLog in problemLogs:
                    problemsTime += problemLog.time_taken
                    problemsAttempt += problemLog.count_attempts
                    if(problemLog.correct == True):
                        exerciseCorrect = True
                        break

                if(exerciseCorrect == True):
                    if(problemsTime < 10):
                        totalEfficiency += 50
                    elif(problemsTime > 100):
                        totalEfficiency += 0
                    else:
                        totalEfficiency += (1 - (problemsTime/100))*50
                        
                    if(problemsAttempt > 6):
                        totalEfficiency += 0
                    else:
                        totalEfficiency += (1 - ((problemsAttempt-1)/5))*50                    
        
        if (totalExercises == 0):
            totalEfficiency  = 0
        else:
            totalEfficiency = int(totalEfficiency/totalExercises) 
            
        return totalEfficiency               
Exemplo n.º 6
0
 def video_progress(self, usuario):
     
     x_vid = array([0.0, 50.0, 75.0, 100.0])
     y_vid = array([0.0, 30.0, 55.0, 100.0])
     
     pol_video_progress = Polynomial.fit(x_vid, y_vid, 5)
     
     total_video_progress = 0
     
     subject_videos = GqlQuery("SELECT * FROM ViewerVideo")
     
     for subject_video in subject_videos:
             
         userVideo = GqlQuery("SELECT * FROM UserVideo WHERE video = :1 AND user = :2", subject_video.video, usuario.user).get()
         
         if(userVideo != None):
             porcentajeVideo = (userVideo.seconds_watched/userVideo.duration)*100
             if(porcentajeVideo >= 100):
                 total_video_progress += 100
             else:
                 total_video_progress += pol_video_progress(porcentajeVideo)
                     
     return int(total_video_progress/subject_videos.count())
Exemplo n.º 7
0
    def post(self):
        #TODO: add comments
        user = cgi.escape(self.request.get('username'))
        q = GqlQuery("SELECT artist, time FROM Listen WHERE user = '******'")
        
        if q.count(limit=1) == 0:
            logging.info('Fetching data for user: %s', user)
            taskqueue.add(url='/fetchdata', params={'username': user})
            self.response.write('Fetching data for user ' + user + '. Please wait')
            return
        else:
            logging.info('Already have data for user %s in datastore. Not' + \
            ' fetching any new data from Last.fm', user)
        
        for y in range(1, 13):
            logging.info('Getting stats for month ' + str(y))
            plays = 0
            artists = dict()
            
            for x in q:
                if x.time.month == y:
                    plays += 1
                    if x.artist not in artists:
                        artists[x.artist] = 1
                    else:
                       artists[x.artist] += 1

            self.response.write('<b>' + calendar.month_name[y] + '</b>')
            self.response.write('<br>Total plays: ' + str(plays))
            self.response.write('<br>Total artists: ' + str(len(artists)))
            self.response.write('<br><br>Top artists:<br>')
            
            sorted_artists = sorted(artists, key=artists.get, reverse=True)
            for z in range(0, 10):
                self.response.write(str(z+1) + '. ' + sorted_artists[z].encode('utf-8') + ': ' + \
                str(artists[sorted_artists[z]]) + '<br>')
            self.response.write('<br><br>')
Exemplo n.º 8
0
 def cognitiveModel(self, usuario):
     
     hintAvoidance = 0
     videoAvoidance = 0
     unreflectiveUser = 0
     hintAbuser = 0
     
     totalDifferentExercises = 0
     
     subject_exercises = GqlQuery("SELECT * FROM ViewerExercise")
     
     for subject_exercise in subject_exercises:
         problemLogs = GqlQuery("SELECT * FROM ProblemLog WHERE exercise = :1 AND user = :2 ORDER BY time_done ASC", subject_exercise.name, usuario.user)
         
         if(problemLogs.count() > 0 ):
             
             totalDifferentExercises += 1
             
             exercisesSameKind = 0
             hintAvoidPoints = 0
             videoAvoidPoints = 0
             unreflectivePoints = 0
             hintAbusePoints = 0
         
             exerciseVideo = GqlQuery("SELECT * FROM ExerciseVideo WHERE exercise = :1", subject_exercise.exercise).get()                
             userVideo = GqlQuery("SELECT * FROM UserVideo WHERE video = :1 AND user= :2", exerciseVideo.video, usuario.user).get()
             videoDate = datetime.datetime.now()
             if(userVideo != None):
                 videoDate = userVideo.backup_timestamp
             
             
             for problemLog in problemLogs:
                 
                 exercisesSameKind += 1
                 
                 # Video Avoidance
                 if(problemLog.correct == False and (problemLog.time_done < videoDate)):
                     videoAvoidPoints += 1
                                             
                 # Hint Avoidance                    
                 if(problemLog.correct == False and problemLog.count_hints == 0):
                     hintAvoidPoints += 1
                 if(problemLog.correct == False and problemLog.count_hints == 1):    
                     hintAvoidPoints += 0.5
                     
                 # Calculamos el no reflexionador
                 if(problemLog.correct == False):
                     intentoAnterior = 0
                     listaIntentos = problemLog.time_taken_attempts
                     listaIntentos.sort()
                     
                     for intento in listaIntentos:
                         diferenciaTemporal = math.fabs(intento-intentoAnterior)
                         intentoAnterior = intento
                         #Comprobamos que sea menor de 10 segundos para considerar abuso
                         if(diferenciaTemporal < 10):
                             unreflectivePoints += 1
                             break
                 #Fin no reflexionador
                 
                 #Calculo pide pistas demasiado rapido
                 if(problemLog.count_hints > 0):
                     pistaAnterior = 0
                     listaPistas = problemLog.hint_time_taken_list
                     listaPistas.sort()
                     
                     for pista in listaPistas:
                         diferenciaTemporal = math.fabs(pista-pistaAnterior)
                         pistaAnterior = pista
                         #Comprobamos que sea menor de 10 segundos para considerar abuso
                         if(diferenciaTemporal < 10):
                             hintAbusePoints += 1
                             break
                 #Fin abusor pistas
                 
                 if(problemLog.correct == True):
                     break
                 else:
                     continue
                                     
             hintAvoidance += ((hintAvoidPoints/exercisesSameKind)*100)
             videoAvoidance += ((videoAvoidPoints/exercisesSameKind)*100)
             unreflectiveUser += ((unreflectivePoints/exercisesSameKind)*100)
             hintAbuser += ((hintAbusePoints/exercisesSameKind)*100)
             
     if(totalDifferentExercises != 0):
         hintAvoidanceFinal = int(hintAvoidance/totalDifferentExercises)
         videoAvoidanceFinal = int(videoAvoidance/totalDifferentExercises)
         unreflectiveUserFinal = int(unreflectiveUser/totalDifferentExercises)
         hintAbuserFinal = int(hintAbuser/totalDifferentExercises)
         
         return [hintAvoidanceFinal, videoAvoidanceFinal,
                 unreflectiveUserFinal, hintAbuserFinal]
     else:
         return [0,0,0,0]
             
for badge in util_badges.badges_tematicas_no_maestro():
    #print badge.exercise_names_required
    listaBadgesTematicas.append(badge.name)
    
usuarios =  GqlQuery("SELECT * FROM UserProfile ORDER BY user_id ASC")

for usuarioID in usuarios:
    
    #print usuarioID
    userData = GqlQuery("SELECT * FROM UserData WHERE user_id = :1", usuarioID).get()

    #print userData.user_id
    topicUserBadges = GqlQuery("SELECT * FROM UserBadge WHERE badge_name IN :1 AND user = :2 ORDER BY date ASC", listaBadgesTematicas, userData.user)
    
    percentageSumForAllTematicBadges = 0
    numberTematicBadges = topicUserBadges.count(1000)
    #print "Tematic Badges %d" % numberTematicBadges

    startDate = datetime.datetime(2013,8,1,0,0,1)
    endDate = None
    for topicUserBadge in topicUserBadges:
        
        #print topicUserBadge

        endDate = topicUserBadge.date
        badge_requisites = ""
        
        for topicBadge in util_badges.badges_tematicas_no_maestro():
            if(topicBadge.name == topicUserBadge.badge_name):
                badge_requisites = topicBadge.exercise_names_required
                #print badge_requisites
    tiempoEnVideos = 0
    
    videos = models.VideoLog.all().filter('user ='******'user =', userData.user)
    
    for ejercicio in ejercicios:
        tiempoEnEjercicios += ejercicio.time_taken/3600

    tiempoTotalVideosEjercicios = tiempoEnVideos + tiempoEnEjercicios
    
    if(tiempoEnEjercicios != 0):
        badgeEjerciciosEntreTiempo = len(allExerciseUserBadges)/tiempoEnEjercicios
    else:
        badgeEjerciciosEntreTiempo = 0
        
    if(tiempoEnVideos != 0):
        badgeVideosEntreTiempo = videoUserBadges.count(10000)/tiempoEnVideos
    else:
        badgeVideosEntreTiempo = 0
        
    if(tiempoTotalVideosEjercicios != 0):
        badgeTotalEntreTiempo = allUserBadges.count(10000)/tiempoTotalVideosEjercicios
    else:
        badgeTotalEntreTiempo = 0
    
  
    print "%.2f        %.2f        %.2f" % (badgeEjerciciosEntreTiempo,badgeVideosEntreTiempo,badgeTotalEntreTiempo)
Exemplo n.º 11
0
    def oldEvaluation(self):
        
        user_id = self.request.get('userId')
        usuario = ViewerUser.get_by_key_name(user_id)
        
        ejerciciosMin3 = 0
        videosMin50 = 0
        
        # Ejercicios y videos de la asignatura
        subject_videos = GqlQuery("SELECT * FROM ViewerVideo")
        subject_exercises = GqlQuery("SELECT * FROM ViewerExercise")

        # Para cada video de la asignatura
        for subject_video in subject_videos:
            # Coge los ejercicios asociados a dicho video
            exerciseVideos = GqlQuery("SELECT * FROM ExerciseVideo where video = :1", subject_video.video)
            
            # Si encuentra el ejercicio asociado a dicho video
            if(exerciseVideos != None):
                for exerciseVideo in exerciseVideos:
                    # Coge el UserExercise de dicho ejercicio
                    userExercise = GqlQuery("SELECT * FROM UserExercise WHERE exercise_model = :1 AND user = :2", exerciseVideo.exercise, usuario.user).get()
                    
                    # Si no ha encontrado el ejercicio asociado al video, mira directamente el video
                    if(userExercise == None):
                        
                        userVideo = GqlQuery("SELECT * FROM UserVideo WHERE video = :1 AND user = :2", subject_video.video, usuario.user).get()
                        
                        if(userVideo != None):
                            porcentaje = userVideo.seconds_watched/userVideo.duration
                            if(porcentaje >= 0.5):                
                                if(subject_video.youtube_id == 'WKR3h7vBxtU' or subject_video.youtube_id == 'NwZqpCAf6o8' or subject_video.youtube_id == 'ESSg3pdsSqA'):
                                    videosMin50 += 1/3
                                elif(subject_video.youtube_id == 'EQ4JVdRLxlU'):
                                    videosMin50 += 1/4
                                elif(subject_video.youtube_id == '7jj6zSWEEgk'):
                                    videosMin50 += 1/2
                                else:
                                    videosMin50 += 1
                            
                    # Si ha encontrado el ejercicio asociado al video, comprueba primero si el ejercicio esta bien hecho
                    else:
                        # Si tiene mas de 3 correctos, sumamos directamente ejercicio y video
                        if(userExercise.total_correct >= 3):
                            ejerciciosMin3 += 1
                            if(subject_video.youtube_id == 'WKR3h7vBxtU' or subject_video.youtube_id == 'NwZqpCAf6o8' or subject_video.youtube_id == 'ESSg3pdsSqA'):
                                videosMin50 += 1/3
                            elif(subject_video.youtube_id == 'EQ4JVdRLxlU'):
                                videosMin50 += 1/4
                            elif(subject_video.youtube_id == '7jj6zSWEEgk'):
                                videosMin50 += 1/2
                            else:
                                videosMin50 += 1  
                        # Si tiene menos de 3 correctos, NO sumamos ejercicio y miramos video                  
                        else:
                            userVideo = GqlQuery("SELECT * FROM UserVideo WHERE video = :1 AND user = :2", subject_video.video, usuario.user).get()
                        
                            if(userVideo != None):
                                porcentaje = userVideo.seconds_watched/userVideo.duration
                                if(porcentaje >= 0.5):                
                                    if(subject_video.youtube_id == 'WKR3h7vBxtU' or subject_video.youtube_id == 'NwZqpCAf6o8' or subject_video.youtube_id == 'ESSg3pdsSqA'):
                                        videosMin50 += 1/3
                                    elif(subject_video.youtube_id == 'EQ4JVdRLxlU'):
                                        videosMin50 += 1/4
                                    elif(subject_video.youtube_id == '7jj6zSWEEgk'):
                                        videosMin50 += 1/2
                                    else:
                                        videosMin50 += 1
                
            # Si el video no tiene un ejercicio asociado, mira directamente el video
            else:
                userVideo = GqlQuery("SELECT * FROM UserVideo WHERE video = :1 AND user = :2", subject_video.video, usuario.user).get()
                    
                if(userVideo != None):
                    porcentaje = userVideo.seconds_watched/userVideo.duration
                    if(porcentaje >= 0.5):                
                        videosMin50 += 1
        
        ejerciciosMin3 = int((ejerciciosMin3/subject_exercises.count())*100)
        videosMin50 = int((videosMin50/subject_videos.count())*100)
                 
        userProfile = UserProfile.get_by_key_name(user_id)
        
        if(userProfile == None):
            userProfile = UserProfile(key_name = user_id, user = usuario.user, user_nickname = usuario.user_nickname, 
                                      user_id = usuario.user_id,
                                      evaluation_exercise = ejerciciosMin3,  evaluation_video = videosMin50)
        else:    
            userProfile.evaluation_exercise = ejerciciosMin3
            userProfile.evaluation_video = videosMin50

        userProfile.put()        
        
Exemplo n.º 12
0
    def get_profile_mean(self, profileName):
        
        queryUserProfile = GqlQuery("SELECT * FROM UserProfile")       

        if(profileName == viewer_code.viewer_consts.EXERCISE_VIDEO_EVALUATION):
            evaluation_exercise_suma = 0
            evaluation_video_suma = 0
            
            for userProfile in queryUserProfile:
                evaluation_exercise_suma += userProfile.evaluation_exercise
                evaluation_video_suma += userProfile.evaluation_video
            
            evaluation_exercise_mean = int(evaluation_exercise_suma / (queryUserProfile.count()))
            evaluation_video_mean = int(evaluation_video_suma / (queryUserProfile.count()))
            
            return [evaluation_exercise_mean, evaluation_video_mean]
        
        elif(profileName == viewer_code.viewer_consts.USE_OF_PLATFORM):
            exercise_explorer_suma = 0
            video_explorer_suma = 0
            exercise_abandon_suma = 0
            video_abandon_suma = 0
            optional_suma = 0
            one_correct_suma = 0
            focus_videos_suma = 0
            focus_exercises_suma = 0
            
            for userProfile in queryUserProfile:
                exercise_explorer_suma += userProfile.exercise_explorer
                video_explorer_suma += userProfile.video_explorer
                exercise_abandon_suma += userProfile.exercise_abandon
                video_abandon_suma += userProfile.video_abandon
                optional_suma += userProfile.optional_elements
                one_correct_suma += userProfile.exercise_one_correct
                focus_videos_suma += userProfile.focus_videos
                focus_exercises_suma += userProfile.focus_exercises
            
            exercise_explorer_mean = int(exercise_explorer_suma / (queryUserProfile.count()))
            video_explorer_mean = int(video_explorer_suma / (queryUserProfile.count()))
            exercise_abandon_mean = int(exercise_abandon_suma / (queryUserProfile.count()))
            video_abandon_mean = int(video_abandon_suma / (queryUserProfile.count()))
            optional_mean = int(optional_suma / (queryUserProfile.count()))
            one_correct_mean = int(one_correct_suma / (queryUserProfile.count()))
            focus_exercises_mean = int(focus_exercises_suma / (queryUserProfile.count()))
            focus_videos_mean = int(focus_videos_suma / (queryUserProfile.count()))
            
            return [exercise_explorer_mean, video_explorer_mean,
                    exercise_abandon_mean, video_abandon_mean,
                    optional_mean, one_correct_mean,
                    focus_exercises_mean, focus_videos_mean]
            
        elif(profileName == viewer_code.viewer_consts.CORRECT_PROGRESS):
            
            video_efficiency_suma = 0
            exercise_efficiency_suma = 0
            video_progress_suma = 0
            exercise_progress_suma = 0
            correct_exercise_suma = 0
            efficiency_proficiencies_suma = 0
            correct_solving_efficiency_suma = 0
            
            for userProfile in queryUserProfile:
                video_efficiency_suma += userProfile.video_efficiency
                exercise_efficiency_suma += userProfile.correct_exercise_effiency
                video_progress_suma += userProfile.video_progress
                exercise_progress_suma += userProfile.exercise_progress
                correct_exercise_suma += userProfile.correct_exercises
                efficiency_proficiencies_suma += userProfile.efficiency_proficiencies
                correct_solving_efficiency_suma += userProfile.correct_exercise_solving_efficiency
                
            video_efficiency_mean = int(video_efficiency_suma / (queryUserProfile.count()))
            exercise_efficiency_mean = int(exercise_efficiency_suma / (queryUserProfile.count()))
            video_progress_mean = int(video_progress_suma / (queryUserProfile.count()))
            exercise_progress_mean = int(exercise_progress_suma / (queryUserProfile.count()))
            correct_exercise_mean = int(correct_exercise_suma / (queryUserProfile.count()))
            efficiency_proficiencies_mean = int(efficiency_proficiencies_suma / (queryUserProfile.count()))
            correct_solving_efficiency_mean = int(correct_solving_efficiency_suma / (queryUserProfile.count()))
            
            return [exercise_efficiency_mean, video_efficiency_mean,
                    exercise_progress_mean, video_progress_mean,
                    correct_exercise_mean, efficiency_proficiencies_mean,
                    correct_solving_efficiency_mean]
                        
        elif(profileName == viewer_code.viewer_consts.TIME_DISTRIBUTION):
            
            time_morning_suma = 0
            time_afternoon_suma = 0
            time_night_suma = 0
            morning_efficiency_suma = 0
            afternoon_efficiency_suma = 0
            night_efficiency_suma = 0
            
            constancy_mean_suma = 0
            constancy_var_suma = 0
            
            morning_efficiency_counter = 0
            afternoon_efficiency_counter = 0
            night_efficiency_counter = 0
            
            for userProfile in queryUserProfile:
                time_morning_suma += userProfile.time_schedule_morning
                time_afternoon_suma += userProfile.time_schedule_afternoon
                time_night_suma += userProfile.time_schedule_night
                constancy_mean_suma += userProfile.constancy_mean
                constancy_var_suma += userProfile.constancy_variance
                if(userProfile.morning_schedule_efficiency != 0):                    
                    morning_efficiency_suma += userProfile.morning_schedule_efficiency
                    morning_efficiency_counter += 1
                    
                if(userProfile.afternoon_schedule_efficiency != 0):                    
                    afternoon_efficiency_suma += userProfile.afternoon_schedule_efficiency
                    afternoon_efficiency_counter += 1
                    
                if(userProfile.night_schedule_efficiency != 0):                    
                    night_efficiency_suma += userProfile.night_schedule_efficiency
                    night_efficiency_counter += 1
                 
            time_morning_mean = int(time_morning_suma / (queryUserProfile.count()))
            #time_afternoon_mean = int(time_afternoon_suma / (queryUserProfile.count()))
            time_night_mean = int(time_night_suma / (queryUserProfile.count()))
            time_afternoon_mean = 100 - time_morning_mean - time_night_mean
            constancy_mean_mean = int(constancy_mean_suma / (queryUserProfile.count()))
            constancy_var_mean = int(constancy_var_suma / (queryUserProfile.count()))
            
            if(morning_efficiency_counter == 0):
                morning_efficiency_mean = 0
            else:
                morning_efficiency_mean = int(morning_efficiency_suma/morning_efficiency_counter)
                
            if(afternoon_efficiency_counter == 0):
                afternoon_efficiency_mean = 0
            else:
                afternoon_efficiency_mean = int(afternoon_efficiency_suma/afternoon_efficiency_counter)
            
            if(night_efficiency_counter == 0):
                night_efficiency_mean = 0
            else:
                night_efficiency_mean = int(night_efficiency_suma/night_efficiency_counter)
            
            return [time_morning_mean, time_afternoon_mean, time_night_mean,
                    constancy_mean_mean, constancy_var_mean,
                    morning_efficiency_mean, afternoon_efficiency_mean, night_efficiency_mean]
              
        elif(profileName == viewer_code.viewer_consts.EXERCISE_SOLVING_HABITS):
            
            recommendation_listener_suma = 0
            forgetful_exercises_suma = 0
            hint_avoidance_suma = 0
            video_avoidance_suma = 0
            unreflective_user_suma = 0
            hint_abuser_suma = 0
            
            for userProfile in queryUserProfile:
                recommendation_listener_suma += userProfile.recommendation_listener
                forgetful_exercises_suma += userProfile.forgetful_exercises
                hint_avoidance_suma += userProfile.hint_avoidance
                video_avoidance_suma += userProfile.video_avoidance
                unreflective_user_suma += userProfile.unreflective_user
                hint_abuser_suma += userProfile.hint_abuser
                
            recommendation_listener_mean = int(recommendation_listener_suma / (queryUserProfile.count()))
            forgetful_exercises_mean = int(forgetful_exercises_suma / (queryUserProfile.count()))
            hint_avoidance_mean = int(hint_avoidance_suma / (queryUserProfile.count()))
            video_avoidance_mean = int(video_avoidance_suma / (queryUserProfile.count()))
            unreflective_user_mean = int(unreflective_user_suma / (queryUserProfile.count()))
            hint_abuser_mean = int(hint_abuser_suma / (queryUserProfile.count()))
            
            return [recommendation_listener_mean, forgetful_exercises_mean,
                    hint_avoidance_mean, video_avoidance_mean,
                    unreflective_user_mean, hint_abuser_mean]
            
        elif(profileName == viewer_code.viewer_consts.GAMIFICATION_HABITS):
            
            badge_over_time_suma = 0
            badge_percentage_suma = 0
            
            for userProfile in queryUserProfile:
                badge_over_time_suma += userProfile.badge_over_time
                badge_percentage_suma += userProfile.badge_point_percentage
                
            badge_over_time_mean = int(badge_over_time_suma / (queryUserProfile.count()))
            badge_percentage_mean = int(badge_percentage_suma / (queryUserProfile.count()))
            
            return [badge_over_time_mean, badge_percentage_mean]