From 581294e9958f18d68f7f5e7ac7ec340407845a0f Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 13 Jul 2020 23:08:34 +0200 Subject: [PATCH 1/4] csv_import: ignore uncommitted users when checking uniqueness (#44805) --- src/authentic2/csv_import.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/authentic2/csv_import.py b/src/authentic2/csv_import.py index be160516..7e682c1c 100644 --- a/src/authentic2/csv_import.py +++ b/src/authentic2/csv_import.py @@ -25,7 +25,7 @@ import attr from django import forms from django.core.exceptions import FieldDoesNotExist from django.core.validators import RegexValidator -from django.db import IntegrityError +from django.db import IntegrityError, models from django.db.transaction import atomic from django.utils import six from django.utils.encoding import force_bytes @@ -370,6 +370,7 @@ class UserCsvImporter(object): self.ou = ou or get_default_ou() self.errors = [] self.csv_importer = CsvImporter() + self.max_user_id = User.objects.aggregate(max=models.Max('id'))['max'] or -1 def parse_csv(): if not self.csv_importer.run(fd_or_str, encoding): @@ -564,7 +565,8 @@ class UserCsvImporter(object): def check_unique_constraints(self, row, unique_map, user=None): ou_users = User.objects.filter(ou=self.ou) - users = User.objects.all() + # ignore new users + users = User.objects.exclude(id__gt=self.max_user_id) if user: users = users.exclude(pk=user.pk) ou_users = ou_users.exclude(pk=user.pk) -- 2.27.0