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))
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))
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))