| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
| |
when the admin is trying to login with an empty password field.
When WebAuthenticate() fails, check the `adminpw' cgi key to
determine whether this was a login attempt, or the first visit of
this link.
show_requests(): SUBSCRIPTION pending records now include the supplied
user real name (i.e. fullname), so use this when unpacking the
tuple.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and to be able to set/get member's real names. Specifically,
CATEGORIES: Don't hardwire these here. Instead they are extracted via
mlist.GetConfigCategories().
main(): GetMembers() -> getRegularMemberKeys()
get_config_options(): Removed. Use mlist.GetConfigInfo() instead.
show_results(): Don't hardwire sub-categories. Instead get them from
mlist.GetConfigSubCategories().
get_item_gui_value(): Added a new kind of gui widget, the `Topics'
widget which includes at least three boxes (for topic name,
regexp, and description), along with possibly a Delete button, an
Add button, and an "add where" pull down menu.
membership_options(): Instead of using GetMembers() and
GetDigestMembers(), use the new membership API methods
getMembers(), getMemberName(). Also use getMemberOption() instead
of GetUserOption(). In the membership list, add a text box for
the member's real name.
change_option(): We now allow gui components to optionally handle the
form data themselves. If the component has a HandleForm() method,
it is called, passing the MailList object, the cgi form data
structure, and the Document object.
DeleteMember() -> ApprovedDeleteMember()
SetUserDigest() -> setMemberOption(... mm_cfg.Digests, ...)
SetPreferredLanguage() -> setMemberLanguage()
SetUserOption() -> setMemberOption()
Added setMemberName() to set the member's full name.
get_config_options(): Removed.
|
| | |
|
| |
|
|
|
|
| |
is a flag specifying whether pending entries should be removed from
the database or not, and will be used with the revamped confirmation
web ui.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
zero arguments, so we remove the crypted_password parameter. This
means that self.password will be set in MailList instead.
AuthContextInfo(): Instead of getting the user password directly out
of self.passwords, use the API method getMemberPassword() -- which
itself raises MMNotAMemberError if the user isn't a member of the
list.
ChangeUserPassword(): Removed. Use the new setMemberPassword() API
method.
|
| |
|
|
|
|
|
|
|
|
| |
ValidateEmail(): Add `/' to the list of _badchars in email addresses
instead of making it bad only if it points to an existing directory
(!).
ParseAddrs(): Removed since rfc822.parseaddr() now works for all
cases, according to RFC 2822 (but we'll need to supply the rfc822.py
from Python 2.2 now).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetConfigInfo(): Removed. All admin ui gui elements are moved into
components in the Mailman/Gui subdirectory.
All membership related attribute access should use the MemberAdaptor
API instead, e.g.
IsMember() -> isMember()
GetUserOption() -> getMemberOption()
SetUserOption() -> setMemberOption()
Also use ApprovedDeleteMember() instead of DeleteMember().
Deliverer.py:
Remove last vestiges of os.environ['LANG']
Digester.py:
SetUserDigest(): Removed. This is replaced by
OldStyleMemberships's setMemberOption() method when flag ==
mm_cfg.Digests
|
| |
|
|
| |
so the new variables from versions.py will get installed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
don't already have them:
- topics: a list of all admin specified topics
- topics_enabled: a flag specifying whether topics are enabled
- topics_bodylines_limit: the number of lines of the body that the
topic tagger should look for Subject: and Keywords: lines
- one_last_digest: A hold over from an earlier time, this holds
addresses of folks who switched from digest to regular
delivery
- usernames: holds the dictionary of email addresses to Real Names
but if a user has no assigned Real Name, they have no entry in
this dictionary.
|
| |
|
|
|
| |
for storing membership information in the traditional (i.e. MM2.x)
way -- as attributes on the MailList object.
|
| | |
|
| |
|
|
|
| |
This defines the API for membership adaptors, including both the
accessor and mutator methods.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Put logout button in a table cell on the right side of the page
- Redesign the "change your subscription" section so that the address
and realname fields are below the descriptive text, not to the right
of it. Added the real name field. Also, changed the text in the
submit button to read "Change My Address and Name" and make both the
submit button and the "Change Globally" button span both columns.
- Under "Subscription Options", added an entry for the topic filter
selection fields. If the list admin hasn't defined any topics, the
value will be just the label "No topics defined".
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
- main(): use correct variable ('lang', not 'dir') in error message
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
instead let them percolate up to Runner.__oneloop(). Now, the proper
action when an uncaught exception occurs is to shunt the message
instead of trying forever to re-deliver it (possibly causing
logs/error to fill up /very/ quickly).
Shunted messages can always be resent by moving them back to
qfiles/in.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
dictionary interpolation. Since they're coming from the great
unwashed masses, the autoresponse texts could have bogus %()s bits in
them, and using a SafeDict doesn't guard against all kinds of
exceptions.
So, if any exception is caught during interpolation, log it, and use
the raw autoresponse text in the email.
Also, because we're not using the buggy rfc822.py module anymore, we
don't need to special case the situation when the first line of the
autoresponse text has a colon in it.
|
| |
|
|
|
|
|
|
|
|
|
| |
notifying the administrator of the held message), use the list's
preferred_language to get the charset. This fixes the
UnboundLocalError that occurs if dont_respond_to_post_requests and
admin_immed_notify are both true (it shouldn't have been using `lang'
in the first place, since that's the /user's/ preferred language, not
the admin's).
Bug found by Mentor Cana.
|
| |
|
|
| |
Found by Juan Carlos Rey Anaya.
|
| | |
|
| | |
|
| |
|
|
| |
the error code on e.errno, not e.code. Found by Mentor Cana.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
getting mail delivered.
|
| | |
|
| |
|
|
|
|
|
| |
"needs serious attention"? ;)
MMGenerator.py: slightly different color scheme to distinguish it from
the Mailman 2.0 site.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
switches.
|
| |
|
|
|
| |
the text didn't reflect those semantics. I thought they had; this
change must have gotten lost during the templates directory shuffle.
|
| |
|
|
|
|
| |
both marshalled .db files and pickled .pck files (the latter of which
is assumed to be a pickled message object, which is dumped with a
Generator instead of pprint).
|
| |
|
|
|
| |
Also added a note why "mailmanctl restart" doesn't Do The Right Thing
w.r.t. allowing the subrunners to re-import various Mailman modules.
|
| |
|
|
|
|
| |
were sent and the user confirmed (by web click) them both. The first
will delete the member but the second will raise this exception, so do
something more sensible than letting it trickle to the top.
|
| |
|
|
|
|
|
| |
the Subject: header so that it contains just the word "confirm" and
the confirmation cookie. This doesn't lose any important information
(which is still contained in the body of the message), and it helps
for MUAs that like to wrap long Subject: lines.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AddToResponse(): Use augmented assignment where appropriate.
ParseMailCommands(): Set the __noresponse flag to 0 at the top of this
method, so there's no chance that a previously handled command will
mess up sending a response to this command.
ProcessConfirmCmd(): Save the results from ProcessConfirmation() and
check the operation in the first element. If it's a
Pending.SUBSCRIPTION and the mailing list already sends out welcome
messages, then don't send a "succeed" confirmation ourselves.
Also, in the big except clause, catch MMNoSuchUserError which can
happen if the user has made two unsub requests and confirmed them both
(the second will trigger the exception). Do something more sensible
than letting the exception trickle all the way back up. ;)
|