diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index f5a1b98161e1..e003bf1d72d2 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -127,6 +127,7 @@ # Note that this lives in openedx, so this dependency should be refactored. from openedx.core.djangoapps.user_api.preferences import api as preferences_api from openedx.core.djangoapps.programs.utils import get_programs_for_dashboard +from django.shortcuts import get_object_or_404 log = logging.getLogger("edx.student") @@ -513,6 +514,25 @@ def is_course_blocked(request, redeemed_registration_codes, course_key): return blocked +def profile_progress(user): + profile = get_object_or_404(UserProfile, user=user) + + profile_fields = [profile.name, + profile.language, + profile.year_of_birth, + profile.gender, + profile.level_of_education, + profile.country, + profile.bio, + profile.profile_image_uploaded_at] + + completed_fields = len(filter(lambda x: x is not None, profile_fields)) + + percentage_completed = int((float(completed_fields) / float(len(profile_fields)) * 100)) + + return percentage_completed + + @login_required @ensure_csrf_cookie def dashboard(request): @@ -676,6 +696,9 @@ def dashboard(request): else: redirect_message = '' + # get progress for profile + profile_completed = profile_progress(user) + context = { 'enrollment_message': enrollment_message, 'redirect_message': redirect_message, @@ -706,6 +729,7 @@ def dashboard(request): 'courses_requirements_not_met': courses_requirements_not_met, 'nav_hidden': True, 'course_programs': course_programs, + 'profile_completed': profile_completed, } return render_to_response('dashboard.html', context)