Note: This is a reduced CHANGES, ommitting details from rc/beta test and
also less interesting minor changes and fixes. It shows changes
relative to 1.6.3 release.
If you want to see full detail, read it there:
http://hg.moinmo.in/moin/1.7/file/76265568e8d3/docs/CHANGES
New Features: ==============================================================
* HINT: we added generic UPDATE instructions as docs/UPDATE.html.
* HINT: Standalone server usage changed:
* Standalone server can now be started via the "moin" script command,
optionally backgrounding itself.
See: moin server standalone --help
* In the toplevel dir, we have renamed moin.py to wikiserver.py (it was
often confused with the moin scripting command).
Now you have:
* wikiserver.py - to start the standalone server
* wikiserverconfig.py - to configure the standalone server
* wikiserverlogging.conf - to configure logging for it (default config
is ok for all day use, but can easily be modified for debugging)
* wikiconfig.py - to configure the wiki engine
* Removed old moin daemonizing script (replaced by moin server standalone
--start/stop)
* We now provide the "moin" script command also for people not using
setup.py, see wiki/server/moin.
* Logging
* New powerful and flexible logging, please see wiki/config/logging/ -
HINT: you have to upgrade your server adaptor script (e.g. moin.cgi)
and load a logging configuration that fits your needs from there, or
alternatively you can also set MOINLOGGINGCONF environment variable
to point at your logging config file.
If you use some of our sample logging configs, make sure you have a
look INTO them to fix e.g. the path of the logfile it will use.
* Moin now logs the path from where it loaded its configuration(s).
* Authentication / Sessions:
* HINT: New authentication plugin system, see HelpOnAuthentication. If
you do not use the builtin default for 'auth' list, you likely have to
change your configuration. See wiki/config/snippets/ for some samples.
* HINT: New session handling system (no moin_session any more, now done
internally and automatically), see HelpOnSessions for details.
* Added OpenID client and server support.
See: HelpOnAuthentication and HelpOnOpenIDProvider.
* cfg.trusted_auth_methods is a list of auth methods that put an
authenticated user into the "Trusted" ACL group.
* User profiles / password recovery / notification:
* New newacount action for creating new user accounts/profiles. If you
don't want users creating new accounts on their own, you can add this
action to actions_excluded list.
* New recoverpass action for password recovery:
If you forgot your password, recoverpass sends you an email with a
password recovery token (NOT the encrypted password) that is valid
for 12 hours.
* New moin account resetpw script for resetting a user's password by
the wiki admin.
* New preferences plugin system, see MoinMoin/userprefs/__init__.py.
* New notification system with an optional jabber notification bot, see
HelpOnNotification. HINT: wiki users have to check their notification
settings, esp. if they want to receive trivial update notifications.
* The diff action now has navigation buttons for prev/next change and also
a revert button to revert to the revision shown below the diff display.
* ThemeBase: support Universal Edit Button, see there for details:
http://universaleditbutton.org/
* ?action=info&max_count=42 - show the last 42 history entries of the page.
max_count has a default of default_count and a upper limit of
limit_max_count - you can configure both in your wiki config:
cfg.history_count = (100, 200) (default_count, limit_max_count) default
* The CSV parser can sniff the delimiter from the first CSV line so other
delimeters than ";" can be used.
* Admonition support. Added styling for tip, note, important, warning
and caution in the modern theme. For more info see HelpOnAdmonitions.
* DocBook-formatter:
* supports HTML entities like → and &9731;
* supports the FootNote macro
* supports bulletless lists
* support for admonitions
* will export the wiki page's edit history as the generated article's
revision history. Doesn't add history of included pages.
* supports for the MoinMoin comment element, though only inline comments
are likely to be valid since the DocBook remark is an inline element.
* New Hits macro: shows the total hits for the page it is used on.
Removed Features: ==========================================================
* HINT: Removed attachments direct serving (cfg.attachments - this was
deprecated since long!). Use AttachFile action to serve attachments.
* Duplicated file attachment upload code was removed from Load action (just
use AttachFile action to deal with attachments).
* Removed 'test' action. If you like to run unit tests, use py.test.
* Removed Login macro.
Bug Fixes: =================================================================
* Better handling of ImportErrors (farmconfig, macros, wikiserverconfig).
* Fix failure of detection of on-disk cache updates.
* Fix traceback in filesys.py on Mac OS X when "import Carbon" fails.
* AttachFile action / file up- and download / zip support:
* WSGI: use wsgi.file_wrapper (or a builtin simple wrapper). Fixes memory
consumption for sending of large file attachments.
* FastCGI: flush often. Fixes memory consumption for sending of large
file attachments.
* Use the open temporary file for receiving file attachment uploads
(fixes big memory consumption for large file uploads).
* Catch runtime errors raised by zipfile stdlib modules when trying to
process a defective zip.
* When unzipping member files, decode their filenames from utf-8 and
replace invalid chars.
* Make error msg less confusing when trying to overwrite a file attachment
without having 'delete' rights.
* HINT: page_*_regex processing had to be changed to fix category search.
If you don't use the builtin (english) defaults, you will have to change
your configuration:
old (default): page_category_regex = u'^Category[A-Z]'
new (default): page_category_regex = ur'(?P<all>Category(?P<key>\S+))'
As you see, the old regex did work for detecting whether a pagename is
a category, but it could not be used to search for a category tag in the
page text. The new regex can be used for both and identifies the complete
category tag (match in group 'all', e.g. "CategoryFoo") as well as the
category key (match in group 'key', e.g. "Foo") by using named regex
groups. \S+ means the category key can be anything non-blank.
If you like to simultaneously support multiple languages, use something
like this: ur'(?P<all>(Kategorie|Category)(?P<key>\S+))'
HINT: after changing your configuration, please rebuild the cache:
* stop moin
* moin ... maint cleancache
* start moin
If you don't do this, your groups / dicts will stop working (and also
your ACLs that use those groups). You better do a test whether it works.
* Xapian search / indexing / stemming:
* Use text/<format> as mimetype for pages.
* Index also major and minor for mimetypes, so it will find 'text' or
'plain' as well as 'text/plain'
* Fix searching for negative terms.
* Improve result list ordering.
* Index filters: redirect stderr to logging system.
* Remove crappy num regex from WikiAnalyzer, improve tokenization.
* Fix AttributeError that happened when trying to access an attribute only
used with xapian search (but regex search is not done by xapian)
* Fix IndexErrors happening when pages are renamed/nuked after the index
was built.
* Fixed indexing of WikiWords (index "WikiWords", "Wiki" and "Words").
* Fix crash if default language is un-stemmable.
* xapian_stemming: removed some strange code (fixes search
title:lowercaseword with xapian_stemming enabled)
* Fixed category indexing (index CategoryFoo correctly as CategoryFoo, not
Foo - for all languages, see page_*_regex change above).
* Builtin search: support mimetype: search for pages for the builtin search
engine (using text/<format>).
* Parser fixes:
* Wiki: fix subscript parsing (was broken for cases like 'a,,1,2,,').
* Docbook: fixed detection of WikiWords.
* All: Add ssh protocol to url_schemas for ssh:... URLs.
* XMLRPC:
* Fix xmlrpc request.read() call to use content-length, if available,
fixes hangs with wsgiref server.
* Wiki xmlrpc getPageInfoVersion() fixed:
* works correctly now for old page versions (was unsupported)
* works correctly now for current page version (reported wrong
data when a page had attachment uploads after the last page
edit)
* returns a Fault if it did not find a edit-log entry
Other Changes: =============================================================
* Using better ACLs and comments on system/help pages now, just taking
away 'write' permission, but using default ACLs for everything else.
* HINT: If you want to use xapian based indexed search, you need to have
Xapian >= 1.0.0 (and you can remove PyStemmer in case you have installed
it just for moin - we now use the stemmer built into Xapian as it
supports utf-8 since 1.0.0).
* Changed default value of cfg.search_results_per_page to 25.
* Surge Protection: If a user is authenticated by a trusted authentication
(see also cfg.auth_methods_trusted) then he/she won't trigger surge
protection, but moin will just log a INFO level log msg with the user's
name so you can find the culprit in case he/she is overusing ressources.
* HINT: Added MyPages and CopyPage to actions_excluded because MyPages
doesn't work without special SecurityPolicy anyway and CopyPage has
questionable behaviour.
* Load action now just creates a new revision of the target page, the
target pagename defaults to the current page name and can be edited.
If the target pagename is empty, moin tries to derive the target pagename
from the uploaded file's name.
Load tries to decode the file contents first using utf-8 coding and, if
that fails, it forces decoding using iso-8859-1 coding (and replacing
invalid characters).
* HINT: cfg.show_login is gone, see code in theme/__init__.py, this may
affect many themes!
* HINT: a new userprefs/ plugin directory will be created by the usual
"moin migration data" command.
* DocBook-formatter:
* generates a valid DOCTYPE
* table support has been improved
* handling of definitions and glossaries is more robust
* supports program language and line numbering in code areas
* HINT: ldap_login behaves a bit different now:
In previous moin versions, ldap_login tended to either successfully
authenticate a user or to completely cancel the whole login process in
any other case (including ldap server down or exceptions happening).
This made subsequent auth list entries rather pointless.
Now it behaves like this:
* user not found in LDAP -> give subsequent auth list entries a
chance to authenticate the user (same happens if it finds multiple
LDAP entries when searching - it logs an additional warning then).
* user found, but wrong password -> cancel login
* ldap server not reachable or other exceptions -> give subsequent
auth list entries a chance
So please make sure that you really trust every auth list entry you have
configured when upgrading or it might maybe change behaviour in a
unexpected or unwanted way.
* ldap_login now supports failover: if it can't contact your LDAP server
(e.g. because it is down or unreachable), it will just continue and
try to authenticate with other authenticators (if there are any in
cfg.auth list). So if you have some mirroring LDAP backup server, just
put another authenticator querying it there:
ldap_auth1 = LDAPAuth(server_uri='ldap://mainserver', ...)
ldap_auth2 = LDAPAuth(server_uri='ldap://backupserver', ...)
auth = [ldap_auth1, ldap_auth2, ]
Developer notes: ===========================================================
* Page.last_edit() is DEPRECATED, please use Page.edit_info().
* Page._last_edited() is GONE (was broken anyway), please use
Page.editlog_entry().
* New request.send_file() call, making it possible to use server-specific
optimizations.
* getText's (aka _()) 'formatted' keyword param (default: True in 1.6 and
early 1.7) was renamed/changed: it is now called 'wiki' and defaults to
False. Example calls:
_('This will NOT get parsed/formatted by MoinMoin!')
_('This will be parsed/formatted by MoinMoin!', wiki=True)
_('This will be used as a left side of percent operator. %s',
wiki=True, percent=True)
* Page.url 'relative' keyword param (default: True in 1.6 and early 1.7)
was changed to default False).
* The themedict no longer contains 'page_user_prefs' and 'user_prefs',
this may affect custom themes.
* The rst-parser's admonition class names are no longer prepended with
"admonition_". Instead the class names are now for example "note"
and not "admonition_note".