Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
email2trac - Integration Trac and GLPI
def ticket_update_by_subject(self, subject):
This list of Re: prefixes is probably incomplete. Taken from
wikipedia. Here is how the subject is matched
- Re: <subject>
- Re: (<Mail list label>:)+ <subject>
So we must have the last column
self.logger.debug('function ticket_update_by_subject')
found_id = None
if self.parameters.ticket_update and self.parameters.ticket_update_by_subject:
SUBJECT_RE = re.compile(r'^(?:(?:RE|AW|VS|SV|FW|FWD):\s*)+(.*)', re.IGNORECASE)
result =
LOG = open('/tmp/log.txt','a')
LOG.write('Coletando emails...: %s\n' % result)
if 'Service Desk #' in subject.encode('utf8'):
result = subject.encode('utf8')
formata = u'[Service Desk #%s]' % (re.findall(r'#(\w+)',result)[0],)
result = formata #formata.encode('utf8')
LOG = open('/tmp/log.txt','a')
LOG.write('formata: %s\n' % formata)
LOG.write('result: %s\n' % result)
if result:
## This is a reply
orig_subject = result if 'Service Desk #' in result else
if 'Service Desk #' in result:
summaries = [orig_subject, '%s%%' % orig_subject]
self.logger.debug('SERVICEDESK subject search string: %s' %(orig_subject))
except TypeError, e:
orig_subject =
summaries = [orig_subject, '%%: %s' % orig_subject]
self.logger.debug('subject search string: %s' %(orig_subject))
cursor = self.db.cursor()
#if 'Service Desk #' in result:
# summaries = [orig_subject, '%s%%' % orig_subject]
# self.logger.debug('SERVICEDESK subject search string: %s' %(orig_subject))
# summaries = [orig_subject, '%%: %s' % orig_subject]
## Time resolution is in micoseconds
search_date = - timedelta(days=self.parameters.ticket_update_by_subject_lookback)
if self.VERSION < 0.12:
lookback = util.datefmt.to_timestamp(search_date)
lookback = util.datefmt.to_utimestamp(search_date)
for summary in summaries:
self.logger.debug('Looking for summary matching: "%s"' % summary)
sql = """SELECT id, reporter FROM ticket
WHERE changetime >= %s AND summary LIKE %s
ORDER BY changetime DESC"""
cursor.execute(sql, [lookback, summary.strip()])
for row in cursor:
(matched_id, sql_reporter) = row
self.logger.debug('ID Ticket: %s' % matched_id)
self.logger.debug('sql_reporter : %s' % sql_reporter)
## Save first entry.
if not found_id:
found_id = matched_id
## If subject and reporter are the same. The we certainly have found the right ticket
if sql_reporter ==
self.logger.debug('Found matching reporter: %s with ticket id: %d' %(sql_reporter, matched_id))
found_id = matched_id
if found_id:
self.logger.debug('Found matching ticket id: %d' % found_id)
found_id = '#%d' % found_id
return (found_id, orig_subject)
# obsolete !?? 12 Aug 2011
#subject = orig_subject
return (found_id, subject)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.