Example #1
0
def create_preapprovals(pctx):
    if pctx.role != participation_role.instructor:
        raise PermissionDenied(_("only instructors may do that"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0

            role = form.cleaned_data["role"]
            for l in form.cleaned_data["emails"].split("\n"):
                l = l.strip()

                if not l:
                    continue

                try:
                    preapproval = ParticipationPreapproval.objects.get(
                        email__iexact=l, course=pctx.course)
                except ParticipationPreapproval.DoesNotExist:
                    pass
                else:
                    exist_count += 1
                    continue

                preapproval = ParticipationPreapproval()
                preapproval.email = l
                preapproval.course = pctx.course
                preapproval.role = role
                preapproval.creator = request.user
                preapproval.save()

                created_count += 1

            messages.add_message(
                request, messages.INFO,
                _("%(n_created)d preapprovals created, "
                  "%(n_exist)d already existed.") % {
                      'n_created': created_count,
                      'n_exist': exist_count
                  })
            return redirect("relate-home")

    else:
        form = BulkPreapprovalsForm()

    return render_course_page(
        pctx, "course/generic-course-form.html", {
            "form": form,
            "form_description": _("Create Participation Preapprovals"),
        })
Example #2
0
def create_preapprovals(pctx):
    if pctx.role != participation_role.instructor:
        raise PermissionDenied(_("only instructors may do that"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0

            role = form.cleaned_data["role"]
            for l in form.cleaned_data["emails"].split("\n"):
                l = l.strip()

                if not l:
                    continue

                try:
                    preapproval = ParticipationPreapproval.objects.get(
                            email__iexact=l,
                            course=pctx.course)
                except ParticipationPreapproval.DoesNotExist:
                    pass
                else:
                    exist_count += 1
                    continue

                preapproval = ParticipationPreapproval()
                preapproval.email = l
                preapproval.course = pctx.course
                preapproval.role = role
                preapproval.creator = request.user
                preapproval.save()

                created_count += 1

            messages.add_message(request, messages.INFO,
                    _("%(n_created)d preapprovals created, "
                    "%(n_exist)d already existed.") % {
                        'n_created': created_count,
                        'n_exist': exist_count})
            return redirect("relate-home")

    else:
        form = BulkPreapprovalsForm()

    return render_course_page(pctx, "course/generic-course-form.html", {
        "form": form,
        "form_description": _("Create Participation Preapprovals"),
    })
Example #3
0
def create_preapprovals(pctx):
    if not pctx.has_permission(pperm.preapprove_participation):
        raise PermissionDenied(_("may not preapprove participation"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(pctx.course, request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0
            pending_approved_count = 0

            roles = form.cleaned_data["roles"]
            for l in form.cleaned_data["preapproval_data"].split("\n"):
                l = l.strip()
                preapp_type = form.cleaned_data["preapproval_type"]

                if not l:
                    continue

                if preapp_type == "email":

                    try:
                        preapproval = ParticipationPreapproval.objects.get(
                            email__iexact=l, course=pctx.course)
                    except ParticipationPreapproval.DoesNotExist:

                        # approve if l is requesting enrollment
                        try:
                            pending = Participation.objects.get(
                                course=pctx.course,
                                status=participation_status.requested,
                                user__email__iexact=l)

                        except Participation.DoesNotExist:
                            pass

                        else:
                            pending.status = \
                                    participation_status.active
                            pending.save()
                            send_enrollment_decision(pending, True, request)
                            pending_approved_count += 1

                    else:
                        exist_count += 1
                        continue

                    preapproval = ParticipationPreapproval()
                    preapproval.email = l
                    preapproval.course = pctx.course
                    preapproval.creator = request.user
                    preapproval.save()
                    preapproval.roles.set(roles)

                    created_count += 1

                elif preapp_type == "institutional_id":

                    try:
                        preapproval = ParticipationPreapproval.objects.get(
                            course=pctx.course, institutional_id__iexact=l)

                    except ParticipationPreapproval.DoesNotExist:

                        # approve if l is requesting enrollment
                        try:
                            pending = Participation.objects.get(
                                course=pctx.course,
                                status=participation_status.requested,
                                user__institutional_id__iexact=l)
                            if (pctx.course.
                                    preapproval_require_verified_inst_id and
                                    not pending.user.institutional_id_verified
                                ):
                                raise Participation.DoesNotExist

                        except Participation.DoesNotExist:
                            pass

                        else:
                            pending.status = participation_status.active
                            pending.save()
                            send_enrollment_decision(pending, True, request)
                            pending_approved_count += 1

                    else:
                        exist_count += 1
                        continue

                    preapproval = ParticipationPreapproval()
                    preapproval.institutional_id = l
                    preapproval.course = pctx.course
                    preapproval.creator = request.user
                    preapproval.save()
                    preapproval.roles.set(roles)

                    created_count += 1

            messages.add_message(
                request, messages.INFO,
                _("%(n_created)d preapprovals created, "
                  "%(n_exist)d already existed, "
                  "%(n_requested_approved)d pending requests approved.") % {
                      'n_created': created_count,
                      'n_exist': exist_count,
                      'n_requested_approved': pending_approved_count
                  })
            return redirect("relate-course_page", pctx.course.identifier)

    else:
        form = BulkPreapprovalsForm(pctx.course)

    return render_course_page(
        pctx, "course/generic-course-form.html", {
            "form": form,
            "form_description": _("Create Participation Preapprovals"),
        })
Example #4
0
def create_preapprovals(pctx):
    if pctx.role != participation_role.instructor:
        raise PermissionDenied(_("only instructors may do that"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0
            pending_approved_count = 0

            role = form.cleaned_data["role"]
            for l in form.cleaned_data["preapproval_data"].split("\n"):
                l = l.strip()
                preapp_type = form.cleaned_data["preapproval_type"]

                if not l:
                    continue

                if preapp_type == "email":

                    try:
                        preapproval = ParticipationPreapproval.objects.get(
                                email__iexact=l,
                                course=pctx.course)
                    except ParticipationPreapproval.DoesNotExist:

                        # approve if l is requesting enrollment
                        try:
                            pending_participation = Participation.objects.get(
                                    course=pctx.course,
                                    status=participation_status.requested,
                                    user__email__iexact=l)

                        except Participation.DoesNotExist:
                            pass

                        else:
                            pending_participation.status = participation_status.active
                            pending_participation.save()
                            send_enrollment_decision(
                                    pending_participation, True, request)
                            pending_approved_count += 1

                    else:
                        exist_count += 1
                        continue

                    preapproval = ParticipationPreapproval()
                    preapproval.email = l
                    preapproval.course = pctx.course
                    preapproval.role = role
                    preapproval.creator = request.user
                    preapproval.save()

                    created_count += 1

                elif preapp_type == "institutional_id":

                    try:
                        preapproval = ParticipationPreapproval.objects.get(
                                course=pctx.course, institutional_id__iexact=l)

                    except ParticipationPreapproval.DoesNotExist:

                        # approve if l is requesting enrollment
                        try:
                            pending_participation = Participation.objects.get(
                                    course=pctx.course,
                                    status=participation_status.requested,
                                    user__institutional_id__iexact=l)
                            if (
                                    pctx.course.preapproval_require_verified_inst_id
                                    and not pending_participation.user.institutional_id_verified):
                                raise Participation.DoesNotExist

                        except Participation.DoesNotExist:
                            pass

                        else:
                            pending_participation.status = participation_status.active
                            pending_participation.save()
                            send_enrollment_decision(
                                    pending_participation, True, request)
                            pending_approved_count += 1

                    else:
                        exist_count += 1
                        continue

                    preapproval = ParticipationPreapproval()
                    preapproval.institutional_id = l
                    preapproval.course = pctx.course
                    preapproval.role = role
                    preapproval.creator = request.user
                    preapproval.save()

                    created_count += 1

            messages.add_message(request, messages.INFO,
                    _(
                        "%(n_created)d preapprovals created, "
                        "%(n_exist)d already existed, "
                        "%(n_requested_approved)d pending requests approved.")
                    % {
                        'n_created': created_count,
                        'n_exist': exist_count,
                        'n_requested_approved': pending_approved_count
                        })
            return redirect("relate-course_page", pctx.course.identifier)

    else:
        form = BulkPreapprovalsForm()

    return render_course_page(pctx, "course/generic-course-form.html", {
        "form": form,
        "form_description": _("Create Participation Preapprovals"),
    })
Example #5
0
def create_preapprovals(pctx):
    if not pctx.has_permission(pperm.preapprove_participation):
        raise PermissionDenied(_("may not preapprove participation"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(pctx.course, request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0
            pending_approved_count = 0

            roles = form.cleaned_data["roles"]
            preapp_type = form.cleaned_data["preapproval_type"]

            for ln in form.cleaned_data["preapproval_data"].split("\n"):
                ln = ln.strip()

                if not ln:
                    continue

                preapp_filter_kwargs = {"%s__iexact" % preapp_type: ln}

                try:
                    ParticipationPreapproval.objects.get(
                        course=pctx.course, **preapp_filter_kwargs)
                except ParticipationPreapproval.DoesNotExist:

                    # approve if ln is requesting enrollment
                    user_filter_kwargs = {"user__%s__iexact" % preapp_type: ln}
                    if preapp_type == "institutional_id":
                        if pctx.course.preapproval_require_verified_inst_id:
                            user_filter_kwargs.update(
                                {"user__institutional_id_verified": True})

                    try:
                        pending = Participation.objects.get(
                                course=pctx.course,
                                status=participation_status.requested,
                                **user_filter_kwargs)

                    except Participation.DoesNotExist:
                        pass

                    else:
                        pending.status = participation_status.active
                        pending.save()
                        send_enrollment_decision(pending, True, request)
                        pending_approved_count += 1

                else:
                    exist_count += 1
                    continue

                preapproval = ParticipationPreapproval()
                if preapp_type == "email":
                    preapproval.email = ln
                else:
                    assert preapp_type == "institutional_id"
                    preapproval.institutional_id = ln
                preapproval.course = pctx.course
                preapproval.creator = request.user
                preapproval.save()
                preapproval.roles.set(roles)

                created_count += 1

            messages.add_message(request, messages.INFO,
                    _(
                        "%(n_created)d preapprovals created, "
                        "%(n_exist)d already existed, "
                        "%(n_requested_approved)d pending requests approved.")
                    % {
                        "n_created": created_count,
                        "n_exist": exist_count,
                        "n_requested_approved": pending_approved_count
                        })
            return redirect("relate-course_page", pctx.course.identifier)

    else:
        form = BulkPreapprovalsForm(pctx.course)

    return render_course_page(pctx, "course/generic-course-form.html", {
        "form": form,
        "form_description": _("Create Participation Preapprovals"),
    })
Example #6
0
def create_preapprovals(pctx):
    if not pctx.has_permission(pperm.preapprove_participation):
        raise PermissionDenied(_("may not preapprove participation"))

    request = pctx.request

    if request.method == "POST":
        form = BulkPreapprovalsForm(pctx.course, request.POST)
        if form.is_valid():

            created_count = 0
            exist_count = 0
            pending_approved_count = 0

            roles = form.cleaned_data["roles"]
            preapp_type = form.cleaned_data["preapproval_type"]

            for ln in form.cleaned_data["preapproval_data"].split("\n"):
                ln = ln.strip()

                if not ln:
                    continue

                preapp_filter_kwargs = {"%s__iexact" % preapp_type: ln}

                try:
                    ParticipationPreapproval.objects.get(
                        course=pctx.course, **preapp_filter_kwargs)
                except ParticipationPreapproval.DoesNotExist:

                    # approve if ln is requesting enrollment
                    user_filter_kwargs = {"user__%s__iexact" % preapp_type: ln}
                    if preapp_type == "institutional_id":
                        if pctx.course.preapproval_require_verified_inst_id:
                            user_filter_kwargs.update(
                                {"user__institutional_id_verified": True})

                    try:
                        pending = Participation.objects.get(
                                course=pctx.course,
                                status=participation_status.requested,
                                **user_filter_kwargs)

                    except Participation.DoesNotExist:
                        pass

                    else:
                        pending.status = participation_status.active
                        pending.save()
                        send_enrollment_decision(pending, True, request)
                        pending_approved_count += 1

                else:
                    exist_count += 1
                    continue

                preapproval = ParticipationPreapproval()
                if preapp_type == "email":
                    preapproval.email = ln
                else:
                    assert preapp_type == "institutional_id"
                    preapproval.institutional_id = ln
                preapproval.course = pctx.course
                preapproval.creator = request.user
                preapproval.save()
                preapproval.roles.set(roles)

                created_count += 1

            messages.add_message(request, messages.INFO,
                    _(
                        "%(n_created)d preapprovals created, "
                        "%(n_exist)d already existed, "
                        "%(n_requested_approved)d pending requests approved.")
                    % {
                        'n_created': created_count,
                        'n_exist': exist_count,
                        'n_requested_approved': pending_approved_count
                        })
            return redirect("relate-course_page", pctx.course.identifier)

    else:
        form = BulkPreapprovalsForm(pctx.course)

    return render_course_page(pctx, "course/generic-course-form.html", {
        "form": form,
        "form_description": _("Create Participation Preapprovals"),
    })