Revision 21:06babbe78f55

b/TTConfig.py
15 15
    'charset'    : 'utf8',
16 16
}
17 17

  
18
IMAP_server = {
19
    'host'       : 'imap.laposte.net',
20
    'user'       : 'egee.tts@laposte.net',
21
}
18 22

  
19 23
configuration = {
20 24
    'min_keys_parsed' :5,
b/TroubleTicket_db2db.py
16 16
from datetime import datetime
17 17

  
18 18
import imaplib
19
import email
19

  
20
from email import message_from_string
21
from email.header import decode_header
20 22

  
21 23
import TTConfig
22 24
import MySQLdb
23 25

  
24 26
from TroubleTicketParser import *
25 27

  
26
def get_unparsed_emails(cursor, table):
27
    """ A generator for returning unparsed emails."""
28
def get_unparsed_emails_from_imap(server, username, passwd):
29
    """A generator for returning unparsed emails from the IMAP server."""
30
    c = imaplib.IMAP4(server)
31
    c.login(username, passwd)
32
    c.select()
33
    typ, data = c.search(None, 'ALL')
34
    for num in data[0].split():
35
        typ, data = c.fetch(num, '(RFC822)')
36
        for response_part in data:
37
            if isinstance(response_part, tuple):
38
                msg = message_from_string(response_part[1])
39
                header = ""
40
                body = ""
41
                if msg.is_multipart():
42
                    for msg_part in msg.get_payload(decode=True):
43
                        body = body + msg_part.get_payload(decode=True)
44
                else:
45
                    body = msg.get_payload(decode=True)
46
                for header_key in msg.keys():
47
                    header = header + "\n" + header_key + ": " + msg[header_key]
48
                email = {
49
                    'ID': msg['Message-ID'],
50
                    'subject' : decode_header(msg['subject'])[0][0],
51
                    'header'  : header,
52
                    'body'    : body
53
                    }
54
                print email
55
                yield email
56
    c.close()
57
    c.logout()
58
    exit()
59
    
60
def get_unparsed_emails_from_db(cursor, table):
61
    """ A generator for returning unparsed emails from the unnormalised DB."""
28 62
    # Not using the more practical """ string because we want to
29 63
    # be able to add easily the following line for testing:
30 64
    # "AND header like '%grnet%' AND body like '%9966%' "
......
200 234
    TTConfig.TTdb['passwd'] = options.frompass
201 235
    TTConfig.TTdb_v2['passwd'] = options.topass
202 236

  
203
    if options.mail is False:
204
        raw_db = TTConfig.TTdb['db']
205
        try:
206
            db1_conn = MySQLdb.connect(**TTConfig.TTdb)
207
            db1_cursor = db1_conn.cursor()
208
            print "Successfully connected to database " + raw_db
209
        except:
210
            print "Error connecting to database " + raw_db
211
            exit()
212

  
213
#     normalised_db = TTConfig.TTdb_v2['db']
214
#     try:
215
#         db2_conn = MySQLdb.connect(**TTConfig.TTdb_v2)
216
#         print "Successfully connected to database " + normalised_db
217
#     except:
218
#         print "Error connecting to database " + normalised_db
219
#         exit()
237
    normalised_db = TTConfig.TTdb_v2['db']
238
    try:
239
        db2_conn = MySQLdb.connect(**TTConfig.TTdb_v2)
240
        print "Successfully connected to database " + normalised_db
241
    except:
242
        print "Error connecting to database " + normalised_db
243
        exit()
220 244

  
221 245
    emails_table = TTConfig.configuration['table_raw_emails']
222 246

  
......
227 251
    overwrite = 0
228 252
    if options.mail is True:
229 253
        print "Trying to read unparsed tickets from IMAP server..."
230
        M = imaplib.IMAP4("imap.laposte.net")
231
        M.login("egee.tts@laposte.net", "CUTqaxPI")
232
        M.select()
233
        typ, data = M.search(None, 'ALL')
234
        for num in data[0].split():
235
            typ, data = M.fetch(num, '(RFC822)')
236
            for response_part in data:
237
                if isinstance(response_part, tuple):
238
                    msg = email.message_from_string(response_part[1])
239
                    for header in [ 'subject', 'to', 'from' ]:
240
                        print '%-8s: %s' % (header.upper(), msg[header])
241
            break
242
        M.close()
243
        M.logout()
244
        exit()
254
        host = TTConfig.IMAP_server['host']
255
        user = TTConfig.IMAP_server['user']
256
        unparsed_emails = get_unparsed_emails_from_imap(host,
257
                                                        user,
258
                                                        options.frompass)
245 259
    else:
246 260
        print "Trying to read unparsed tickets from " \
247 261
            + str(TTConfig.TTdb['db']) + "..."
248
        unparsed_emails = get_unparsed_emails(db1_cursor, emails_table)
262
        raw_db = TTConfig.TTdb['db']
263
        try:
264
            db1_conn = MySQLdb.connect(**TTConfig.TTdb)
265
            db1_cursor = db1_conn.cursor()
266
            print "Successfully connected to database " + raw_db
267
        except:
268
            print "Error connecting to database " + raw_db
269
            exit()
270
        unparsed_emails = get_unparsed_emails_from_db(db1_cursor, emails_table)
249 271
    for raw_mail in unparsed_emails:
250 272
        mails_read = mails_read + 1
251 273
        num_found_keys = 0

Also available in: Unified diff