1.1 --- a/MoinMessageSupport.py Sun Jun 02 01:34:19 2013 +0200
1.2 +++ b/MoinMessageSupport.py Sun Jun 02 16:17:37 2013 +0200
1.3 @@ -9,9 +9,11 @@
1.4 from MoinMoin.Page import Page
1.5 from MoinMoin.log import getLogger
1.6 from MoinMoin.user import User
1.7 +from MoinMoin import wikiutil
1.8 from MoinSupport import ItemStore, getHeader, getMetadata, getWikiDict, writeHeaders
1.9 -from MoinMessage import GPG, MoinMessageError
1.10 +from MoinMessage import GPG, Message, MoinMessageError
1.11 from email.parser import Parser
1.12 +import time
1.13
1.14 try:
1.15 from cStringIO import StringIO
1.16 @@ -204,7 +206,37 @@
1.17
1.18 "Handle the given message 'content'."
1.19
1.20 - pass
1.21 + request = self.request
1.22 +
1.23 + # Interpret the content as one or more updates.
1.24 +
1.25 + message = Message()
1.26 + message.handle_message(content)
1.27 +
1.28 + # Test any date against the page or message store.
1.29 +
1.30 + if message.date:
1.31 + store_date = time.gmtime(self.store.mtime())
1.32 + page_date = time.gmtime(wikiutil.version2timestamp(self.page.mtime_usecs()))
1.33 + last_date = max(store_date, page_date)
1.34 +
1.35 + # Reject messages older than the page date.
1.36 +
1.37 + if message.date < last_date:
1.38 + writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.39 + request.write("The message is too old: %s versus %s." % (message.date, last_date))
1.40 + return
1.41 +
1.42 + # Reject messages without dates if so configured.
1.43 +
1.44 + elif getattr(request.cfg, "moinmessage_reject_messages_without_dates", True):
1.45 + writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden")
1.46 + request.write("The message has no date information.")
1.47 + return
1.48 +
1.49 + # Handle the message as an object.
1.50 +
1.51 + self.handle_message_object(message)
1.52
1.53 def get_homedir(self):
1.54