~abompard/mailman/bug-1312884

« back to all changes in this revision

Viewing changes to src/mailman/model/docs/mailinglist.rst

  • Committer: Barry Warsaw
  • Date: 2014-11-01 16:49:15 UTC
  • mfrom: (7251.1.38 abhilash)
  • Revision ID: barry@list.org-20141101164915-06wqfmya6wf47n6n
Database
--------
 * The ORM layer, previously implemented with Storm, has been replaced by
   SQLAlchemy, thanks to the fantastic work by Abhilash Raj and Aurélien
   Bompard.  Alembic is now used for all database schema migrations.
 * The new logger `mailman.database` logs any errors at the database layer.

API
---
 * Several changes to the internal API:
   - `IListManager.mailing_lists` is guaranteed to be sorted in List-ID order.
   - `IDomains.mailing_lists` is guaranteed to be sorted in List-ID order.
   - Iteration over domains via the `IDomainManager` is guaranteed to be sorted
     by `IDomain.mail_host` order.
   - `ITemporaryDatabase` interface and all implementations are removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
 
51
51
Both addresses appear on the roster of members.
52
52
 
53
 
    >>> for member in mlist.members.members:
 
53
    >>> from operator import attrgetter
 
54
    >>> sort_key = attrgetter('address.email')
 
55
 
 
56
    >>> for member in sorted(mlist.members.members, key=sort_key):
54
57
    ...     print(member)
55
58
    <Member: aperson@example.com on aardvark@example.com as MemberRole.member>
56
59
    <Member: bperson@example.com on aardvark@example.com as MemberRole.member>
72
75
an owner and a moderator.
73
76
::
74
77
 
75
 
    >>> for member in mlist.owners.members:
 
78
    >>> for member in sorted(mlist.owners.members, key=sort_key):
76
79
    ...     print(member)
77
80
    <Member: aperson@example.com on aardvark@example.com as MemberRole.owner>
78
81
    <Member: cperson@example.com on aardvark@example.com as MemberRole.owner>
87
90
::
88
91
 
89
92
    >>> roster = mlist.get_roster(MemberRole.member)
90
 
    >>> for member in roster.members:
 
93
    >>> for member in sorted(roster.members, key=sort_key):
91
94
    ...     print(member)
92
95
    <Member: aperson@example.com on aardvark@example.com as MemberRole.member>
93
96
    <Member: bperson@example.com on aardvark@example.com as MemberRole.member>
94
97
 
95
98
    >>> roster = mlist.get_roster(MemberRole.owner)
96
 
    >>> for member in roster.members:
 
99
    >>> for member in sorted(roster.members, key=sort_key):
97
100
    ...     print(member)
98
101
    <Member: aperson@example.com on aardvark@example.com as MemberRole.owner>
99
102
    <Member: cperson@example.com on aardvark@example.com as MemberRole.owner>
122
125
    >>> mlist.subscribe(user)
123
126
    <Member: Dave Person <dperson@example.com> on aardvark@example.com
124
127
             as MemberRole.member>
125
 
    >>> for member in mlist.members.members:
 
128
    >>> for member in sorted(mlist.members.members, key=sort_key):
126
129
    ...     print(member)
127
130
    <Member: aperson@example.com on aardvark@example.com as MemberRole.member>
128
131
    <Member: bperson@example.com on aardvark@example.com as MemberRole.member>
133
136
    >>> new_address.verified_on = now()
134
137
    >>> user.preferred_address = new_address
135
138
 
136
 
    >>> for member in mlist.members.members:
 
139
    >>> for member in sorted(mlist.members.members, key=sort_key):
137
140
    ...     print(member)
138
141
    <Member: aperson@example.com on aardvark@example.com as MemberRole.member>
139
142
    <Member: bperson@example.com on aardvark@example.com as MemberRole.member>