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"), })
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"), })
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"), })
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"), })
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"), })
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"), })