def test_calculate_current_xp(self): """ level 1 - 50 level 2 - 100 level 3 - 175 """ self.assertEqual(qubal_xp.calculate_current_xp(0), 0) # self.assertEqual(calculate_current_xp(49), 49) self.assertEqual(qubal_xp.calculate_current_xp(50), 0) var = qubal_xp.calculate_current_xp(51) print str(var) + "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW" self.assertEqual(var, 1) self.assertEqual(qubal_xp.calculate_current_xp(51), 1) # self.assertEqual(qubal_xp.calculate_current_xp(100), 50) # self.assertEqual(qubal_xp.calculate_current_xp(149), 99) # self.assertEqual(qubal_xp.calculate_current_xp(150), 0) # self.assertEqual(qubal_xp.calculate_current_xp(151), 1)
def prerender_profile_widget(request): local_user = request.user real_person = Person.objects.get_subclass(user=local_user.id) # If local_person is a Student if isinstance(real_person, Student): local_student = get_object_or_404(Student, pk=local_user.id) # We get the xp to calculate the current level for the navbar total_xp = local_student.xp current_level = qubal_xp.calculate_level(total_xp) current_xp = qubal_xp.calculate_current_xp(total_xp) xp_needed = Rules_Xp_per_Level.objects.get(level=current_level).xp background_img = prerender_profile_widget_background(local_student) background_color = prerender_profile_widget_background_color(local_student) context = { "student": local_student, "current_level": current_level, "current_xp": current_xp, "xp_needed": xp_needed, "background_img": background_img, "background_color": background_color, "SUNRISE_URL": settings.SUNRISE_URL, } profile_widget_block = render(request, "jawa_qubal/jawa_profile_widget.inc", context) profile_widget_block = str(profile_widget_block) fixed_profile_widget_block = profile_widget_block.replace("Content-Type: text/html; charset=utf-8", "") return fixed_profile_widget_block
def prerender_ajax_dashboard(request): if request.user.is_authenticated(): local_user = request.user # we need to check the type of local_person (Student or Teacher) local_person = request.user # we do it with the fancy django_model_utils lib # we ask the parent class Person which kind of instance is the user logged_in (teacher or student) # Check for avoiding a crash on the user not being a person YET! if Person.objects.filter(user=local_person.id): # We check the login_rule to add XP to the user if last action is logged. qubal_rules.login_rule(local_user) real_person = Person.objects.get_subclass(user=local_person.id) # We ask if it is student or not if isinstance(real_person, Student): # we know the user is a student # Student.objects.get(pk=local_person.id): local_student = get_object_or_404(Student, pk=local_person.id) total_xp = local_student.xp current_xp = qubal_xp.calculate_current_xp(total_xp) current_level = qubal_xp.calculate_level(total_xp) xp_needed = Rules_Xp_per_Level.objects.get(level=current_level).xp teams_list = local_student.is_team_member_of.all()[:3] achievement_list = local_student.has_achievements.all().order_by("id") achievement_list = achievement_list.reverse()[1:4] last_achievement_list = local_student.has_achievements.all().order_by("id") last_achievement_list = last_achievement_list.reverse()[:1] # We get the specific student powers and assign it to the student_powers var # to send it as context to the index.html student_powers = local_student.has_powers percent = current_level * 10 percent_xp = total_xp * 100 / qubal_xp.sumatorium_levels() if current_xp != 0: percent_current_xp = current_xp * 100 / xp_needed else: percent_current_xp = 0 # Check for avoid a crash when the image doesn't exist if not os.path.isfile(settings.MEDIA_ROOT + str(local_student.image)): local_student.image = "" next_level = current_level + 1 next_level_at = xp_needed - current_xp url = "dashboard_ajax.html" html = prerender_nav(local_student, url, current_level, settings, request) notifications_script = prerender_notifications(local_student) # source_file = open(local_student.image.url,'r') # image_generator = Thumbnail(local_student.image) # result = image_generator.generate() context = { "student": local_student, "current_level": current_level, "current_xp": current_xp, "xp_needed_for_level_up": xp_needed, "total_xp": total_xp, "student_teams_list": teams_list, "local_person_id": local_person.id, "student_achievement_list": achievement_list, "percent": percent, "percent_current_xp": percent_current_xp, "last_achievement_list": last_achievement_list, "next_level_at": next_level_at, "next_level": next_level, "student_powers": student_powers, "navbar_content": html, "notifications_content": notifications_script, "SUNRISE_URL": settings.SUNRISE_URL, "QUBAL_VERSION": settings.QUBAL_VERSION, } return render(request, "spex_qubal/dashboard_ajax.html", context) elif isinstance(real_person, Teacher): # we know the user is a teacher local_teacher = get_object_or_404(Teacher, pk=local_person.id) ##### # Check for avoid a crash when the image doesn't exist if not os.path.isfile(settings.MEDIA_ROOT + str(local_teacher.image)): local_teacher.image = "" ##### total_xp = local_teacher.xp current_level = calculate_level(total_xp) url = "spex_index.html" html = prerender_nav(local_teacher, url, current_level, settings, request) context = { "teacher": local_teacher, "navbar_content": html, "SUNRISE_URL": settings.SUNRISE_URL, "QUBAL_VERSION": settings.QUBAL_VERSION, } return render(request, "spex_qubal/index_teacher.html", context) else: # we know you're a user, but you've no type! return render(request, "Not yet done...and you are an unknown entity sneaking around!!!!!") else: # we know you're a user, and not yet decided if student or teacher # return HttpResponse("You should choose what to be!!! you're just thi user: "******"/register_character_landing/") else: # Drop him to landing if he's not authenticated return HttpResponseRedirect("/landing/")