# HG changeset patch # User Paul Boddie # Date 1370182657 -7200 # Node ID 5e7b6b9bb9dd6059259b6c8d1543806cb68d5058 # Parent 88cad9ae0c19064fc7ac8a6a5658f193a97f7456 Moved timestamp checking of messages into the support module. diff -r 88cad9ae0c19 -r 5e7b6b9bb9dd MoinMessageSupport.py --- a/MoinMessageSupport.py Sun Jun 02 01:34:19 2013 +0200 +++ b/MoinMessageSupport.py Sun Jun 02 16:17:37 2013 +0200 @@ -9,9 +9,11 @@ from MoinMoin.Page import Page from MoinMoin.log import getLogger from MoinMoin.user import User +from MoinMoin import wikiutil from MoinSupport import ItemStore, getHeader, getMetadata, getWikiDict, writeHeaders -from MoinMessage import GPG, MoinMessageError +from MoinMessage import GPG, Message, MoinMessageError from email.parser import Parser +import time try: from cStringIO import StringIO @@ -204,7 +206,37 @@ "Handle the given message 'content'." - pass + request = self.request + + # Interpret the content as one or more updates. + + message = Message() + message.handle_message(content) + + # Test any date against the page or message store. + + if message.date: + store_date = time.gmtime(self.store.mtime()) + page_date = time.gmtime(wikiutil.version2timestamp(self.page.mtime_usecs())) + last_date = max(store_date, page_date) + + # Reject messages older than the page date. + + if message.date < last_date: + writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden") + request.write("The message is too old: %s versus %s." % (message.date, last_date)) + return + + # Reject messages without dates if so configured. + + elif getattr(request.cfg, "moinmessage_reject_messages_without_dates", True): + writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden") + request.write("The message has no date information.") + return + + # Handle the message as an object. + + self.handle_message_object(message) def get_homedir(self): diff -r 88cad9ae0c19 -r 5e7b6b9bb9dd actions/PostMessage.py --- a/actions/PostMessage.py Sun Jun 02 01:34:19 2013 +0200 +++ b/actions/PostMessage.py Sun Jun 02 16:17:37 2013 +0200 @@ -8,11 +8,9 @@ from MoinMoin.Page import Page from MoinMoin.PageEditor import PageEditor -from MoinMoin import wikiutil from MoinSupport import getMetadata, writeHeaders -from MoinMessage import Message, is_collection, to_replace, to_store +from MoinMessage import is_collection, to_replace, to_store from MoinMessageSupport import MoinMessageAction -import time Dependencies = ['pages'] @@ -20,38 +18,12 @@ "A posted message handler." - def handle_message_content(self, content): + def handle_message_object(self, message): - "Handle the given message 'content'." + "Handle the given 'message' object." request = self.request - # Interpret the content as one or more updates. - - message = Message() - message.handle_message(content) - - # Test any date against the page or message store. - - if message.date: - store_date = time.gmtime(self.store.mtime()) - page_date = time.gmtime(wikiutil.version2timestamp(self.page.mtime_usecs())) - last_date = max(store_date, page_date) - - # Reject messages older than the page date. - - if message.date < last_date: - writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden") - request.write("The message is too old: %s versus %s." % (message.date, last_date)) - return - - # Reject messages without dates if so configured. - - elif getattr(request.cfg, "moinmessage_reject_messages_without_dates", True): - writeHeaders(request, "text/plain", getMetadata(self.page), "403 Forbidden") - request.write("The message has no date information.") - return - # Handle each update. for update in message.updates: