def parse(self, entry):
        m = re.search(r'^(.*/([0-9]+))', entry.id)
        if not m:
            log.error("bad entry, %s" % (entry.id, ))
            return None
        url = m.group(1)
        issue = int(m.group(2))
        author = text.abbrevs(entry.author_detail.name)

        assignments = []
        details = entry.content[0].value
        assignment_phrases = [
            r"""(?x)
                (?P<property> [^,>]+ )
                \s set \s to \s
                (?P<value> [^,<]+ \w )
            """,
            r"""(?x)
                (?P<property> [^,>]+ )
                \s changed \s from \s
                (?P<previous_value> [^,<]+ )
                \s to \s
                (?P<value> [^,<]+ \w )
            """,
        ]
        for pattern in assignment_phrases:
            for m in re.finditer(pattern, details):
                normal_form = None
                date_re = r'\d{4}/\d{2}/\d{2}|\(not set\)'
                if re.match(date_re, m.group('value')):
                    pass
                elif re.match(r'Planning - Sprint', m.group('property')):
                    n = re.search(r'(Sprint \d+)', m.group('value'))
                    if n:
                        normal_form = "->" + n.group(1)
                elif 'Deployed' == m.group('value'):
                    normal_form = "*Deployed*"
                else:
                    normal_form = text.abbrevs("{prop} : {value}".format(
                        prop=m.group('property'),
                        value=m.group('value')
                    ))

                if normal_form:
                    assignments.append(normal_form)
        summary = '|'.join(assignments)

        assignment_re = r'(?P<property>[^:>]+): (?P<value>[^<]+)'
        for m in re.finditer(assignment_re, details):
            if m.group('property') == 'Comment added':
                summary = m.group('value')+" "+summary
        for m in re.finditer(r'Description changed', details):
            summary += " " + m.group(0)

        summary = text.strip(summary, truncate=True)

        if summary:
            return "#%d: (%s) %s -- %s" % (issue, author, summary, url)
Example #2
0
    def parse(self, entry):
        m = re.search(r'^(.*/([0-9]+))', entry.id)
        if not m:
            print "bad entry, %s" % (entry.id, )
            return None
        url = m.group(1)
        issue = int(m.group(2))
        author = text.abbrevs(entry.author_detail.name)

        assignments = []
        details = entry.content[0].value
        assignment_phrases = [
            r'(?P<property>[^,>]+) set to (?P<value>[^,<]+\w)',
            r'(?P<property>[^,>]+) changed from (?P<previous_value>[^,<]+) to (?P<value>[^,<]+\w)',
        ]
        for pattern in assignment_phrases:
            for m in re.finditer(pattern, details):
                normal_form = None
                if re.match(r'\d{4}/\d{2}/\d{2}|\(not set\)',
                            m.group('value')):
                    pass
                elif re.match(r'Planning - Sprint', m.group('property')):
                    n = re.search(r'(Sprint \d+)', m.group('value'))
                    if n:
                        normal_form = "->" + n.group(1)
                elif 'Deployed' == m.group('value'):
                    normal_form = "*Deployed*"
                else:
                    normal_form = text.abbrevs(
                        m.group('property') + " : " + m.group('value'))

                if normal_form:
                    assignments.append(normal_form)
        summary = '|'.join(assignments)

        for m in re.finditer(r'(?P<property>[^:>]+): (?P<value>[^<]+)',
                             details):
            if m.group('property') == 'Comment added':
                summary = m.group('value') + " " + summary
        for m in re.finditer(r'Description changed', details):
            summary += " " + m.group(0)

        summary = text.strip(summary, truncate=True)

        if summary:
            return "#%d: (%s) %s -- %s" % (issue, author, summary, url)
Example #3
0
    def parse(self, entry):
        m = re.search(r"^(.*/([0-9]+))", entry.id)
        if not m:
            print "bad entry, %s" % (entry.id,)
            return None
        url = m.group(1)
        issue = int(m.group(2))
        author = text.abbrevs(entry.author_detail.name)

        assignments = []
        details = entry.content[0].value
        assignment_phrases = [
            r"(?P<property>[^,>]+) set to (?P<value>[^,<]+\w)",
            r"(?P<property>[^,>]+) changed from (?P<previous_value>[^,<]+) to (?P<value>[^,<]+\w)",
        ]
        for pattern in assignment_phrases:
            for m in re.finditer(pattern, details):
                normal_form = None
                if re.match(r"\d{4}/\d{2}/\d{2}|\(not set\)", m.group("value")):
                    pass
                elif re.match(r"Planning - Sprint", m.group("property")):
                    n = re.search(r"(Sprint \d+)", m.group("value"))
                    if n:
                        normal_form = "->" + n.group(1)
                elif "Deployed" == m.group("value"):
                    normal_form = "*Deployed*"
                else:
                    normal_form = text.abbrevs(m.group("property") + " : " + m.group("value"))

                if normal_form:
                    assignments.append(normal_form)
        summary = "|".join(assignments)

        for m in re.finditer(r"(?P<property>[^:>]+): (?P<value>[^<]+)", details):
            if m.group("property") == "Comment added":
                summary = m.group("value") + " " + summary
        for m in re.finditer(r"Description changed", details):
            summary += " " + m.group(0)

        summary = text.strip(summary, truncate=True)

        if summary:
            return "#%d: (%s) %s -- %s" % (issue, author, summary, url)
    def parse(self, entry):
        m = re.search(r'(CRM-[0-9]+)$', entry.link)
        if (not m) or (entry.generator_detail.href != self.base_url):
            return
        issue = m.group(1)
        if 'content' in entry:
            details = entry.content[0].value
            assignment_phrases = [
                r"Changed the (?P<property>[^']+) to '(?P<value>[^']+)'",
                r"Added the (?P<property>[^']+) '(?P<value>[^']+)'",
                r"Removed the (?P<property>[^']+) '(?P<previous_value>[^']+)'",
            ]
            assignments = dict()
            to_strip = []
            for pattern in assignment_phrases:
                for m in re.finditer(pattern, details):
                    # if 'previous_value' in m.groupdict():
                    #     normal_form = "%s:%s->%s" %
                    #       (text.abbrevs(m.group('property')),
                    #       m.group("previous_value"), m.group('value'))
                    # else:
                    if 'value' in m.groupdict():
                        prop = text.abbrevs(m.group('property'))
                        assignments[prop] = m.group('value')

                    to_strip.append(m.group(0))

            revs = set()
            for m in re.finditer(r'r=(\d+)', details):
                revs.add(", r"+m.group(1))

            pairs = ["%s:%s" % (k, v) for k, v in assignments.items()]
            normal_form_assignments = "|".join(pairs)
            for p in to_strip:
                details = details.replace(p, "")

            summary = "{assignments} {revs} {details}".format(
                assignments=normal_form_assignments,
                revs="".join(revs),
                details=details
            )

        else:
            summary = entry.summary
        summary = text.strip(summary, truncate=True)
        url = "%s/browse/%s" % (self.base_url, issue)

        return "%s: %s %s -- %s" % (entry.usr_username, issue, summary, url)
Example #5
0
    def parse(self, entry):
        m = re.search(r'(CRM-[0-9]+)$', entry.link)
        if (not m) or (entry.generator_detail.href != self.base_url):
            return
        issue = m.group(1)
        if 'content' in entry:
            details = entry.content[0].value
            assignment_phrases = [
                r"Changed the (?P<property>[^']+) to '(?P<value>[^']+)'",
                r"Added the (?P<property>[^']+) '(?P<value>[^']+)'",
                r"Removed the (?P<property>[^']+) '(?P<previous_value>[^']+)'",
            ]
            assignments = dict()
            to_strip = []
            for pattern in assignment_phrases:
                for m in re.finditer(pattern, details):
                    #if 'previous_value' in m.groupdict():
                    #    normal_form = "%s:%s->%s" % (text.abbrevs(m.group('property')), m.group("previous_value"), m.group('value'))
                    #else:
                    if 'value' in m.groupdict():
                        assignments[text.abbrevs(
                            m.group('property'))] = m.group('value')

                    to_strip.append(m.group(0))

            revs = set()
            for m in re.finditer(r'r=(\d+)', details):
                revs.add(", r" + m.group(1))

            normal_form_assignments = "|".join(
                ["%s:%s" % (k, v) for k, v in assignments.items()])
            for p in to_strip:
                details = details.replace(p, "")

            summary = "%s %s %s" % (normal_form_assignments, "".join(revs),
                                    details)

        else:
            summary = entry.summary
        summary = text.strip(summary, truncate=True)
        url = "%s/browse/%s" % (self.base_url, issue)

        return "%s: %s %s -- %s" % (entry.usr_username, issue, summary, url)