def preferences_view(request, username): member = Member.objects.get(username=username) if not authenticate_member(request, member): return redirect('/profile_redirect/') if member.owner: spaces = Space.objects.filter(teacher=member.username) percentages = [] for space in spaces: submitted = 0 participants = space.member_set.exclude(name='Account in Progress') preferences = Preferences.objects.filter(space=space) for preference in preferences: if preference.members_ranking != '' and preference.members_ranking != 'Not Submitted Yet': submitted += 1 if participants.count() == 0: percent = 0.0 else: percent = submitted / participants.count() * 100 percent = round(percent, 2) percentages.append(percent) percentages.append(percent) percentages.append(percent) percentages.reverse() return render(request, 'ownerviewpreferences.html', { 'member': member, 'spaces': spaces, 'percentages': percentages }) preferences = Preferences.objects.filter(member=member) return render(request, 'preferences.html', { 'member': member, 'preferences': preferences })
def rank_preferences_view(request, spaceurl, username): success = False member = Member.objects.get(username=username) if not authenticate_member(request, member): return redirect('/profile_redirect/') space = Space.objects.get(url=spaceurl) projects = Project.objects.filter(space__url__exact=spaceurl) projects = projects.order_by('name') participants = space.member_set.exclude(name='Account in Progress') participants = participants.exclude(username=username) participants = participants.order_by('name') if request.is_ajax(): category = request.POST.get('category') if Preferences.objects.filter(member=member, space=space).exists(): preference = Preferences.objects.get(member=member, space=space) preference.delete() preference = Preferences(member=member, space=space) preference.id = preference.id if category == 'project': project_ranking_JSON = request.POST.get('project_ranking') project_preferences = simplejson.loads(project_ranking_JSON) preference.projects_ranking = "" for project in project_preferences: preference.projects_ranking += project + ', ' preference.projects_ranking = preference.projects_ranking[:-2] success = True if category == 'peer': peer_ranking_JSON = request.POST.get('peer_ranking') peer_preferences = simplejson.loads(peer_ranking_JSON) preference.members_ranking = "" for peer in peer_preferences: raw_list = peer.split(" ") username = raw_list[len(raw_list) - 1] if username == "Myself": preference.members_ranking += "@myself@ " elif username == 'Team': preference.members_ranking += "@team@ " else: username = username[1:-1] preference.members_ranking += username + ' ' preference.save() return render( request, "rankpreferences.html", { 'member': member, 'projects': projects, 'participants': participants, 'success': success, 'space': space })
def join_space_view(request, username): member = Member.objects.get(username=username) if not authenticate_member(request, member): return redirect('/profile_redirect/') msg = "" are_spaces = True success = False # flag for if a user has successfully joined fail = False # flag for if user entered the wrong password for any space spaces = Space.objects.all() spaces = spaces.order_by('name') # orders spaces alphabetically # for loop checks for which spaces a member is already a part of and prevents showing those spaces on JoinSpace for space in spaces: already_member = member.spaces.filter(name=space.name).exists() if already_member: spaces = spaces.exclude(name=space.name) if spaces.count() == 0: are_spaces = False if request.method == 'POST': for space in spaces: check = request.POST.get(space.url, False) == "on" if check: # if they indicated they wanted to join space password_input = space.url + "Password" password_try = request.POST.get(password_input, "") if space.password == password_try: # if the password was correct member.spaces.add(space) member.save() success = True msg += "You have been added to " + space.name + ". " else: msg += "You entered the wrong password for " + space.name + ". " fail = True if fail: return render( request, 'joinspace.html', { 'msg': msg, 'member': member, "spaces": spaces, "are_spaces": are_spaces }) if success: return redirect("/profile/" + username + '/') return render(request, 'joinspace.html', { 'msg': msg, 'member': member, "spaces": spaces, "are_spaces": are_spaces })
def space_preferences_view(request, username, spaceurl): member = Member.objects.get(username=username) if not authenticate_member(request, member): return redirect('/profile_redirect/') space = Space.objects.get(url=spaceurl) if member.username != space.teacher: return redirect('/profile_redirect/') preferences = Preferences.objects.filter(space=space) preferences.order_by('member') return render(request, 'spacepreferences.html', { 'member': member, 'preferences': preferences })
def profile_view(request, username): if username == "" or not Member.objects.filter(username=username).exists(): return redirect('/profile_redirect/') member = Member.objects.get(username=username) if authenticate_member(request, member): if member.owner: spaces = Space.objects.filter(teacher=username) else: spaces = member.spaces.all() return render(request, 'profile.html', { 'member': member, 'spaces': spaces }) else: return redirect('/profile_redirect/')
def create_space_view(request, username): member = Member.objects.get(username=username) if not authenticate_member(request, member): return redirect('/profile_redirect/') error_msg = "" if request.method == 'POST': space_name = request.POST['Space'] if len(space_name) > 16 or len(space_name) < 3: error_msg = "The name of your space must be between 3 and 16 characters." return render(request, 'createspace.html', { 'username': username, 'member': member, 'errormsg': error_msg }) existing_space_name = Space.objects.filter(name=space_name).exists() if existing_space_name: # space name is taken, so error message is shown error_msg = "That name is already being used for an existing space, please choose another." return render(request, 'createspace.html', { 'username': username, 'member': member, 'errormsg': error_msg }) else: # space name is unique, so the space is made url_catcher = "" url_name = "" words_list = space_name.split(" ") for word in words_list: url_catcher += word + "_" url_name = url_catcher[:-1] space = Space(name=space_name, teacher=username, description=request.POST['Description'], password=request.POST.get('password', False), url=url_name) space.save() space_page = '/space/' + url_name return redirect(space_page) return render(request, 'createspace.html', { 'username': username, 'member': member, 'errormsg': error_msg })
def edit_profile_view(request, username): error = False member = Member.objects.get(username=username) msg = "" if not authenticate_member(request, member): return redirect('/profile_redirect/') if request.method == 'POST': skills = request.POST['skills'] if len(skills) < 300: member.skills = skills member.save() else: error = True msg = "The skills you entered were too long. They have to be under 300 characters." return render(request, "editprofile.html", { 'member': member, 'msg': msg, 'error': error })