~barry/mailman/events-and-web

« back to all changes in this revision

Viewing changes to src/mailman/model/domain.py

  • Committer: Barry Warsaw
  • Date: 2012-11-25 20:48:08 UTC
  • Revision ID: barry@list.org-20121125204808-g0pvuil2xq559k4p
Interim commit for refactoring out web-centric logic.

* Use SubscriptionEvent to handle the sending of the welcome message.
* Use ConfirmationNeededEvent to send the confirmation message.
* For now, hard code the adminurl and comment out the listinfo_uri.
* Pend the list-id instead of the fqdn-listname
* Use the new configuration support for Postfix settings.
* Get rid of the IDomain's url_host, base_url, and scheme attributes, as well
  as the confirm_url() method. 
* Get rid of the IMailingList's script_url() method.

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
    id = Int(primary=True)
48
48
 
49
49
    mail_host = Unicode()
50
 
    base_url = Unicode()
51
50
    description = Unicode()
52
51
    contact_address = Unicode()
53
52
 
54
 
    def __init__(self, mail_host,
55
 
                 description=None,
56
 
                 base_url=None,
57
 
                 contact_address=None):
 
53
    def __init__(self, mail_host, description=None, contact_address=None):
58
54
        """Create and register a domain.
59
55
 
60
56
        :param mail_host: The host name for the email interface.
61
57
        :type mail_host: string
62
58
        :param description: An optional description of the domain.
63
59
        :type description: string
64
 
        :param base_url: The optional base url for the domain, including
65
 
            scheme.  If not given, it will be constructed from the
66
 
            `mail_host` using the http protocol.
67
 
        :type base_url: string
68
60
        :param contact_address: The email address to contact a human for this
69
61
            domain.  If not given, postmaster@`mail_host` will be used.
70
62
        :type contact_address: string
71
63
        """
72
64
        self.mail_host = mail_host
73
 
        self.base_url = (base_url
74
 
                         if base_url is not None
75
 
                         else 'http://' + mail_host)
76
65
        self.description = description
77
66
        self.contact_address = (contact_address
78
67
                                if contact_address is not None
79
68
                                else 'postmaster@' + mail_host)
80
69
 
81
70
    @property
82
 
    def url_host(self):
83
 
        """See `IDomain`."""
84
 
        return urlparse(self.base_url).netloc
85
 
 
86
 
    @property
87
 
    def scheme(self):
88
 
        """See `IDomain`."""
89
 
        return urlparse(self.base_url).scheme
90
 
 
91
 
    @property
92
71
    @dbconnection
93
72
    def mailing_lists(self, store):
94
73
        """See `IDomain`."""
98
77
        for mlist in mailing_lists:
99
78
            yield mlist
100
79
 
101
 
    def confirm_url(self, token=''):
102
 
        """See `IDomain`."""
103
 
        return urljoin(self.base_url, 'confirm/' + token)
104
 
 
105
80
    def __repr__(self):
106
81
        """repr(a_domain)"""
107
82
        if self.description is None:
108
 
            return ('<Domain {0.mail_host}, base_url: {0.base_url}, '
 
83
            return ('<Domain {0.mail_host}, '
109
84
                    'contact_address: {0.contact_address}>').format(self)
110
85
        else:
111
86
            return ('<Domain {0.mail_host}, {0.description}, '
112
 
                    'base_url: {0.base_url}, '
113
87
                    'contact_address: {0.contact_address}>').format(self)
114
88
 
115
89
 
119
93
    """Domain manager."""
120
94
 
121
95
    @dbconnection
122
 
    def add(self, store,
123
 
            mail_host,
124
 
            description=None,
125
 
            base_url=None,
126
 
            contact_address=None):
 
96
    def add(self, store, mail_host, description=None, contact_address=None):
127
97
        """See `IDomainManager`."""
128
98
        # Be sure the mail_host is not already registered.  This is probably
129
99
        # a constraint that should (also) be maintained in the database.
131
101
            raise BadDomainSpecificationError(
132
102
                'Duplicate email host: %s' % mail_host)
133
103
        notify(DomainCreatingEvent(mail_host))
134
 
        domain = Domain(mail_host, description, base_url, contact_address)
 
104
        domain = Domain(mail_host, description, contact_address)
135
105
        store.add(domain)
136
106
        notify(DomainCreatedEvent(domain))
137
107
        return domain