~unity-2d-team/unity-2d/Shell-MultiMonitor

« back to all changes in this revision

Viewing changes to grackle/server/model.py

  • Committer: William Grant
  • Date: 2012-01-22 09:34:23 UTC
  • Revision ID: william.grant@canonical.com-20120122093423-vg68zm7wv6tito5t
Turn _parse_message into a non-member function.

Show diffs side-by-side

added added

removed removed

Lines of Context:
51
51
        mgr.close()
52
52
 
53
53
 
 
54
def _parse_message(message):
 
55
    """Get a date and dict of an RFC822 message."""
 
56
    parsed = email.parser.Parser().parsestr(message)
 
57
    message_dict = {}
 
58
 
 
59
    for key in ('from', 'to', 'subject', 'message-id'):
 
60
        value = parsed.get(key, None)
 
61
        if value is not None:
 
62
            message_dict[key] = value
 
63
 
 
64
    date = parsed.get('date')
 
65
    if date is not None:
 
66
        try:
 
67
            pdate = parsedate_tz(date)
 
68
            date = datetime.datetime(
 
69
                *pdate[:6],
 
70
                tzinfo=dateutil.tz.tzoffset('', pdate[9]))
 
71
        except ValueError:
 
72
            pass
 
73
    message_dict['date'] = date.isoformat() if date is not None else None
 
74
 
 
75
    return date, message_dict
 
76
 
 
77
 
54
78
class CassandraConnection(object):
55
79
 
56
80
    def __init__(self, keyspace, host):
66
90
    def _column_family(self, name):
67
91
        return pycassa.ColumnFamily(self._connection, name)
68
92
 
69
 
    def _parse_message(self, message):
70
 
        """Get a date and dict of an RFC822 message."""
71
 
        parsed = email.parser.Parser().parsestr(message)
72
 
        message_dict = {}
73
 
 
74
 
        for key in ('from', 'to', 'subject', 'message-id'):
75
 
            value = parsed.get(key, None)
76
 
            if value is not None:
77
 
                message_dict[key] = value
78
 
 
79
 
        date = parsed.get('date')
80
 
        if date is not None:
81
 
            try:
82
 
                pdate = parsedate_tz(date)
83
 
                date = datetime.datetime(
84
 
                    *pdate[:6],
85
 
                    tzinfo=dateutil.tz.tzoffset('', pdate[9]))
86
 
            except ValueError:
87
 
                pass
88
 
        message_dict['date'] = date.isoformat() if date is not None else None
89
 
 
90
 
        return date, message_dict
91
 
 
92
93
    def add_message(self, archive_uuid, message):
93
94
        message_uuid = uuid.uuid4()
94
 
        message_date, message_dict = self._parse_message(message)
 
95
        message_date, message_dict = _parse_message(message)
95
96
        message_dict['content'] = message
96
97
        message_dict['date_created'] = (
97
98
            datetime.datetime.utcnow().isoformat() + 'Z')