# Copyright (C) 2006-2009 by the Free Software Foundation, Inc.
#
# This file is part of GNU Mailman.
#
# GNU Mailman is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# GNU Mailman is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# GNU Mailman. If not, see .
"""Model for preferences."""
from __future__ import absolute_import, unicode_literals
__metaclass__ = type
__all__ = [
'Preferences',
]
from storm.locals import *
from zope.interface import implements
from mailman.config import config
from mailman.database.model import Model
from mailman.database.types import Enum
from mailman.interfaces.preferences import IPreferences
class Preferences(Model):
implements(IPreferences)
id = Int(primary=True)
acknowledge_posts = Bool()
hide_address = Bool()
_preferred_language = Unicode(name='preferred_language')
receive_list_copy = Bool()
receive_own_postings = Bool()
delivery_mode = Enum()
delivery_status = Enum()
def __repr__(self):
return ''.format(id(self))
@property
def preferred_language(self):
if self._preferred_language is None:
return None
return config.languages[self._preferred_language]
@preferred_language.setter
def preferred_language(self, language):
if language is None:
self._preferred_language = None
# Accept both a language code and a `Language` instance.
try:
self._preferred_language = language.code
except AttributeError:
self._preferred_language = language