diff options
| author | Barry Warsaw | 2016-05-13 18:46:33 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2016-05-13 19:09:07 -0400 |
| commit | 3ed71ffdbc4e0cbb4fc33e0de04eaeea6faae149 (patch) | |
| tree | 8e94b4994d1b343f615f03e021fc6b7c923a851c /src/mailman/model/preferences.py | |
| parent | 8467bb95c9dade901f7c96a5a3adf4d399618a6b (diff) | |
| download | mailman-3ed71ffdbc4e0cbb4fc33e0de04eaeea6faae149.tar.gz mailman-3ed71ffdbc4e0cbb4fc33e0de04eaeea6faae149.tar.zst mailman-3ed71ffdbc4e0cbb4fc33e0de04eaeea6faae149.zip | |
Diffstat (limited to 'src/mailman/model/preferences.py')
| -rw-r--r-- | src/mailman/model/preferences.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/mailman/model/preferences.py b/src/mailman/model/preferences.py index b76499020..71775117f 100644 --- a/src/mailman/model/preferences.py +++ b/src/mailman/model/preferences.py @@ -44,8 +44,6 @@ class Preferences(Model): receive_own_postings = Column(Boolean) delivery_mode = Column(Enum(DeliveryMode)) delivery_status = Column(Enum(DeliveryStatus)) - # When adding new columns, also add them to - # mailman.model.tests.test_preferences.TestPreferences.test_absorb_all_attributes() def __repr__(self): return '<Preferences object at {:#x}>'.format(id(self)) @@ -69,9 +67,13 @@ class Preferences(Model): @dbconnection def absorb(self, store, preferences): """See `IPreferences`.""" - column_names = [c.name for c in self.__table__.columns - if not c.primary_key] - for cname in column_names: - if (getattr(self, cname) is None and - getattr(preferences, cname) is not None): - setattr(self, cname, getattr(preferences, cname)) + if not isinstance(preferences, Preferences): + raise TypeError('Not a preference: {!r}'.format(preferences)) + column_names = [ + column.name for column in self.__table__.columns + if not column.primary_key + ] + for column_name in column_names: + if (getattr(self, column_name) is None and + getattr(preferences, column_name) is not None): + setattr(self, column_name, getattr(preferences, column_name)) |
