| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
options" button on the listinfo page, it doesn't need to deal with
the UserOptions form key, nor does it need to do the hackishly
disgusting call_script() trick to get options.py invoked.
call_script(): Removed.
|
| |
|
|
|
|
|
|
|
|
|
| |
url or in the form data. In that case, present the login page
with an extra field prompting for the email address. Also,
optionally get the email address out of the form data, if
present. listinfo.html has changed so that it calls this script
directly, with the `email' item holding the address. The login
page uses the same item name, so either will work.
loginpage(): Accept user=None meaning, prompt for the email address.
|
| |
|
|
| |
listinfo.html for parallel change.
|
| |
|
|
|
| |
include the `linktable' at the bottom of the page too. Not too
pretty but it should avoid most scrollbar ping-ponging.
|
| |
|
|
|
|
|
|
|
|
| |
domain. From there you can get to the admin overview.
FormatEditingOption(): Remove the docstring. Also, rework the
glomming up of the text local variable to be more efficient, and
to emphasize that the same field/button should be used to quickly
unsubscribe from the list. Also, indicate what happens if you
leave the field blank.
|
| | |
|
| |
|
|
|
| |
so we can be directed to a different cgi when "Unsubscrib[ing] or
edit[ing] options".
|
| |
|
|
|
| |
header. With mimelib, you must delete any existing headers first
to suppress duplicates.
|
| | |
|
| |
|
|
| |
messages.
|
| | |
|
| |
|
|
| |
the user to cancel their held posting.
|
| |
|
|
|
|
| |
cookie referencing the held request id. Include this cookie in
the postheld.txt message sent to the user. This allows them to
cancel the posting if done before the moderator disposes it.
|
| |
|
|
|
|
|
|
|
| |
explicitly cancel the message via the web confirmation mechanism.
heldmsg_cancel(), heldmsg_confirm(), heldmsg_prompt(): New functions,
slightly misnamed (but retained for consistency).
I.e. "canceling" means "continue awaiting approval" and
"confirming" means "cancel the posting".
|
| | |
|
| |
|
|
|
| |
HandleRequest(): Add a note for later about syncing the held message
db and the confirmation cookie.
|
| |
|
|
| |
Luke Tymowski's Mailman weblog.
|
| | |
|
| | |
|
| |
|
|
| |
changeMemberAddress() instead of hacking on the dicts directly.
|
| |
|
|
| |
API. GetPreferredLanguage() -> getMemberLanguage()
|
| |
|
|
| |
API. GetPreferredLanguage() -> getMemberLanguage()
|
| |
|
|
| |
API. getMemberTopics()
|
| | |
|
| |
|
|
| |
GetPreferredLanguage() -> getMemberLanguage()
|
| |
|
|
|
| |
SetPreferredLanguage() -> setMemberLanguage(); setMemberTopics();
getMemberTopics().
|
| |
|
|
|
|
|
|
|
|
|
|
| |
confirmations. :) Clicking on the emailed confirm url now brings up a
screen which requires the user to /then/ click on an explicit Confirm
button. They can also cancel their requested action.
So far, implemented subscription, unsubscription, and change of
address requests. Eventually this will include posting holds, etc.
Subscription confirmation screen allows them to override some values
they entered in the original request (but not, of course, the email
address!).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetPreferredLanguage() -> getMemberLanguage(). Note this isn't
finished yet since there are still some direct access to
mlist.members. :(
Use the UserDesc helper class.
membership_options(): When calculating the length of the realname
field, include the email addresses. Since this fits in the same
table cell, the text box should be the max of the email addresses
or realnames.
Also, always include the realname TextBox, even if there is no
realname for the user.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
member, er, isn't a member. :)
getMemberOption(), getMemberName(), removeMember(),
changeMemberAddress(), setMemberPassword(), setMemberLanguage(),
setMemberOption(), setMemberName(): Use __assertIsMember().
getMemberLanguage(): If the address isn't a member of the list, return
the list's default language instead of raising an exception.
getMemberTopics(): New API method which returns the list of topics the
member is interested in.
addNewMember(): Raise MMAlreadyAMember if the new member address is,
er, um, already a member. Also, don't use setMemberOption() to
set the mm_cfg.Digests flag because otherwise you'll get an
AlreadyReceivingDigests exception. Set the user_options dict
directly instead.
changeMemberAddress(): Grow a `nodelete' argument, defaulting to 0,
which inhibits the normal deletion of the oldaddress after the
change (used in bin/clone_members). Also, be sure to convert the
fullname from the oldaddress to the newaddress.
setMemberTopics(): New API method which sets the list of topics the
member is interested in.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the list's default language instead of raising an exception.
getMemberTopics(): New API method which returns the list of topics the
member is interested in.
changeMemberAddress(): Grow a `nodelete' argument, defaulting to 0,
which inhibits the normal deletion of the oldaddress after the
change (used in bin/clone_members).
setMemberTopics(): New API method which sets the list of topics the
member is interested in.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetPreferredLanguage() -> getMemberLanguage()
ApprovedChangeMemberAddress(): When changing the addresses globally,
watch out for a list that has the newaddress already subscribed.
Skip it in that case (but there probably should be some way of
reporting this situation back to the caller).
ProcessConfirmation(): Optional argument userdesc_overrides,
defaulting to None, which allows the caller to override parts of
the subscription record. This is used in the confirm screen to,
e.g. override the real name supplied in the original listinfo
subscription request.
Also, use the UserDesc helper class.
When processing a CHANGE_OF_ADDRESS, return both the oldaddr and
the new addr.
SetPreferredLanguage(), GetPreferredLanguage(): Removed. Use the
MemberAdaptor API methods instead.
|
| |
|
|
|
|
|
|
| |
GetPreferredLanguage() -> getMemberLanguage()
ProcessSubscribeCmd(): Update for new AddMember() signature (requires
a UserDesc instance). This still needs to be fixed so that the
real name is extracted from the From: line.
|
| |
|
|
|
|
| |
getMemberLanguage() instead of GetPreferredLanguage().
__handlesubscription(): Use UserDesc convenience class.
|
| | |
|
| | |
|
| |
|
|
| |
GetPreferredLanguage() -> getMemberLanguage()
|
| | |
|
| | |
|
| |
|
|
| |
as the internal name.
|
| |
|
|
| |
ArchiveFileName().
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
updates to acknowledgements, updates to Mailman users.
|
| | |
|
| | |
|