~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 08:34:06 UTC
  • Revision ID: william.grant@canonical.com-20120122083406-4ucy22vzcx1cfcwm
Refactor.

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
    def _column_family(self, name):
67
67
        return pycassa.ColumnFamily(self._connection, name)
68
68
 
69
 
    def add_message(self, archive_uuid, message):
70
 
        message_uuid = uuid.uuid4()
 
69
    def _parse_message(self, message):
 
70
        """Get a date and dict of an RFC822 message."""
71
71
        parsed = email.parser.Parser().parsestr(message)
 
72
        message_dict = {}
 
73
        message_dict['date_created'] = (
 
74
            datetime.datetime.utcnow().isoformat() + 'Z')
 
75
        message_dict['content'] = message
 
76
 
 
77
        for key in ('from', 'to', 'subject', 'message-id'):
 
78
            value = parsed.get(key, None)
 
79
            if value is not None:
 
80
                message_dict[key] = value
 
81
 
72
82
        date = parsed.get('date')
73
83
        if date is not None:
74
84
            try:
78
88
                    tzinfo=dateutil.tz.tzoffset('', pdate[9]))
79
89
            except ValueError:
80
90
                pass
81
 
        self.messages.insert(
82
 
            message_uuid,
83
 
            {'date_created': datetime.datetime.utcnow().isoformat() + 'Z',
84
 
             'content': message,
85
 
             'from': parsed.get('From'),
86
 
             'to': parsed.get('To'),
87
 
             'subject': parsed.get('Subject'),
88
 
             'date': date.isoformat() if date is not None else None,
89
 
             'message_id': parsed.get('Message-ID'),
90
 
             })
 
91
        message_dict['date'] = date.isoformat() if date is not None else None
 
92
 
 
93
        return date, message_dict
 
94
 
 
95
    def add_message(self, archive_uuid, message):
 
96
        message_uuid = uuid.uuid4()
 
97
        message_date, message_dict = self._parse_message(message)
 
98
        self.messages.insert(message_uuid, message_dict)
91
99
        self.archive_messages.insert(
92
100
            archive_uuid,
93
 
            {date.astimezone(dateutil.tz.tzutc()): message_uuid})
 
101
            {message_date.astimezone(dateutil.tz.tzutc()): message_uuid})
94
102
        logging.debug(
95
 
            'Imported %s into %s' % (parsed.get('Message-ID'), archive_uuid))
 
103
            'Imported %s into %s'
 
104
            % (message_dict.get('message-id', None), archive_uuid))
96
105
        return message_uuid
97
106
 
98
107
    def _format_message(self, message):
99
108
        return {
100
 
            'date': message['date'],
101
 
            'from': message['from'],
102
 
            'subject': message['subject'],
 
109
            'date': message.get('date'),
 
110
            'from': message.get('from'),
 
111
            'subject': message.get('subject'),
103
112
            }
104
113
 
105
114
    def get_messages(self, archive_uuid, order, count, start):