def profile_edit(request, user_id):
    if request.user.id <> int(user_id):
        return forbidden(request, "Sorry, but you do not have permissions to edit this profile.")

    profile = request.user.get_profile()
    account_form = AccountForm(instance=request.user)
    profile_form = ProfileEditForm(instance=profile)
    group_notifications_form = GroupNotificationsForm(user=request.user)
    stream_notifications_form = StreamNotificationsForm(user=request.user)

    if request.method == 'POST':
        if "edit_account" in request.POST:
            profile_form = ProfileEditForm(request.POST, instance=profile)
            account_form = AccountForm(request.POST, instance=request.user)
            if profile_form.is_valid() and account_form.is_valid():
                profile_form.save()
                account_form.save()
                messages.add_message(request, messages.SUCCESS, 'Your profile has been updated.')
                return redirect("profile_edit", user_id=request.user.id)
        elif "edit_notifications" in request.POST:
            group_notifications_form = GroupNotificationsForm(user=request.user, data=request.POST)
            stream_notifications_form = StreamNotificationsForm(user=request.user, data=request.POST)
            if group_notifications_form.is_valid() and stream_notifications_form.is_valid():
                group_notifications_form.save()
                stream_notifications_form.save()
                messages.add_message(request, messages.SUCCESS, 'Your notifications have been updated.')
                return redirect("profile_edit", user_id=request.user.id)
        else:
            messages.error(request, 'No action specified.')

    return render_to_response('rah/profile_edit.html', {
        'profile_form': profile_form,
        'account_form': account_form,
        'group_notification_form': group_notifications_form,
        'stream_notification_form': stream_notifications_form,
        'profile': profile,
    }, context_instance=RequestContext(request))
Example #2
0
def profile_edit(request, user_id):
    if request.user.id <> int(user_id):
        return forbidden(
            request,
            "Sorry, but you do not have permissions to edit this profile.")

    profile = request.user.get_profile()
    account_form = AccountForm(instance=request.user)
    profile_form = ProfileEditForm(instance=profile)
    group_notifications_form = GroupNotificationsForm(user=request.user)
    stream_notifications_form = StreamNotificationsForm(user=request.user)

    if request.method == 'POST':
        if "edit_account" in request.POST:
            profile_form = ProfileEditForm(request.POST, instance=profile)
            account_form = AccountForm(request.POST, instance=request.user)
            if profile_form.is_valid() and account_form.is_valid():
                profile_form.save()
                account_form.save()
                messages.add_message(request, messages.SUCCESS,
                                     'Your profile has been updated.')
                return redirect("profile_edit", user_id=request.user.id)
        elif "edit_notifications" in request.POST:
            group_notifications_form = GroupNotificationsForm(
                user=request.user, data=request.POST)
            stream_notifications_form = StreamNotificationsForm(
                user=request.user, data=request.POST)
            if group_notifications_form.is_valid(
            ) and stream_notifications_form.is_valid():
                group_notifications_form.save()
                stream_notifications_form.save()
                messages.add_message(request, messages.SUCCESS,
                                     'Your notifications have been updated.')
                return redirect("profile_edit", user_id=request.user.id)
        else:
            messages.error(request, 'No action specified.')

    return render_to_response('rah/profile_edit.html', {
        'profile_form': profile_form,
        'account_form': account_form,
        'group_notification_form': group_notifications_form,
        'stream_notification_form': stream_notifications_form,
        'profile': profile,
    },
                              context_instance=RequestContext(request))
Example #3
0
def _import_users(request):
    users = []
    has_errors = False

    group = None
    if "group" in request.POST and request.POST['group']:
        try:
            group = Group.objects.get(slug=request.POST['group'])
        except Group.DoesNotExist:
            messages.error(request, "Group '%s' does not exist.")
        
    for key in request.POST.keys():
        if key.startswith("confirm_"):
            counter = key[len("confirm_"):]
            user_data = dict([
                    (i, request.POST["%s_%s" % (i, counter)])
                    for i in "first_name last_name email geom phone language".split()
                    ])
            user_data['password1'] = "password"
            user_form = RegistrationForm(data=user_data)
            profile_form = ProfileEditForm(user_data)

            if user_form.is_valid() and profile_form.is_valid():
                new_user = user_form.save(commit=False)
                new_user.set_unusable_password()
                for attr in ("geom", "language", "phone"):
                    if attr in profile_form.cleaned_data and profile_form.cleaned_data[attr]:
                        setattr(new_user, attr, profile_form.cleaned_data[attr])
                users.append(new_user)
            else:
                has_errors = True
                user_data['errors'] = errors = {}
                errors.update(user_form.errors)
                errors.update(profile_form.errors)
                users.append(user_data)

    if has_errors:
        transaction.rollback()
    else:
        for user in users:
            user.save()
            profile = user.get_profile()
            for attr in ("geom", "language", "phone"):
                if hasattr(user, attr):
                    setattr(profile, attr, getattr(user, attr))
            profile.save()

            if group is not None:
                GroupUsers.objects.create(group=group, user=user, is_manager=False)
                message = ("Added user: <a href='/admin/auth/user/%s/'>%s</a> "
                           "to group <a href='/admin/groups/group/%s/'>%s</a>" % (
                        user.pk, user.get_full_name(), group.pk, group.name))
            else:
                message = ("Added user: <a href='/admin/auth/user/%s/'>%s</a> " % (
                        user.pk, user.get_full_name()))

            ## Now send the new user an email, telling him we created an account
            ## and giving him a link to set a password for his account.
            form = AccountConfirmForm({'email': user.email})
            if form.is_valid():
                form.save(email_template_name='export/user_import_password_reset_email.html',
                          use_https=request.is_secure(),
                          request=request)

            messages.success(request, message)

        return HttpResponseRedirect(".")

    groups = Group.objects.all()
    return render_to_response("export/user_import_preview.html", locals(), context_instance=RequestContext(request))