~msapiro/mailman/topics

« back to all changes in this revision

Viewing changes to Mailman/Archiver/pipermail.py

  • Committer: Mark Sapiro
  • Date: 2010-07-03 20:56:47 UTC
  • mfrom: (1006.3.2 2.2)
  • mto: (1006.1.254 2.2)
  • mto: This revision was merged to the branch mainline in revision 1022.
  • Revision ID: mark@msapiro.net-20100703205647-rdmmmctwensqq10v
Merged optional Sender: header feature from lp:~mss/mailman/2.2-sender-header.

Show diffs side-by-side

added added

removed removed

Lines of Context:
122
122
        parentID = article.parentID
123
123
        if parentID is not None and self.articleIndex.has_key(parentID):
124
124
            parent = self.getArticle(archive, parentID)
125
 
            myThreadKey = parent.threadKey + article.date + '-'
 
125
            myThreadKey = (parent.threadKey + article.date + '.'
 
126
                           + str(article.sequence) + '-')
126
127
        else:
127
 
            myThreadKey = article.date + '-'
 
128
            myThreadKey = article.date + '.' + str(article.sequence) + '-'
128
129
        article.threadKey = myThreadKey
129
130
        key = myThreadKey, article.msgid
130
131
        self.setThreadKey(archive, key, article.msgid)
418
419
                else:
419
420
                    parent = self.database.getArticle(self.archive,
420
421
                                                    article.parentID)
421
 
                    article.threadKey = parent.threadKey+article.date+'-'
 
422
                    article.threadKey = (parent.threadKey + article.date + '.'
 
423
                                         + str(article.sequence) + '-')
422
424
                self.database.setThreadKey(self.archive,
423
425
                    (article.threadKey, article.msgid),
424
426
                    msgid)
632
634
            article.parentID = parentID = self.get_parent_info(arch, article)
633
635
            if parentID:
634
636
                parent = self.database.getArticle(arch, parentID)
635
 
                article.threadKey = parent.threadKey + article.date + '-'
 
637
                article.threadKey = (parent.threadKey + article.date + '.'
 
638
                                     + str(article.sequence) + '-')
636
639
            else:
637
 
                article.threadKey = article.date + '-'
 
640
                article.threadKey = (article.date + '.'
 
641
                                     + str(article.sequence) + '-')
638
642
            key = article.threadKey, article.msgid
639
643
 
640
644
            self.database.setThreadKey(arch, key, article.msgid)
647
651
    def get_parent_info(self, archive, article):
648
652
        parentID = None
649
653
        if article.in_reply_to:
650
 
            parentID = article.in_reply_to
651
 
        elif article.references:
 
654
            if self.database.hasArticle(archive, article.in_reply_to):
 
655
                # Only use In-Reply-To if it's in the archive.
 
656
                parentID = article.in_reply_to
 
657
        if not parentID and article.references:
652
658
            refs = self._remove_external_references(article.references)
653
659
            if refs:
654
660
                maxdate = self.database.getArticle(archive, refs[0])
657
663
                    if a.date > maxdate.date:
658
664
                        maxdate = a
659
665
                parentID = maxdate.msgid
660
 
        else:
 
666
        if not parentID:
661
667
            # Get the oldest article with a matching subject, and
662
668
            # assume this is a follow-up to that article
663
 
            parentID = self.database.getOldestArticle(archive,
664
 
                                                      article.subject)
 
669
            # But, use the subject that's in the database
 
670
            if article.decoded.has_key('stripped'):
 
671
                subject = article.decoded['stripped'].lower()
 
672
            else:
 
673
                subject = article.subject.lower()
 
674
            parentID = self.database.getOldestArticle(archive, subject)
665
675
 
666
676
        if parentID and not self.database.hasArticle(archive, parentID):
667
677
            parentID = None