Beispiel #1
0
def about(request):

    page_title = u"My Profile"
    hide_global_notifications = True

    user = request.user
    profile = Profile.objects.get_or_create(user=user)[0]

    form = AboutMeForm(instance=profile)

    if request.method == "POST":
        form = AboutMeForm(request.POST, instance=profile)
        if form.is_valid():
            form.save()
            if request.is_ajax():
                return ajax_form_success(form.success_message)

            return redirect("users:profile")

        else:
            if request.is_ajax():
                return ajax_form_error(form, form.error_message)

            messages.error(request, form.error_message)

    return direct_to_template(request, "users/profile-about.html", locals())
Beispiel #2
0
def roles(request):

    page_title = u"My Profile"
    breadcrumbs = [{"url": reverse("users:profile"), "title": page_title}]
    hide_global_notifications = True

    user = request.user
    profile = Profile.objects.get_or_create(user=user)[0]

    form = RolesForm(instance=profile)
    is_educator = profile.roles.filter(is_educator=True).exists()

    if request.method == "POST":
        form = RolesForm(request.POST, instance=profile)
        if form.is_valid():
            form.save()
            if request.is_ajax():
                return ajax_form_success(form.success_message)

            return redirect("users:profile_about")

        else:
            if request.is_ajax():
                return ajax_form_error(form, form.error_message)

            messages.error(request, form.error_message)

    return direct_to_template(request, "users/profile-roles.html", locals())
Beispiel #3
0
def geography(request):

    page_title = u"My Profile"
    breadcrumbs = [{"url": reverse("users:profile"), "title": page_title}]
    hide_global_notifications = True

    user = request.user
    profile = Profile.objects.get_or_create(user=user)[0]

    country = profile.country
    if not country:
        ip = request.META.get("REMOTE_ADDR", None)
        if ip:
            country = CountryIPDiapason.objects.get_country_by_ip(ip)

    initial = {"country": country, "us_state": profile.us_state}

    is_US = country and country.code == "US"

    form = GeographyForm(instance=profile, initial=initial)

    if request.method == "POST":
        form = GeographyForm(request.POST, instance=profile)
        if form.is_valid():
            form.save()
            if request.is_ajax():
                return ajax_form_success(form.success_message)

            return redirect("users:profile_roles")

        else:
            if request.is_ajax():
                return ajax_form_error(form, form.error_message)

            messages.error(request, form.error_message)

    return direct_to_template(request, "users/profile-geography.html", locals())
Beispiel #4
0
def profile_edit(request):

    user = request.user
    profile = Profile.objects.get_or_create(user=user)[0]

    # If a user has all main fields filled we redirect him
    # to the next not-filled subform
    if "unfilled" in request.GET:
        if user.first_name and user.last_name and user.email:
            if not all([profile.country, profile.connect_with]):
                return redirect("users:profile_geography")
            if profile.country and profile.country.code == "US" and not profile.us_state:
                return redirect("users:profile_geography")
            if not profile.roles.exists():
                return redirect("users:profile_roles")
            if profile.roles.filter(is_educator=True).exists() and \
               (not profile.educator_student_levels.exists() or not profile.educator_subjects.exists()):
                return redirect("users:profile_roles")
            if not all([profile.about_me, profile.website_url,
                        profile.facebook_id, profile.twitter_id,
                        profile.skype_id]):
                return redirect("users:profile_about")

    page_title = u"My Profile"
    hide_global_notifications = True

    user_info_form = UserInfoForm(instance=user)
    change_password_form = ChangePasswordForm()

    if request.method == "POST":

        if "user-info" in request.POST:
            user_info_form = UserInfoForm(request.POST, instance=user)

            if user_info_form.is_valid():
                user_info_form.save()

                if request.is_ajax():
                    return ajax_form_success(user_info_form.success_message)

                return redirect("users:profile_geography")

            else:
                if request.is_ajax():
                    return ajax_form_error(user_info_form, user_info_form.error_message)

                messages.error(request, user_info_form.error_message)

        elif "change-password" in request.POST:
            change_password_form = ChangePasswordForm(request.POST, instance=user)

            if change_password_form.is_valid():
                change_password_form.save()
                body = render_to_string("users/emails/change-password.html",
                                        dict(user=user,
                   new_password=change_password_form.cleaned_data["new_password"],
                   domain=Site.objects.get_current().domain))
                message = EmailMessage(u"OER Commons: Password Changed",
                                       body, to=[user.email])
                message.content_subtype = "html"
                message.send()

                if request.is_ajax():
                    return ajax_form_success(change_password_form.success_message)

                messages.success(request, change_password_form.success_message)
                change_password_form = ChangePasswordForm()

            else:
                if request.is_ajax():
                    return ajax_form_error(change_password_form,
                                           change_password_form.error_message)

                messages.error(request, change_password_form.error_message)

    return direct_to_template(request, "users/profile-edit.html", locals())