def render_to_response(self, context, **response_kwargs): if self.csv: response = HttpResponse(content_type='text/csv', status=200) response['Content-Disposition'] = 'attachment; filename="responses.csv"' writer = unicodecsv.writer(response) questions = self.derive_questions().values() resp_headers = ['Date'] contact_headers = ['Name', 'URN', 'Region', 'Group'] question_headers = [q.name for q in questions] writer.writerow(resp_headers + contact_headers + question_headers) for resp in context['object_list']: resp_cols = [format_datetime(resp.updated_on)] contact_cols = [ resp.contact.name, resp.contact.urn, resp.contact.region, resp.contact.group] answer_cols = [] answers_by_question_id = {a.question_id: a for a in resp.answers.all()} for question in questions: answer = answers_by_question_id.get(question.pk, None) answer_cols.append(answer.value if answer else '') writer.writerow(resp_cols + contact_cols + answer_cols) return response return super(ResponseCRUDL.ByPollrun, self).render_to_response( context, **response_kwargs)
def render_to_response(self, context, **response_kwargs): _format = self.request.POST.get("_format", self.request.GET.get("_format", None)) if _format == "csv": response = HttpResponse(content_type="text/csv", status=200) response["Content-Disposition"] = 'attachment; filename="responses.csv"' writer = unicodecsv.writer(response) questions = self.derive_questions().values() resp_headers = ["Date"] contact_headers = ["Name", "URN", "Region", "Group"] question_headers = [q.text for q in questions] writer.writerow(resp_headers + contact_headers + question_headers) for resp in context["object_list"]: resp_cols = [format_datetime(resp.updated_on)] contact_cols = [resp.contact.name, resp.contact.urn, resp.contact.region, resp.contact.group] answer_cols = [] answers_by_question_id = {a.question_id: a for a in resp.answers.all()} for question in questions: answer = answers_by_question_id.get(question.pk, None) answer_cols.append(answer.value if answer else "") writer.writerow(resp_cols + contact_cols + answer_cols) return response else: return super(ResponseCRUDL.ByPollrun, self).render_to_response(context, **response_kwargs)
def get_last_flow_run_fetch(self, obj): result = obj.get_task_result(constants.TaskType.fetch_runs) if result: return "%s (%d fetched)" % (format_datetime( ms_to_datetime(result['time'])), result.get( 'counts', {}).get('fetched', 0)) else: return None
def get_last_contact_sync(self, obj): result = obj.get_task_result(TaskType.sync_contacts) if result: return "%s (%d created, %d updated, %d deleted, %d failed)" % ( format_datetime(ms_to_datetime(result['time'])), result['counts']['created'], result['counts']['updated'], result['counts']['deleted'], result['counts']['failed']) else: return None
def get_last_flow_run_fetch(self, obj): result = obj.get_task_result(constants.TaskType.fetch_runs) if result: return "%s (%d fetched)" % ( format_datetime(ms_to_datetime(result['time'])), result.get('counts', {}).get('fetched', 0) ) else: return None
def get_last_label_task(self, obj): result = obj.get_task_result(TaskType.label_messages) if result: when = format_datetime(ms_to_datetime(result['time'])) num_messages = int(result['counts'].get('messages', 0)) num_labelled = int(result['counts'].get('labelled', 0)) return "%s (%d new messages, %d labelled)" % (when, num_messages, num_labelled) else: return None
def get_last_contact_sync(self, obj): result = obj.get_task_result(TaskType.sync_contacts) if result: return "%s (%d created, %d updated, %d deleted, %d failed)" % (format_datetime(ms_to_datetime(result['time'])), result['counts']['created'], result['counts']['updated'], result['counts']['deleted'], result['counts']['failed']) else: return None
def get_last_label_task(self, obj): result = obj.get_task_result(TaskType.label_messages) if result: when = format_datetime(ms_to_datetime(result['time'])) num_messages = int(result['counts'].get('messages', 0)) num_labelled = int(result['counts'].get('labelled', 0)) return "%s (%d new messages, %d labelled)" % ( when, num_messages, num_labelled) else: return None
def render_to_response(self, context, **response_kwargs): if self.csv: response = HttpResponse(content_type='text/csv', status=200) response[ 'Content-Disposition'] = 'attachment; filename="responses.csv"' writer = unicodecsv.writer(response) questions = self.derive_questions().values() resp_headers = ['Date'] contact_headers = ['Name', 'URN', 'Region', 'Group'] question_headers = [q.name for q in questions] writer.writerow(resp_headers + contact_headers + question_headers) for resp in context['object_list']: resp_cols = [format_datetime(resp.updated_on)] contact_cols = [ resp.contact.name, resp.contact.urn, resp.contact.region, resp.contact.group ] answer_cols = [] answers_by_question_id = { a.question_id: a for a in resp.answers.all() } for question in questions: answer = answers_by_question_id.get(question.pk, None) answer_cols.append(answer.value if answer else '') writer.writerow(resp_cols + contact_cols + answer_cols) return response return super(ResponseCRUDL.ByPollrun, self).render_to_response(context, **response_kwargs)
def get_last_flow_run_fetch(self, obj): result = obj.get_task_result(TaskType.fetch_runs) if result: return format_datetime(ms_to_datetime(result['time'])) else: return None