diff options
| author | J08nY | 2017-08-07 19:00:49 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-07 19:00:49 +0200 |
| commit | ee9da27283ffb7adc836f764f1442cd06e3fb2a5 (patch) | |
| tree | 2b687f39714580b1de70baf9e3dd9957326c4989 /src/mailman/model/mailinglist.py | |
| parent | d107fd41f03b57f7731b60bb7ba921febc3ce3b9 (diff) | |
| parent | b902d7858d8302d248add89a5983c521c3581c4c (diff) | |
| download | mailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.tar.gz mailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.tar.zst mailman-ee9da27283ffb7adc836f764f1442cd06e3fb2a5.zip | |
Diffstat (limited to 'src/mailman/model/mailinglist.py')
| -rw-r--r-- | src/mailman/model/mailinglist.py | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/src/mailman/model/mailinglist.py b/src/mailman/model/mailinglist.py index 2e50575d5..0764be0bb 100644 --- a/src/mailman/model/mailinglist.py +++ b/src/mailman/model/mailinglist.py @@ -34,13 +34,15 @@ from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.mailinglist import ( DMARCMitigateAction, IAcceptableAlias, IAcceptableAliasSet, IHeaderMatch, IHeaderMatchList, IListArchiver, IListArchiverSet, - IMailingList, Personalization, ReplyToMunging, SubscriptionPolicy) + IMailingList, Personalization, ReplyToMunging) from mailman.interfaces.member import ( AlreadySubscribedError, MemberRole, MissingPreferredAddressError, SubscriptionEvent) from mailman.interfaces.mime import FilterType from mailman.interfaces.nntp import NewsgroupModeration from mailman.interfaces.user import IUser +from mailman.interfaces.workflows import (ISubscriptionWorkflow, + IUnsubscriptionWorkflow) from mailman.model import roster from mailman.model.digests import OneLastDigest from mailman.model.member import Member @@ -179,11 +181,11 @@ class MailingList(Model): send_goodbye_message = Column(Boolean) send_welcome_message = Column(Boolean) subject_prefix = Column(SAUnicode) - subscription_policy = Column(Enum(SubscriptionPolicy)) + _subscription_policy = Column('subscription_policy', SAUnicode) topics = Column(PickleType) topics_bodylines_limit = Column(Integer) topics_enabled = Column(Boolean) - unsubscription_policy = Column(Enum(SubscriptionPolicy)) + _unsubscription_policy = Column('unsubscription_policy', SAUnicode) # ORM relationships. header_matches = relationship( 'HeaderMatch', backref='mailing_list', @@ -494,6 +496,34 @@ class MailingList(Model): notify(SubscriptionEvent(self, member)) return member + @property + def subscription_policy(self): + return config.workflows[self._subscription_policy] + + @subscription_policy.setter + def subscription_policy(self, value): + if isinstance(value, str): + cls = config.workflows.get(value, None) + else: + cls = value + if (cls is None or not ISubscriptionWorkflow.implementedBy(cls)): + raise ValueError('Invalid subscription policy: {}'.format(value)) + self._subscription_policy = cls.name + + @property + def unsubscription_policy(self): + return config.workflows[self._unsubscription_policy] + + @unsubscription_policy.setter + def unsubscription_policy(self, value): + if isinstance(value, str): + cls = config.workflows.get(value, None) + else: + cls = value + if (cls is None or not IUnsubscriptionWorkflow.implementedBy(cls)): + raise ValueError('Invalid unsubscription policy: {}'.format(value)) + self._unsubscription_policy = cls.name + @public @implementer(IAcceptableAlias) |
