def generate(self, d): from constants import REPORT from handlers import APIError from tasks import backgroundReportRun type = self.request.get_range('type') if not type: raise APIError("No type in report request") ftype = self.request.get_range('ftype', default=REPORT.CSV) specs_json = self.request.get('specs_json') specs = tools.getJson(specs_json) report = Report.Create(self.user, type=type, specs=specs, ftype=ftype) report.put() tools.safe_add_task(backgroundReportRun, report.key.urlsafe(), _queue="report-queue") self.set_response(success=True, message="%s generating..." % report.title, data={ 'report': report.json() if report else None })
def testReportGeneration(self): # With non-ascii text in batch BATCH_1 = { 'speed': [0 for x in range(10)], 'narrative': [ None, None, "Narrative", "Test", "", u"Làst", None, None, None, None ] } self.__createNewRecords(BATCH_1, first_dt=datetime.now()) specs = { 'sensortype_id': self.spedometer.key().id(), 'columns': ['narrative', 'speed'] } r = Report.Create(self.e, type=REPORT.SENSOR_DATA_REPORT, specs=specs) r.put() r.run(None) self.execute_tasks_until_empty() r = Report.get(r.key()) self.assertTrue(r.isDone())