def post(self, *args, **kwargs): self.form = CSVErrorsReportForm(self.request.POST) if self.form.is_valid(): start_date = self.form.cleaned_data['start_date'] stop_date = self.form.cleaned_data['stop_date'] service_id = self.form.cleaned_data.get('service', None) f = cStringIO.StringIO() UnicodeWriter(f).writerows( (unicode(item) for item in row) for row in self._get_data( start_date=start_date, stop_date=stop_date, service_id=service_id, ), ) response = HttpResponse( f.getvalue(), content_type='application/csv', ) filename = 'report_%s_%s.csv' % ( start_date.strftime("%Y-%m-%d"), stop_date.strftime("%Y-%m-%d"), ) disposition = 'attachment; filename=%s' % filename response['Content-Disposition'] = disposition return response return super(CSVErrorsReport, self).get(*args, **kwargs)
def get(self, *args, **kwargs): self.form = CSVErrorsReportForm( initial={ 'start_date': timezone.now().strftime("%Y-%m-%d"), 'stop_date': timezone.now().strftime("%Y-%m-%d"), }, ) return super(CSVErrorsReport, self).get(*args, **kwargs)
class CSVErrorsReport(Base): template_name = 'boards/csv_report.html' def _get_data(self, start_date, stop_date, service_id=None): yield [ 'service_id', 'url', 'response_state_id', 'response_state', 'response_code', 'response_time', 'namelookup_time', 'connect_time', 'pretransfer_time', 'starttransfer_time', 'redirect_time', 'size_download', 'speed_download', 'redirect_count', 'num_connects', 'agent_id', 'agent_name', 'created', ] response_states = ResponseStateChoices() for item in get_history_items(start_date, stop_date, service_id): yield [ item['service_id'], item['url'], item['response_state'], response_states.from_id(item['response_state']).name, item['response_code'], item['response_time'], item['namelookup_time'], item['connect_time'], item['pretransfer_time'], item['starttransfer_time'], item['redirect_time'], item['size_download'], item['speed_download'], item['redirect_count'], item['num_connects'], item['agent_id'], item['agent_name'], timezone.localtime( item['created'], ).strftime("%Y-%m-%d %H:%M:%S"), ] def get_context_data(self, **kwargs): ret = super(CSVErrorsReport, self).get_context_data(**kwargs) ret.update({ 'form': self.form, }) return ret def get(self, *args, **kwargs): self.form = CSVErrorsReportForm( initial={ 'start_date': timezone.now().strftime("%Y-%m-%d"), 'stop_date': timezone.now().strftime("%Y-%m-%d"), }, ) return super(CSVErrorsReport, self).get(*args, **kwargs) def post(self, *args, **kwargs): self.form = CSVErrorsReportForm(self.request.POST) if self.form.is_valid(): start_date = self.form.cleaned_data['start_date'] stop_date = self.form.cleaned_data['stop_date'] service_id = self.form.cleaned_data.get('service', None) f = cStringIO.StringIO() UnicodeWriter(f).writerows( (unicode(item) for item in row) for row in self._get_data( start_date=start_date, stop_date=stop_date, service_id=service_id, ), ) response = HttpResponse( f.getvalue(), content_type='application/csv', ) filename = 'report_%s_%s.csv' % ( start_date.strftime("%Y-%m-%d"), stop_date.strftime("%Y-%m-%d"), ) disposition = 'attachment; filename=%s' % filename response['Content-Disposition'] = disposition return response return super(CSVErrorsReport, self).get(*args, **kwargs)