Example #1
0
 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)
Example #2
0
 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)
Example #3
0
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)