def new_user_input_details(request): form = None if request.POST: form = UserInfoForm(request.POST, instance=request.user) if form.is_valid(): userinfo = form.save() request.user.has_been_welcomed = True request.user.save() # request.user.userinfo = userinfo # request.user.description = form.description # request.user.save() return HttpResponseRedirect(reverse('new_user_topics')) else: form = UserInfoForm(instance=request.user) return render(request, 'new_user_input_details.html', { 'form': form, 'form_action': reverse('new_user_input_details'), })
def profile(request, user_id=None): form = None if request.POST: form = UserInfoForm(request.POST, instance=request.user) if form.is_valid(): userinfo = form.save() # Update the primary email if changed! primary_emailaddress = EmailAddress.objects.get_primary(userinfo) if primary_emailaddress and primary_emailaddress.email != userinfo.email: primary_emailaddress.change(request, userinfo.email) if user_id is None: profile_user = request.user form = UserInfoForm(instance=request.user) else: profile_user = get_object_or_404(User, pk=user_id) newest_skills = profile_user.skills_completed.all()[:3] other_skills_count = profile_user.skills_completed.count() - 3 if request.user == profile_user: own_profile = True trainingbits_completed = request.user.trainingbits_completed.values_list('pk', flat=True) skills_in_progress_w_percentage = [] skills_in_progress = request.user.skills_in_progress.filter(is_draft=False).prefetch_related('trainingbits') for skill in skills_in_progress: tbs = skill.trainingbits.all() incompleted_count = len(set([t.pk for t in tbs]) - set(trainingbits_completed)) total_count = len(tbs) if total_count == 0: percentage = 0 else: percentage = 1.0 - (incompleted_count / total_count) percentage *= 100 skill.percentage = percentage skills_in_progress_w_percentage.append((skill, int(percentage))) trainingbits_in_progress = request.user.trainingbits_in_progress.filter(is_draft=False) in_progress_dict = { 'skills_in_progress_w_percentage': skills_in_progress_w_percentage, 'skills_in_progress': skills_in_progress, 'trainingbits_in_progress': trainingbits_in_progress, } else: own_profile = False in_progress_dict = {} projects = list(profile_user.project_set.filter(is_deleted=False, trainingbit__is_draft=False) \ .order_by('-created_at').select_related('trainingbit').prefetch_related('comment_set')[:12]) project_list0 = projects[0::3] project_list1 = projects[1::3] project_list2 = projects[2::3] template_dict = { 'own_profile': own_profile, 'profile_user': profile_user, 'newest_skills': newest_skills, 'other_skills_count': other_skills_count, 'project_list0': project_list0, 'project_list1': project_list1, 'project_list2': project_list2, 'hide_comments': True, 'form': form, 'form_action': reverse('profile'), } template_dict.update(in_progress_dict) return render(request, 'profile.html', template_dict)
def profile(request, user_id=None): form = None if request.POST: form = UserInfoForm(request.POST, instance=request.user) if form.is_valid(): userinfo = form.save() # Update the primary email if changed! primary_emailaddress = EmailAddress.objects.get_primary(userinfo) if primary_emailaddress and primary_emailaddress.email != userinfo.email: primary_emailaddress.change(request, userinfo.email) if user_id is None: profile_user = request.user form = UserInfoForm(instance=request.user) else: profile_user = get_object_or_404(User, pk=user_id) newest_skills = profile_user.skills_completed.all()[:3] other_skills_count = profile_user.skills_completed.count() - 3 if request.user == profile_user: own_profile = True trainingbits_completed = request.user.trainingbits_completed.values_list( 'pk', flat=True) skills_in_progress_w_percentage = [] skills_in_progress = request.user.skills_in_progress.filter( is_draft=False).prefetch_related('trainingbits') for skill in skills_in_progress: tbs = skill.trainingbits.all() incompleted_count = len( set([t.pk for t in tbs]) - set(trainingbits_completed)) total_count = len(tbs) if total_count == 0: percentage = 0 else: percentage = 1.0 - (incompleted_count / total_count) percentage *= 100 skill.percentage = percentage skills_in_progress_w_percentage.append((skill, int(percentage))) trainingbits_in_progress = request.user.trainingbits_in_progress.filter( is_draft=False) in_progress_dict = { 'skills_in_progress_w_percentage': skills_in_progress_w_percentage, 'skills_in_progress': skills_in_progress, 'trainingbits_in_progress': trainingbits_in_progress, } else: own_profile = False in_progress_dict = {} projects = list(profile_user.project_set.filter(is_deleted=False, trainingbit__is_draft=False) \ .order_by('-created_at').select_related('trainingbit').prefetch_related('comment_set')[:12]) project_list0 = projects[0::3] project_list1 = projects[1::3] project_list2 = projects[2::3] template_dict = { 'own_profile': own_profile, 'profile_user': profile_user, 'newest_skills': newest_skills, 'other_skills_count': other_skills_count, 'project_list0': project_list0, 'project_list1': project_list1, 'project_list2': project_list2, 'hide_comments': True, 'form': form, 'form_action': reverse('profile'), } template_dict.update(in_progress_dict) return render(request, 'profile.html', template_dict)