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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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,
    })
Exemplo n.º 8
0
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
Exemplo n.º 10
0
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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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,
        })
Exemplo n.º 14
0
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,
        })