summaryrefslogtreecommitdiff
path: root/src/mailman/interfaces
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman/interfaces')
-rw-r--r--src/mailman/interfaces/preferences.py6
-rw-r--r--src/mailman/interfaces/user.py8
2 files changed, 14 insertions, 0 deletions
diff --git a/src/mailman/interfaces/preferences.py b/src/mailman/interfaces/preferences.py
index 4b5b490cb..84f85820a 100644
--- a/src/mailman/interfaces/preferences.py
+++ b/src/mailman/interfaces/preferences.py
@@ -68,3 +68,9 @@ class IPreferences(Interface):
which means that no preference is specified.
XXX I'm not sure this is the right place to put this.""")
+
+ def absorb(preferences):
+ """Merge these preferences, and then delete them.
+
+ Only this instance's unset preferences (None/NULL) will be imported.
+ """
diff --git a/src/mailman/interfaces/user.py b/src/mailman/interfaces/user.py
index f1932fd7f..bdeccce3f 100644
--- a/src/mailman/interfaces/user.py
+++ b/src/mailman/interfaces/user.py
@@ -109,3 +109,11 @@ class IUser(Interface):
preferences = Attribute(
"""This user's preferences.""")
+
+ def absorb(user):
+ """Merge this user's attributes and memberships, and then delete it.
+
+ In case of conflict, the current user's properties are preserved.
+ If an IAddress is given, the merge will be performed on the addresses'
+ linked user.
+ """