User & Email Queue overrides
Purpose
Section titled “Purpose”Capture User lifecycle customization and Email Queue deletion policy.
Scope in codebase
Section titled “Scope in codebase”leekimerp/leekimerp/override/user.py—OverrideUser(User)leekimerp/leekimerp/override/email_queue.py—OverrideEmailQueue(EmailQueue)+has_role
OverrideUser
Section titled “OverrideUser”| Method | Behavior |
|---|---|
validate_email_type | Skips parent email validation when email == self.name |
validate | Calls super().validate(); requires username and email; for new users or invalid name as email, sets name = username |
validate_rename | Blocks renaming Administrator / Guest; skips email validation for non-email new names |
after_rename | Sets username to new name; preserves email; updates owner / modified_by across tables (large loop over DB tables) |
Risk: after_rename iterates all tables — performance impact on rename in large databases.
OverrideEmailQueue
Section titled “OverrideEmailQueue”| Method | Behavior |
|---|---|
on_trash | Calls prevent_email_queue_delete |
prevent_email_queue_delete | Allows delete only if user is Administrator or has System Manager role |
Entry points
Section titled “Entry points”- Standard User and Email Queue DocType actions in Desk
Dependencies
Section titled “Dependencies”frappe.core.doctype.user.user.User,frappe.email.doctype.email_queue.email_queue.EmailQueue
Operational notes
Section titled “Operational notes”- Email Queue cleanup: only Admins/System Managers can delete rows — align with support procedures.