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

« back to all changes in this revision

Viewing changes to grackle/model.py

  • Committer: William Grant
  • Date: 2012-01-22 12:52:24 UTC
  • Revision ID: william.grant@canonical.com-20120122125224-z19p0uvnb7ch6tc7
Comment and document.

Show diffs side-by-side

added added

removed removed

Lines of Context:
117
117
            }
118
118
 
119
119
    def _trim(self, sequence, end):
 
120
        """Return the sequence with one of the ends trimmed.
 
121
 
 
122
        :param end: if true, remove the last element. otherwise remove
 
123
            the first.
 
124
        """
120
125
        if end:
121
126
            return sequence[:-1]
122
127
        else:
129
134
            raise AssertionError("Unsupported order.")
130
135
        if memo != '':
131
136
            memo = uuid.UUID(memo)
132
 
        # Get up to n+1 messages from the memo: the last item of the
133
 
        # previous batch (because that's where the memo starts) + this
134
 
        # batch.
135
137
        if backward:
136
138
            start = ''
137
139
            finish = memo
138
140
        else:
139
141
            start = memo
140
142
            finish = ''
 
143
 
 
144
        # Get up to n+1 messages from the memo: the last item of the
 
145
        # previous batch (because that's where the memo starts) + this
 
146
        # batch.
141
147
        pairs = self.archive_messages.get(
142
148
            archive_uuid, column_count=count + 1, column_start=start,
143
149
            column_finish=finish, column_reversed=reversed).items()
144
 
        if memo and len(pairs) and pairs[0][0] <= memo:
 
150
 
 
151
        if len(pairs) and memo and pairs[0][0] <= memo:
 
152
            # The memo (from the previous batch) was included in the result.
 
153
            # Trim it.
145
154
            pairs = self._trim(pairs, False ^ backward)
146
155
        elif len(pairs) > count:
 
156
            # There was no memo in the result, so the n+1th element is
 
157
            # unnecessary. Kill it.
147
158
            pairs = self._trim(pairs, True ^ backward)
148
159
 
149
160
        if len(pairs) == 0:
151
162
 
152
163
        assert 0 < len(pairs) <= count
153
164
 
 
165
        # We've narrowed down the message references. Fetch the messages.
154
166
        ids = [v for k, v in pairs]
155
167
        messages = self.messages.multiget(
156
168
            ids, columns=['date', 'from', 'subject', 'message-id'])