summaryrefslogtreecommitdiff
path: root/src/mailman/model/docs/mailinglist.txt
blob: 687f7b39c55585ce7ba0b9961a71fa02d9b77fd6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
=============
Mailing lists
=============

XXX 2010-06-18 BAW: This documentation needs a lot more detail.

The mailing list is a core object in Mailman.  It is uniquely identified in
the system by its posting address, i.e. the email address you would send a
message to in order to post a message to the mailing list.  This must be fully
qualified.

    >>> alpha = create_list('alpha@example.com')
    >>> print alpha.fqdn_listname
    alpha@example.com

The mailing list also has convenient attributes for accessing the list's short
name (i.e. local part) and host name.

    >>> print alpha.list_name
    alpha
    >>> print alpha.host_name
    example.com


Rosters
=======

Mailing list membership is represented by 'rosters'.  Each mailing list has
several rosters of members, representing the subscribers to the mailing list,
the owners, the moderators, and so on.  The rosters are defined by a
membership role.

    >>> from mailman.interfaces.member import MemberRole
    >>> from mailman.testing.helpers import subscribe

    >>> subscribe(alpha, 'Anne')
    >>> subscribe(alpha, 'Bart')
    >>> subscribe(alpha, 'Cris')
    >>> subscribe(alpha, 'Anne', MemberRole.owner)
    >>> subscribe(alpha, 'Dave', MemberRole.owner)
    >>> subscribe(alpha, 'Elle', MemberRole.moderator)

We can retrieve a roster directly...

    >>> for member in alpha.members.members:
    ...     print member.address
    Anne Person <aperson@example.com>
    Bart Person <bperson@example.com>
    Cris Person <cperson@example.com>

...or programmatically.

    >>> roster = alpha.get_roster(MemberRole.member)
    >>> for member in roster.members:
    ...     print member.address
    Anne Person <aperson@example.com>
    Bart Person <bperson@example.com>
    Cris Person <cperson@example.com>

This includes the roster of owners...

    >>> roster = alpha.get_roster(MemberRole.owner)
    >>> for member in roster.members:
    ...     print member.address
    Anne Person <aperson@example.com>
    Dave Person <dperson@example.com>

...and moderators.

    >>> roster = alpha.get_roster(MemberRole.moderator)
    >>> for member in roster.members:
    ...     print member.address
    Elle Person <eperson@example.com>