def organisation_create(request): increment_count = False limits = getattr(request, 'limits', {'ip': [0]}) captcha_limit = 5 using_captcha = (limits['ip'][0] > captcha_limit) should_use_captcha = (limits['ip'][0] >= captcha_limit) OrganisationJoinFormWithCaptcha = partial(create_form_subclass_with_recaptcha(OrganisationJoinForm, recaptcha_client), request) InputOrganisationJoinForm = compute_input_join_form(OrganisationJoinFormWithCaptcha, OrganisationJoinForm, using_captcha) OutputOrganisationJoinForm = compute_output_join_form(OrganisationJoinFormWithCaptcha, OrganisationJoinForm, should_use_captcha) teacher = request.user.new_teacher create_form = OrganisationForm(user=request.user) join_form = OutputOrganisationJoinForm() if request.method == 'POST': if 'create_organisation' in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '').upper() country = data.get('country', '') error, town, lat, lng = '', '0', '0', '0' # lookup_coord(postcode, country) school = School.objects.create( name=name, postcode=postcode, town=town, latitude=lat, longitude=lng, country=country ) teacher.school = school teacher.is_admin = True teacher.save() messages.success(request, "The school or club '" + teacher.school.name + "' has been successfully added.") return HttpResponseRedirect(reverse_lazy('onboarding-classes')) elif 'join_organisation' in request.POST: increment_count = True process_join_form(request, teacher, InputOrganisationJoinForm, OutputOrganisationJoinForm) else: return process_revoke_request(request, teacher) res = render(request, 'portal/teach/onboarding_school.html', { 'create_form': create_form, 'join_form': join_form, 'teacher': teacher, }) res.count = increment_count return res
def process_update_school_form(request, school, old_anchor): update_school_form = OrganisationForm(request.POST, user=request.user, current_school=school) if update_school_form.is_valid(): data = update_school_form.cleaned_data name = data.get("name", "") postcode = data.get("postcode", "") country = data.get("country", "") school.name = name school.postcode = postcode school.country = country error, country, town, lat, lng = lookup_coord(postcode, country) school.town = town school.latitude = lat school.longitude = lng school.save() anchor = "#" messages.success( request, "You have updated the details for your school or club successfully.", ) else: anchor = old_anchor return anchor
def organisation_create(request): teacher = request.user.new_teacher create_form = OrganisationForm(user=request.user) join_form = OrganisationJoinForm() if request.method == "POST": if "create_organisation" in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get("name", "") postcode = data.get("postcode", "").upper() country = data.get("country", "") error, town, lat, lng = ( "", "0", "0", "0", ) # lookup_coord(postcode, country) school = School.objects.create( name=name, postcode=postcode, town=town, latitude=lat, longitude=lng, country=country, ) teacher.school = school teacher.is_admin = True teacher.save() messages.success( request, "The school or club '" + teacher.school.name + "' has been successfully added.", ) return HttpResponseRedirect(reverse_lazy("onboarding-classes")) elif "join_organisation" in request.POST: process_join_form( request, teacher, OrganisationJoinForm, OrganisationJoinForm ) else: return process_revoke_request(request, teacher) res = render( request, "portal/teach/onboarding_school.html", {"create_form": create_form, "join_form": join_form, "teacher": teacher}, ) return res
def process_update_school_form(request, school, old_anchor): update_school_form = OrganisationForm( request.POST, user=request.user, current_school=school ) if update_school_form.is_valid(): data = update_school_form.cleaned_data name = data.get("name", "") postcode = data.get("postcode", "") country = data.get("country", "") school.name = name school.postcode = postcode school.country = country error, country, town, lat, lng = lookup_coord(postcode, country) school.town = town school.latitude = lat school.longitude = lng school.save() anchor = "#" messages.success( request, "You have updated the details for your school or club successfully.", ) else: anchor = old_anchor return anchor
def organisation_create(request): increment_count = False teacher = request.user.new_teacher create_form = OrganisationForm(user=request.user) join_form = OrganisationJoinForm() if request.method == 'POST': if 'create_organisation' in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '').upper() country = data.get('country', '') error, town, lat, lng = '', '0', '0', '0' # lookup_coord(postcode, country) school = School.objects.create(name=name, postcode=postcode, town=town, latitude=lat, longitude=lng, country=country) teacher.school = school teacher.is_admin = True teacher.save() messages.success( request, "The school or club '" + teacher.school.name + "' has been successfully added.") return HttpResponseRedirect(reverse_lazy('onboarding-classes')) elif 'join_organisation' in request.POST: increment_count = True process_join_form(request, teacher, OrganisationJoinForm, OrganisationJoinForm) else: return process_revoke_request(request, teacher) res = render(request, 'portal/teach/onboarding_school.html', { 'create_form': create_form, 'join_form': join_form, 'teacher': teacher, }) res.count = increment_count return res
def organisation_teacher_view(request, is_admin): teacher = request.user.userprofile.teacher school = teacher.school coworkers = Teacher.objects.filter(school=school).order_by( 'user__user__last_name', 'user__user__first_name') join_requests = Teacher.objects.filter( pending_join_request=school).order_by('user__user__last_name', 'user__user__first_name') form = OrganisationForm(user=request.user, current_school=school) form.fields['name'].initial = school.name form.fields['postcode'].initial = school.postcode form.fields['country'].initial = school.country if request.method == 'POST' and is_admin: form = OrganisationForm(request.POST, user=request.user, current_school=school) if form.is_valid(): data = form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '') country = data.get('country', '') school.name = name school.postcode = postcode school.country = country error, country, town, lat, lng = lookup_coord(postcode, country) school.town = town school.latitude = lat school.longitude = lng school.save() messages.success( request, 'You have updated the details for your school or club successfully.' ) return render( request, 'portal/teach/organisation_manage.html', { 'teacher': teacher, 'is_admin': is_admin, 'coworkers': coworkers, 'join_requests': join_requests, 'form': form, })
def organisation_teacher_view(request, is_admin): teacher = request.user.userprofile.teacher school = teacher.school coworkers = Teacher.objects.filter(school=school).order_by('user__user__last_name', 'user__user__first_name') join_requests = Teacher.objects.filter(pending_join_request=school).order_by('user__user__last_name', 'user__user__first_name') form = OrganisationForm(user=request.user, current_school=school) form.fields['name'].initial = school.name form.fields['postcode'].initial = school.postcode form.fields['country'].initial = school.country if request.method == 'POST' and is_admin: form = OrganisationForm(request.POST, user=request.user, current_school=school) if form.is_valid(): data = form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '') country = data.get('country', '') school.name = name school.postcode = postcode school.country = country error, country, town, lat, lng = lookup_coord(postcode, country) school.town = town school.latitude = lat school.longitude = lng school.save() messages.success(request, 'You have updated the details for your school or club successfully.') return render(request, 'portal/teach/organisation_manage.html', { 'teacher': teacher, 'is_admin': is_admin, 'coworkers': coworkers, 'join_requests': join_requests, 'form': form, })
def process_update_school_form(request, school): update_school_form = OrganisationForm(request.POST, user=request.user, current_school=school) if update_school_form.is_valid(): data = update_school_form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '') country = data.get('country', '') school.name = name school.postcode = postcode school.country = country error, country, town, lat, lng = lookup_coord(postcode, country) school.town = town school.latitude = lat school.longitude = lng school.save() messages.success( request, 'You have updated the details for your school or club successfully.' )
def organisation_create(request): increment_count = False teacher = request.user.new_teacher create_form = OrganisationForm(user=request.user) join_form = OrganisationJoinForm() if request.method == "POST": if "create_organisation" in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get("name", "") postcode = data.get("postcode", "").upper() country = data.get("country", "") error, town, lat, lng = ( "", "0", "0", "0", ) # lookup_coord(postcode, country) school = School.objects.create( name=name, postcode=postcode, town=town, latitude=lat, longitude=lng, country=country, ) teacher.school = school teacher.is_admin = True teacher.save() messages.success( request, "The school or club '" + teacher.school.name + "' has been successfully added.", ) return HttpResponseRedirect(reverse_lazy("onboarding-classes")) elif "join_organisation" in request.POST: increment_count = True process_join_form( request, teacher, OrganisationJoinForm, OrganisationJoinForm ) else: return process_revoke_request(request, teacher) res = render( request, "portal/teach/onboarding_school.html", {"create_form": create_form, "join_form": join_form, "teacher": teacher}, ) res.count = increment_count return res
def dashboard_teacher_view(request, is_admin): teacher = request.user.new_teacher school = teacher.school coworkers = Teacher.objects.filter(school=school).order_by( "new_user__last_name", "new_user__first_name") join_requests = Teacher.objects.filter( pending_join_request=school).order_by("new_user__last_name", "new_user__first_name") requests = Student.objects.filter(pending_class_request__teacher=teacher) update_school_form = OrganisationForm(user=request.user, current_school=school) update_school_form.fields["name"].initial = school.name update_school_form.fields["postcode"].initial = school.postcode update_school_form.fields["country"].initial = school.country create_class_form = ClassCreationForm() update_account_form = TeacherEditAccountForm(request.user) update_account_form.fields["title"].initial = teacher.title update_account_form.fields["first_name"].initial = request.user.first_name update_account_form.fields["last_name"].initial = request.user.last_name anchor = "" backup_tokens = check_backup_tokens(request) if request.method == "POST": if can_process_update_school_form(request, is_admin): anchor = "school-details" update_school_form = OrganisationForm(request.POST, user=request.user, current_school=school) anchor = process_update_school_form(request, school, anchor) elif "create_class" in request.POST: anchor = "new-class" create_class_form = ClassCreationForm(request.POST) if create_class_form.is_valid(): created_class = create_class_new(create_class_form, teacher) messages.success( request, "The class '{className}' has been created successfully.". format(className=created_class.name), ) return HttpResponseRedirect( reverse_lazy( "view_class", kwargs={"access_code": created_class.access_code})) else: anchor = "account" update_account_form = TeacherEditAccountForm( request.user, request.POST) changing_email, new_email, anchor = process_update_account_form( request, teacher, anchor) if changing_email: logout(request) messages.success( request, "Your account details have been successfully changed. Your email " "will be changed once you have verified it, until then you can " "still log in with your old email.", ) return render( request, "portal/email_verification_needed.html", { "userprofile": teacher.user, "email": new_email }, ) classes = Class.objects.filter(teacher=teacher) return render( request, "portal/teach/dashboard.html", { "teacher": teacher, "classes": classes, "is_admin": is_admin, "coworkers": coworkers, "join_requests": join_requests, "requests": requests, "update_school_form": update_school_form, "create_class_form": create_class_form, "update_account_form": update_account_form, "anchor": anchor, "backup_tokens": backup_tokens, }, )
def organisation_create(request): increment_count = False limits = getattr(request, 'limits', { 'ip': [0] }) captcha_limit = 5 using_captcha = (limits['ip'][0] > captcha_limit) should_use_captcha = (limits['ip'][0] >= captcha_limit) OrganisationJoinFormWithCaptcha = partial(create_form_subclass_with_recaptcha(OrganisationJoinForm, recaptcha_client), request) InputOrganisationJoinForm = OrganisationJoinFormWithCaptcha if using_captcha else OrganisationJoinForm OutputOrganisationJoinForm = OrganisationJoinFormWithCaptcha if should_use_captcha else OrganisationJoinForm teacher = request.user.userprofile.teacher create_form = OrganisationForm(user=request.user) join_form = OutputOrganisationJoinForm() if request.method == 'POST': if 'create_organisation' in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '') country = data.get('country', '') error, town, lat, lng = '', '0', '0', '0' #lookup_coord(postcode, country) school = School.objects.create( name=name, postcode=postcode, town = town, latitude = lat, longitude = lng, country=country) teacher.school = school teacher.is_admin = True teacher.save() messages.success(request, "The school or club '" + teacher.school.name + "' has been successfully added.") return HttpResponseRedirect(reverse_lazy('teacher_home')) elif 'join_organisation' in request.POST: increment_count = True join_form = InputOrganisationJoinForm(request.POST) if join_form.is_valid(): school = get_object_or_404(School, id=join_form.cleaned_data['chosen_org']) teacher.pending_join_request = school teacher.save() emailMessage = emailMessages.joinRequestPendingEmail(request, teacher.user.user.email) for admin in Teacher.objects.filter(school=school, is_admin=True): send_email(NOTIFICATION_EMAIL, [admin.user.user.email], emailMessage['subject'], emailMessage['message']) emailMessage = emailMessages.joinRequestSentEmail(request, school.name) send_email(NOTIFICATION_EMAIL, [teacher.user.user.email], emailMessage['subject'], emailMessage['message']) messages.success(request, 'Your request to join the school or club has been sent successfully.') else: join_form = OutputOrganisationJoinForm(request.POST) elif 'revoke_join_request' in request.POST: teacher.pending_join_request = None teacher.save() messages.success(request, 'Your request to join the school or club has been revoked successfully.') res = render(request, 'portal/teach/organisation_create.html', { 'create_form': create_form, 'join_form': join_form, 'teacher': teacher, }) res.count = increment_count return res
def organisation_create(request): increment_count = False limits = getattr(request, 'limits', {'ip': [0]}) captcha_limit = 5 using_captcha = (limits['ip'][0] > captcha_limit) should_use_captcha = (limits['ip'][0] >= captcha_limit) OrganisationJoinFormWithCaptcha = partial( create_form_subclass_with_recaptcha(OrganisationJoinForm, recaptcha_client), request) InputOrganisationJoinForm = OrganisationJoinFormWithCaptcha if using_captcha else OrganisationJoinForm OutputOrganisationJoinForm = OrganisationJoinFormWithCaptcha if should_use_captcha else OrganisationJoinForm teacher = request.user.userprofile.teacher create_form = OrganisationForm(user=request.user) join_form = OutputOrganisationJoinForm() if request.method == 'POST': if 'create_organisation' in request.POST: create_form = OrganisationForm(request.POST, user=request.user) if create_form.is_valid(): data = create_form.cleaned_data name = data.get('name', '') postcode = data.get('postcode', '') country = data.get('country', '') error, town, lat, lng = '', '0', '0', '0' #lookup_coord(postcode, country) school = School.objects.create(name=name, postcode=postcode, town=town, latitude=lat, longitude=lng, country=country) teacher.school = school teacher.is_admin = True teacher.save() messages.success( request, "The school or club '" + teacher.school.name + "' has been successfully added.") return HttpResponseRedirect(reverse_lazy('teacher_home')) elif 'join_organisation' in request.POST: increment_count = True join_form = InputOrganisationJoinForm(request.POST) if join_form.is_valid(): school = get_object_or_404( School, id=join_form.cleaned_data['chosen_org']) teacher.pending_join_request = school teacher.save() emailMessage = emailMessages.joinRequestPendingEmail( request, teacher.user.user.email) for admin in Teacher.objects.filter(school=school, is_admin=True): send_email(NOTIFICATION_EMAIL, [admin.user.user.email], emailMessage['subject'], emailMessage['message']) emailMessage = emailMessages.joinRequestSentEmail( request, school.name) send_email(NOTIFICATION_EMAIL, [teacher.user.user.email], emailMessage['subject'], emailMessage['message']) messages.success( request, 'Your request to join the school or club has been sent successfully.' ) else: join_form = OutputOrganisationJoinForm(request.POST) elif 'revoke_join_request' in request.POST: teacher.pending_join_request = None teacher.save() messages.success( request, 'Your request to join the school or club has been revoked successfully.' ) res = render(request, 'portal/teach/organisation_create.html', { 'create_form': create_form, 'join_form': join_form, 'teacher': teacher, }) res.count = increment_count return res
def dashboard_teacher_view(request, is_admin): teacher = request.user.new_teacher school = teacher.school coworkers = Teacher.objects.filter(school=school).order_by( 'new_user__last_name', 'new_user__first_name') join_requests = Teacher.objects.filter( pending_join_request=school).order_by('new_user__last_name', 'new_user__first_name') requests = Student.objects.filter(pending_class_request__teacher=teacher) update_school_form = OrganisationForm(user=request.user, current_school=school) update_school_form.fields['name'].initial = school.name update_school_form.fields['postcode'].initial = school.postcode update_school_form.fields['country'].initial = school.country create_class_form = ClassCreationForm() update_account_form = TeacherEditAccountForm(request.user) update_account_form.fields['title'].initial = teacher.title update_account_form.fields['first_name'].initial = request.user.first_name update_account_form.fields['last_name'].initial = request.user.last_name anchor = '' backup_tokens = check_backup_tokens(request) if can_process_forms(request, is_admin): if 'update_school' in request.POST: anchor = 'school-details' update_school_form = OrganisationForm(request.POST, user=request.user, current_school=school) anchor = process_update_school_form(request, school, anchor) elif 'create_class' in request.POST: anchor = 'new-class' create_class_form = ClassCreationForm(request.POST) if create_class_form.is_valid(): created_class = create_class_new(create_class_form, teacher) messages.success( request, "The class '{className}' has been created successfully.". format(className=created_class.name)) return HttpResponseRedirect( reverse_lazy( 'view_class', kwargs={'access_code': created_class.access_code})) else: anchor = 'account' update_account_form = TeacherEditAccountForm( request.user, request.POST) changing_email, new_email, anchor = process_update_account_form( request, teacher, anchor) if changing_email: logout(request) messages.success( request, 'Your account details have been successfully changed. Your email will be changed once you have verified it, until then you can still log in with your old email.' ) return render(request, 'portal/email_verification_needed.html', { 'userprofile': teacher.user, 'email': new_email }) classes = Class.objects.filter(teacher=teacher) return render( request, 'portal/teach/dashboard.html', { 'teacher': teacher, 'classes': classes, 'is_admin': is_admin, 'coworkers': coworkers, 'join_requests': join_requests, 'requests': requests, 'update_school_form': update_school_form, 'create_class_form': create_class_form, 'update_account_form': update_account_form, 'anchor': anchor, 'backup_tokens': backup_tokens, })
def dashboard_teacher_view(request, is_admin): teacher = request.user.new_teacher school = teacher.school coworkers = Teacher.objects.filter(school=school).order_by( 'new_user__last_name', 'new_user__first_name') join_requests = Teacher.objects.filter( pending_join_request=school).order_by('new_user__last_name', 'new_user__first_name') update_school_form = OrganisationForm(user=request.user, current_school=school) update_school_form.fields['name'].initial = school.name update_school_form.fields['postcode'].initial = school.postcode update_school_form.fields['country'].initial = school.country create_class_form = ClassCreationForm() update_account_form = TeacherEditAccountForm(request.user) update_account_form.fields['title'].initial = teacher.title update_account_form.fields['first_name'].initial = request.user.first_name update_account_form.fields['last_name'].initial = request.user.last_name anchor = '' if can_process_forms(request, is_admin): if 'update_school' in request.POST: anchor = 'school-details' update_school_form = OrganisationForm(request.POST, user=request.user, current_school=school) process_update_school_form(request, school) elif 'create_class' in request.POST: anchor = 'new-class' create_class_form = ClassCreationForm(request.POST) process_create_class_form(request, teacher) else: anchor = 'account' update_account_form = TeacherEditAccountForm( request.user, request.POST) changing_email, new_email = process_update_account_form( request, teacher) if changing_email: logout(request) messages.success( request, 'Your account details have been successfully changed. Your email will be changed once you have verified it, until then you can still log in with your old email.' ) return render(request, 'redesign/email_verification_needed_new.html', { 'userprofile': teacher.user, 'email': new_email }) classes = Class.objects.filter(teacher=teacher) return render( request, 'redesign/teach_new/dashboard.html', { 'teacher': teacher, 'classes': classes, 'is_admin': is_admin, 'coworkers': coworkers, 'join_requests': join_requests, 'update_school_form': update_school_form, 'create_class_form': create_class_form, 'update_account_form': update_account_form, 'anchor': anchor, })