示例#1
0
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
    })
示例#2
0
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
        })
示例#3
0
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
    })
示例#4
0
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
    })
示例#5
0
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/')
示例#6
0
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
    })
示例#7
0
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
    })