def get_user_profile_object(self): user = UserProfile() user.first_name = self.first_name user.last_name = self.last_name user.email = self.email user.password = "******" # clean_fields needs that... return user
def validate(self): user = UserProfile() user.username = self.username user.first_name = self.first_name user.last_name = self.last_name user.email = self.email user.password = "******" # clean_fields needs that... user.clean_fields()
def user_create(request): form = UserForm(request.POST or None, instance=UserProfile()) if form.is_valid(): form.save() messages.success(request, _("Successfully created user.")) return redirect('staff:user_index') else: return render(request, "staff_user_form.html", dict(form=form))
def user_create(request): profile = UserProfile(user=User()) form = UserForm(request.POST or None, instance=profile) if form.is_valid(): #profile.user.save() form.save() messages.add_message(request, messages.INFO, _("Successfully created user.")) if "filter" in request.GET: return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter']) else: return redirect('evap.fsr.views.user_index') else: return render_to_response("fsr_user_form.html", dict(form=form), context_instance=RequestContext(request))
def bulk_update_users(request, user_file_content, test_run): # pylint: disable=too-many-branches,too-many-locals # user_file must have one user per line in the format "{username},{email}" imported_emails = { clean_email(line.decode().split(',')[1]) for line in user_file_content.splitlines() } emails_of_users_to_be_created = [] users_to_be_updated = [] skipped_external_emails_counter = 0 for imported_email in imported_emails: if is_external_email(imported_email): skipped_external_emails_counter += 1 continue try: matching_user = find_matching_internal_user_for_email( request, imported_email) except UserProfile.MultipleObjectsReturned as e: messages.error( request, format_html( _('Multiple users match the email {}:{}'), imported_email, create_user_list_html_string_for_message(e.args[0]))) return False if not matching_user: emails_of_users_to_be_created.append(imported_email) elif matching_user.email != imported_email: users_to_be_updated.append((matching_user, imported_email)) emails_of_non_obsolete_users = set(imported_emails) | { user.email for user, _ in users_to_be_updated } deletable_users, users_to_mark_inactive = [], [] for user in UserProfile.objects.exclude( email__in=emails_of_non_obsolete_users): if user.can_be_deleted_by_manager: deletable_users.append(user) elif user.is_active and user.can_be_marked_inactive_by_manager: users_to_mark_inactive.append(user) messages.info( request, _('The uploaded text file contains {} internal and {} external users. The external users will be ignored. ' '{} users are currently in the database. Of those, {} will be updated, {} will be deleted and {} will be ' 'marked inactive. {} new users will be created.').format( len(imported_emails) - skipped_external_emails_counter, skipped_external_emails_counter, UserProfile.objects.count(), len(users_to_be_updated), len(deletable_users), len(users_to_mark_inactive), len(emails_of_users_to_be_created))) if users_to_be_updated: messages.info( request, format_html( _('Users to be updated are:{}'), format_html_join( '', '<br />{} {} ({} > {})', ((user.first_name, user.last_name, user.email, email) for user, email in users_to_be_updated)))) if deletable_users: messages.info( request, format_html( _('Users to be deleted are:{}'), create_user_list_html_string_for_message(deletable_users))) if users_to_mark_inactive: messages.info( request, format_html( _('Users to be marked inactive are:{}'), create_user_list_html_string_for_message( users_to_mark_inactive))) if emails_of_users_to_be_created: messages.info( request, format_html( _('Users to be created are:{}'), format_html_join( '', '<br />{}', ((email, ) for email in emails_of_users_to_be_created)))) with transaction.atomic(): for user in deletable_users + users_to_mark_inactive: for message in remove_user_from_represented_and_ccing_users( user, deletable_users + users_to_mark_inactive, test_run): messages.warning(request, message) if test_run: messages.info(request, _('No data was changed in this test run.')) else: for user in deletable_users: user.delete() for user in users_to_mark_inactive: user.is_active = False user.save() for user, email in users_to_be_updated: user.email = email user.save() userprofiles_to_create = [] for email in emails_of_users_to_be_created: userprofiles_to_create.append(UserProfile(email=email)) UserProfile.objects.bulk_create(userprofiles_to_create) messages.success(request, _('Users have been successfully updated.')) return True