merge r47140, r47290, r47579 from davisagli-features: fix timezone handling when migrating legacy comments and when indexing
svn path=/plone.app.discussion/trunk/; revision=48358
This commit is contained in:
parent
9d83b4f0e6
commit
636bca745c
@ -4,6 +4,14 @@ Changelog
|
||||
2.0b1 (Unreleased)
|
||||
------------------
|
||||
|
||||
- Fix issue where GMT datetimes were converted into local timezone DateTimes
|
||||
during indexing.
|
||||
[davisagli]
|
||||
|
||||
- Handle timezones correctly while converting dates during the migration of
|
||||
legacy comments.
|
||||
[davisagli]
|
||||
|
||||
- When returning a comment's title, give preference to its title attribute
|
||||
if set.
|
||||
[davisagli]
|
||||
|
@ -15,6 +15,12 @@ from plone.app.discussion.comment import CommentFactory
|
||||
from plone.app.discussion.interfaces import IConversation, IReplies, IComment
|
||||
|
||||
|
||||
def DT2dt(DT):
|
||||
"""Convert a Zope DateTime (with timezone) into a Python datetime (GMT)."""
|
||||
DT = DT.toZone('GMT')
|
||||
return datetime(DT.year(), DT.month(), DT.day(), DT.hour(), DT.minute(), int(DT.second()))
|
||||
|
||||
|
||||
class View(BrowserView):
|
||||
"""Migration View
|
||||
"""
|
||||
@ -78,10 +84,8 @@ class View(BrowserView):
|
||||
if email:
|
||||
comment.author_email = email
|
||||
|
||||
comment.creation_date = datetime.fromtimestamp(
|
||||
reply.creation_date)
|
||||
comment.modification_date = datetime.fromtimestamp(
|
||||
reply.modification_date)
|
||||
comment.creation_date = DT2dt(reply.creation_date)
|
||||
comment.modification_date = DT2dt(reply.modification_date)
|
||||
|
||||
comment.reply_to = in_reply_to
|
||||
|
||||
|
@ -100,7 +100,8 @@ def effective(object):
|
||||
object.creation_date.day,
|
||||
object.creation_date.hour,
|
||||
object.creation_date.minute,
|
||||
object.creation_date.second)
|
||||
object.creation_date.second,
|
||||
'GMT')
|
||||
|
||||
@indexer(IComment)
|
||||
def created(object):
|
||||
@ -110,7 +111,8 @@ def created(object):
|
||||
object.creation_date.day,
|
||||
object.creation_date.hour,
|
||||
object.creation_date.minute,
|
||||
object.creation_date.second)
|
||||
object.creation_date.second,
|
||||
'GMT')
|
||||
|
||||
@indexer(IComment)
|
||||
def modified(object):
|
||||
@ -120,7 +122,8 @@ def modified(object):
|
||||
object.modification_date.day,
|
||||
object.modification_date.hour,
|
||||
object.modification_date.minute,
|
||||
object.modification_date.second)
|
||||
object.modification_date.second,
|
||||
'GMT')
|
||||
|
||||
# Override the conversation indexers for comments
|
||||
|
||||
|
@ -151,11 +151,11 @@ class CommentIndexersTest(PloneTestCase):
|
||||
def test_dates(self):
|
||||
# Test if created, modified, effective etc. are set correctly
|
||||
self.assertEquals(catalog.created(self.comment)(),
|
||||
DateTime(2006, 9, 17, 14, 18, 12))
|
||||
DateTime(2006, 9, 17, 14, 18, 12, 'GMT'))
|
||||
self.assertEquals(catalog.effective(self.comment)(),
|
||||
DateTime(2006, 9, 17, 14, 18, 12))
|
||||
DateTime(2006, 9, 17, 14, 18, 12, 'GMT'))
|
||||
self.assertEquals(catalog.modified(self.comment)(),
|
||||
DateTime(2008, 3, 12, 7, 32, 52))
|
||||
DateTime(2008, 3, 12, 7, 32, 52, 'GMT'))
|
||||
|
||||
def test_searchable_text(self):
|
||||
# Test if searchable text is a concatenation of title and comment text
|
||||
|
@ -47,8 +47,8 @@ class MigrationTest(PloneTestCase):
|
||||
self.doc.talkback.createReply('My Title', 'My Text', Creator='Jim')
|
||||
reply = talkback.getReplies()[0]
|
||||
reply.setReplyTo(self.doc)
|
||||
reply.creation_date = DateTime(2003, 3, 11, 9, 28, 6)
|
||||
reply.modification_date = DateTime(2009, 7, 12, 19, 38, 7)
|
||||
reply.creation_date = DateTime(2003, 3, 11, 9, 28, 6, 'GMT')
|
||||
reply.modification_date = DateTime(2009, 7, 12, 19, 38, 7, 'GMT')
|
||||
self.assertEquals(reply.Title(), 'My Title')
|
||||
self.assertEquals(reply.EditableBody(), 'My Text')
|
||||
self.failUnless('Jim' in reply.listCreators())
|
||||
|
Loading…
Reference in New Issue
Block a user