fix: deduplicate role profiles
This commit is contained in:
parent
f609025472
commit
bfa1aebcc6
2 changed files with 13 additions and 6 deletions
|
|
@ -163,6 +163,7 @@ class User(Document):
|
||||||
self.set_full_name()
|
self.set_full_name()
|
||||||
self.check_enable_disable()
|
self.check_enable_disable()
|
||||||
self.ensure_unique_roles()
|
self.ensure_unique_roles()
|
||||||
|
self.ensure_unique_role_profiles()
|
||||||
self.remove_all_roles_for_guest()
|
self.remove_all_roles_for_guest()
|
||||||
self.validate_username()
|
self.validate_username()
|
||||||
self.remove_disabled_roles()
|
self.remove_disabled_roles()
|
||||||
|
|
@ -646,12 +647,18 @@ class User(Document):
|
||||||
self.get("roles").remove(role)
|
self.get("roles").remove(role)
|
||||||
|
|
||||||
def ensure_unique_roles(self):
|
def ensure_unique_roles(self):
|
||||||
exists = []
|
exists = set()
|
||||||
for d in self.get("roles"):
|
for d in list(self.roles):
|
||||||
if (not d.role) or (d.role in exists):
|
if (not d.role) or (d.role in exists):
|
||||||
self.get("roles").remove(d)
|
self.roles.remove(d)
|
||||||
else:
|
exists.add(d.role)
|
||||||
exists.append(d.role)
|
|
||||||
|
def ensure_unique_role_profiles(self):
|
||||||
|
seen = set()
|
||||||
|
for rp in list(self.role_profiles):
|
||||||
|
if rp.role_profile in seen:
|
||||||
|
self.role_profiles.remove(rp)
|
||||||
|
seen.add(rp.role_profile)
|
||||||
|
|
||||||
def validate_username(self):
|
def validate_username(self):
|
||||||
if not self.username and self.is_new() and self.first_name:
|
if not self.username and self.is_new() and self.first_name:
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ def execute():
|
||||||
)
|
)
|
||||||
user_profiles = get_records_to_insert(users)
|
user_profiles = get_records_to_insert(users)
|
||||||
bulk_insert("User Role Profile", user_profiles, ignore_duplicates=True)
|
bulk_insert("User Role Profile", user_profiles, ignore_duplicates=True)
|
||||||
frappe.db.set_value("User", {}, "role_profile_name", None)
|
frappe.db.set_value("User", {}, "role_profile_name", None, update_modified=None)
|
||||||
|
|
||||||
|
|
||||||
def get_records_to_insert(users):
|
def get_records_to_insert(users):
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue