summaryrefslogtreecommitdiff
path: root/Mailman/Cgi/options.py
Commit message (Collapse)AuthorAgeFilesLines
...
* add_error_message(): Don't translate tag if it is the empty string.bwarsaw2001-07-121-1/+4
| | | | Found by Juan Carlos Rey Anaya.
* main(): Fixed the handling of the user's preferred language. Now itbwarsaw2001-06-271-10/+10
| | | | | | | | | is retrieved out of the cgidata early on, so as to catch any new language setting the user is making. Falls back to using the last stored user preference. Also, fixed indentation bug which prevented user's language setting to take effect unless they had set some other option as well.
* Better syslog() calling conventions. Also, don't mark syslog messagesbwarsaw2001-06-271-1/+1
| | | | as translatable.
* options_page(): Toggle off the output of <head><body> tags by settingbwarsaw2001-06-251-0/+5
| | | | | | doc.suppress_head to 1. This is because the output generated from this function comes largely from the options.html template, which includes those tags.
* main(): Better, more consistent error pages, after a suggestion bybwarsaw2001-06-071-12/+25
| | | | | | | | | David Champion (SF patch #401372). add_error_message(): Default tag is now 'Error: ' which was the more commonly used tag. Globally, WEB_HEADERCOLOR => WEB_HEADER_COLOR
* options_page(): Missed an i18n marking. Found by Ousmane Wilane.bwarsaw2001-06-021-1/+1
|
* A considerable rewrite to support many new features, and to obviatebwarsaw2001-05-311-34/+506
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the need for the handle_opts.py script. Specifically, main(): - Do all form processing in this script, and point the form's action back at this script. This is so we don't need handle_opts anymore. - Protect access to this form behind a login screen which also contains a password mail-back button, and a quick unsubscribe (with confirmation) button. - Use the new world order for web authentication, allowing AuthUser, AuthListAdmin, and AuthSiteAdmin to access a user's options page. - Add a "logout" button to the option page, and remove any need to enter passwords once we're at the options page. - Add support for a change-of-address, including the ability to change the membership address globally for all lists the user is a member of (requires confirmation from the new address). - Add support for global change of password. - Add support for global setting of enable/disable flag, and of password reminder flag. - Use IsMember() to test for address membership. Also, we don't need to pass the document background color as an argument anymore. Other colors are no longer hardcoded, but taken from mm_cfg.
* main(): The options.html template now has a field for suppressing thebwarsaw2001-05-251-0/+4
| | | | | | password reminder for this list. Support is added for <mm-dont-get-password-reminder-button> and <mm-get-password-reminder-button> replacements.
* main(): Use a Document() instead of a HeadlessDocument() and set thebwarsaw2001-04-021-2/+2
| | | | background color to white when there's no such member.
* More i18n changes.bwarsaw2001-02-281-17/+29
| | | | | | | | | | | | | | | | | | De-string-module-ification. Fix some _() wrappings to use local variables. At global module scope, set the language to the server's default, until we know which mailing list this request is being made on. main(): Set the document's language to the server's default, until we know which mailing list this request is being made on. Then, once we know the list, set the system and document languages to the list's preferred, until we know the user making the request. Finally, once we've got the user, set the system and document languages to the user's preferred. (get rid of os.environ['LANG'] settings)
* jcrey's latest round of I18N changes.bwarsaw2000-12-261-2/+8
|
* First round integration of Juan Carlos's translatable string markings.bwarsaw2000-12-071-15/+15
|
* Fixes for a minor local security hole. Some of the CGI scripts couldbwarsaw2000-09-291-8/+2
| | | | | | | | | | | bomb with tracebacks if PATH_INFO environment variable wasn't defined. Fixed this by making them all use Utils.GetPathPieces() and "doing something sensible" when that returned a false value. Also, edithtml is now hidden behind a login screen, so there's no need to enter the list password to edit the html. You can't even get to the list of files to edit unless you've admin authenticated. Closes SF bug #114091, Jitterbug PR# 24.
* main(): Because `/' is legal in RFC822 email addresses, it could showbwarsaw2000-09-111-1/+1
| | | | | | up in the user link. This would be interpreted as additional path components, so we need to join the user name components to get the actual address.
* main(): syslog() call needs log file first argument.bwarsaw2000-06-281-1/+1
|
* Convert all uses of sys.stderr.write() and mlist.LogMsg() to the newbwarsaw2000-06-021-2/+2
| | | | syslog() interface.
* Some meager consistency in handling errors when trying to open thebwarsaw2000-04-041-3/+5
| | | | | | | | | | | | | | mailing list. In all cases, catch the base exception class MMListError, and output HTML indicating the specified list doesn't exist. A more detail message gets printed to logs/error (the str() of the actual exception details). Also: admin.py - Don't catch MMBadConfigError around mlist.parse_matching_header_opt() since this method doesn't ever raise that exception. Actually, that exception isn't raised anywhere in Mailman, so it's been removed.
* Update the copyright lines to include the years 1999 & 2000.bwarsaw2000-03-211-3/+1
|
* AcknowlegePosts => AcknowledgePostsbwarsaw1999-11-241-2/+2
|
* Some general cleanupbwarsaw1999-11-111-30/+35
|
* Sweeping changes to hopefully and finally (for 1.0 at least) make sanebwarsaw1999-03-291-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | address case matching. These changes require the DATA_FILE_VERSION to be bumped, which should auto-update your config.db files. I sure hope this works correctly! Details of changes: MailList.GetUserSubscribedAddress(): New method. If the address is a member, this returns the case-preserved address the user is subscribed with. If not a member, None is returned. MailList.GetUserCanonicalAddress(): New method. If the address is a member, this returns the lowercased address the user is subscribed with. If not a member, None is returned. MailList.FindUser(): Wrote down, in a big comment, the constraints for the dictionaries self.members, self.digest_members, self.passwords. This wasn't always followed, but now it should be. FindUser() is now also guaranteed to return the lowercased version of the subscribed email address. This wasn't always the case. FindUser() also provides a shortcut for the common case. ApprovedAddMember(): Guarantee that passwords stored in self.passwords are keyed off the lowercased address. Deliverer.MailUserPassword(): Find the user's password using the lowercased version of their address. However, be sure to use their case-preserved address for the recipient of the password email. Digester.SetUserDigest(): Fixed a fairly old bug where a user switching from regular to digest membership (or vice versa) would get their case-preserved address blown away. I don't think there's any way to recover this information, but at least now we properly save it. SecurityManager.ConfirmUserPassword(): Simplified address matching stuff, since we now guarantee that FindUser() will return a lowercased address, and that the passwords dictionary has lowercased keys. FindUser() will return None if the address isn't found, and it also has a built-in shortcut so that the more expensive FindMatchingAddresses() isn't called in the common case. I eliminated the case-insensitive password comparision that Ken rightly questioned in his comment. admin.py: In the list of members, display a member's case-preserved address instead of their lowercased address. Also, obscure the URL in the hyperlink (probably not terribly necessary). handle_opts.py: When the password can't be found (when emailing it), put the address we tried to find in the result message. Makes for better debugging. options.py: Use a better mechanism for finding if the member has a case-preserved address different from their lowercased address.
* Before trying to ObscureEmail the case-preserved username, be surebwarsaw1999-03-091-2/+4
| | | | it's a string.
* handle printing of any case-preserved address differently (put thebwarsaw1999-03-091-2/+7
| | | | whole message as <MM_Case-Preserved-User> replacement).
* Gross and digusting kludge to show the case preserved address for thebwarsaw1999-03-081-65/+68
| | | | | user (if different than their lowercased address). This could be done better if lists didn't have their own copies of options.html :-(
* Password box and button to handle new list-my-subscriptions option.klm1998-12-171-8/+14
|
* This change implements storing list members and digest members ascotton1998-11-191-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dicts instead of lists, which optimizes Utils.FindMatchingAddresses and general membership management, especially for large lists. MailList.py now supplies .GetMembers() and .GetDigestMembers() to supply the data in list form to anything that needs it that way. An new install showed this worked fine with some cursory testing of the cgi's and interactive poking around. A detailed listing of the changes follows: Mailman/Defaults.py.in: change data version to 11 Mailman/Digester.py: initvars now instantiates digest_members as {} instead of [] lines 113-114 and 121-122 now use del This change implements storing list members and digest members as dicts instead of lists, which optimizes Utils.FindMatchingAddresses and general membership management, especially for large lists. MailList.py now supplies .GetMembers() and .GetDigestMembers() to supply the data in list form to anything that needs it that way. Though INSTALL shows up on the changed files section, a diff a few seconds ago didn't show any differences in that file, so I hope nobody changed it in the interim. An new install showed this worked fine with some cursory testing of the cgi's and interactive poking around. A detailed listing of the changes follows: Mailman/Defaults.py.in: change data version to 11 Mailman/Digester.py: initvars now instantiates digest_members as {} instead of [] lines 113-114 and 121-122 now use del list.[digest_]member instead of list.[digest_]members.remove when figuring who to actually send digests to, use list.GetDigestMembers() instead of list.digest_members. Mailman/HTMLFormatter: now uses list.Get[Digest]Members to get subscribers, and length of digested subscribers and regular members MailCommandHandler, SecurityManager,Cgi/handle_opts, Cgi/options: all simple replacements of list.[digest_]members with list.Get[Digest]Members(). Mailman/Cgi/admin.py: mostly simple replacements of list.[digest_]members with the Get..() methods, however, the membership management section now works much quicker and changes digest->nodigest subscriptions via dictionary manipulations. Mailman/versions.py: updates lists to use dicts and changed list.[digest_]members to use the list.Get[Digest]Members() methods. Mailman/Utils.py: added a function "GetPossibleMatchingAddresses" which when fed an address, returns the list of addresses that "smart" address matching would match. changed FindMatchingAddresses(name, list) to use a new signature: FindMatchingAddresses(name, *dicts), where dicts is a list of dictionaries keyed by addresses. Just realized that this would better be FindMatchingAddresses(name, dict, *dicts) so that it enforces atleast 2 args... I'll make that change in a sec. All uses of FindMatchingAddresses have been changed to fit the new arguments. scott ----:**-F1 cvs30458aaa 1:12PM 0.98 Mail (Text Fill)--L59--32%------------------------------------------- ?
* Hookup for umbrella notice.klm1998-10-171-1/+4
|
* options cgi was still lowercasing user's inputted email addresscotton1998-10-141-1/+1
| | | | | | instead of just the domain part. this was preventing some users with caps in their usernames from logging onto the options section scott
* Convert all module names to their new names. Import all modules frombwarsaw1998-06-191-83/+84
| | | | | | | the Mailman package (using the semi-bogus, but quickly implemented from ... import style). main()-ify, but needed a few bogus global decls
* These are the files that used to be in ../cgi, except they no longerviega1998-06-141-0/+125
handle logging to an error file, and no longer import paths. Also, any checks for __main__ have been removed.