def shared_pagination_GET_params(self): return [ {'name': 'startdate', 'value': self.datespan.startdate.strftime('%Y-%m-%d')}, {'name': 'enddate', 'value': self.datespan.enddate.strftime('%Y-%m-%d')}, {'name': EventTypeFilter.slug, 'value': EventTypeFilter.get_value(self.request, self.domain)}, {'name': EventStatusFilter.slug, 'value': EventStatusFilter.get_value(self.request, self.domain)}, {'name': PhoneNumberFilter.slug, 'value': PhoneNumberFilter.get_value(self.request, self.domain)}, ]
def get_filters(self): source_filter = [] content_type_filter = [] event_status_filter = None event_type_filter = EventTypeFilter.get_value(self.request, self.domain) for source_type, x in MessagingEvent.SOURCE_CHOICES: if source_type in event_type_filter: if source_type == MessagingEvent.SOURCE_OTHER: source_filter.extend([ MessagingEvent.SOURCE_OTHER, MessagingEvent.SOURCE_FORWARDED, ]) else: source_filter.append(source_type) for content_type, x in MessagingEvent.CONTENT_CHOICES: if content_type in event_type_filter: if content_type == MessagingEvent.CONTENT_SMS_SURVEY: content_type_filter.extend([ MessagingEvent.CONTENT_SMS_SURVEY, MessagingEvent.CONTENT_IVR_SURVEY, ]) else: content_type_filter.append(content_type) event_status = EventStatusFilter.get_value(self.request, self.domain) if event_status == MessagingEvent.STATUS_ERROR: event_status_filter = ( Q(status=event_status) | Q(messagingsubevent__status=event_status) | Q(messagingsubevent__sms__error=True) ) elif event_status == MessagingEvent.STATUS_IN_PROGRESS: # We need to check for id__isnull=False below because the # query we make in this report has to do a left join, and # in this particular filter we can only validly check # end_time__isnull=True if there actually are # subevent and xforms session records event_status_filter = ( Q(status=event_status) | Q(messagingsubevent__status=event_status) | (Q(messagingsubevent__xforms_session__id__isnull=False) & Q(messagingsubevent__xforms_session__end_time__isnull=True)) ) elif event_status == MessagingEvent.STATUS_NOT_COMPLETED: event_status_filter = ( Q(status=event_status) | Q(messagingsubevent__status=event_status) | (Q(messagingsubevent__xforms_session__end_time__isnull=False) & Q(messagingsubevent__xforms_session__submission_id__isnull=True)) ) return source_filter, content_type_filter, event_status_filter