def fetch_results(self, segment=None): from raven.contrib.django.raven_compat.models import client cache_time = UREPORT_ASYNC_FETCHED_DATA_CACHE_TIME if segment and segment.get('location', "") == "District": cache_time = UREPORT_RUN_FETCHED_DATA_CACHE_TIME try: key = CACHE_POLL_RESULTS_KEY % (self.poll.org.pk, self.poll.pk, self.pk) if segment: segment = self.poll.org.substitute_segment(segment) key += ":" + slugify(unicode(segment)) this_time = datetime.now() temba_client = self.poll.org.get_temba_client() client_results = temba_client.get_results(self.ruleset_uuid, segment=segment) results = temba_client_flow_results_serializer(client_results) cache.set(key, {'time': datetime_to_ms(this_time), 'results': results}, cache_time) # delete the open ended cache cache.delete('open_ended:%d' % self.id) except: # pragma: no cover client.captureException() import traceback traceback.print_exc()
def fetch_contact_field_results(org, contact_field, segment): from ureport.polls.models import CACHE_ORG_FIELD_DATA_KEY, UREPORT_ASYNC_FETCHED_DATA_CACHE_TIME from ureport.polls.models import UREPORT_RUN_FETCHED_DATA_CACHE_TIME start = time.time() print "Fetching %s for %s with segment %s" % (contact_field, org.name, segment) cache_time = UREPORT_ASYNC_FETCHED_DATA_CACHE_TIME if segment and segment.get('location', "") == "District": cache_time = UREPORT_RUN_FETCHED_DATA_CACHE_TIME try: segment = substitute_segment(org, segment) this_time = datetime.now() temba_client = org.get_temba_client() client_results = temba_client.get_results(contact_field=contact_field, segment=segment) results_data = temba_client_flow_results_serializer(client_results) cleaned_results_data = results_data print "Fetch took %ss" % (time.time() - start) key = CACHE_ORG_FIELD_DATA_KEY % (org.pk, slugify(unicode(contact_field)), slugify(unicode(segment))) cache.set(key, {'time': datetime_to_ms(this_time), 'results': cleaned_results_data}, cache_time) except: client.captureException() import traceback traceback.print_exc()
def fetch_results(self, segment=None): from raven.contrib.django.raven_compat.models import client cache_time = UREPORT_ASYNC_FETCHED_DATA_CACHE_TIME if segment and segment.get('location', "") == "District": cache_time = UREPORT_RUN_FETCHED_DATA_CACHE_TIME try: key = CACHE_POLL_RESULTS_KEY % (self.poll.org.pk, self.poll.pk, self.pk) if segment: segment = self.poll.org.substitute_segment(segment) key += ":" + slugify(unicode(segment)) this_time = datetime.now() temba_client = self.poll.org.get_temba_client() client_results = temba_client.get_results(self.ruleset_uuid, segment=segment) results = temba_client_flow_results_serializer(client_results) cache.set(key, { 'time': datetime_to_ms(this_time), 'results': results }, cache_time) # delete the open ended cache cache.delete('open_ended:%d' % self.id) except: # pragma: no cover client.captureException() import traceback traceback.print_exc()