def serve(self, d): import cloudstorage as gcs rkey = self.request.get('rkey') r = Report.GetAccessible(rkey, self.user, urlencoded_key=True) if r: if r.is_done() and r.gcs_files: gcsfn = r.gcs_files[0] if tools.on_dev_server(): try: gcs_file = gcs.open(gcsfn, 'r') except gcs.NotFoundError, e: self.response.out.write("File not found") else: self.response.headers[ 'Content-Type'] = Report.content_type(r.extension) self.response.headers['Content-Disposition'] = str( 'attachment; filename="%s"' % r.filename()) self.response.write(gcs_file.read()) gcs_file.close() else: signed_url = tools.sign_gcs_url(gcsfn, expires_after_seconds=5) response = self.redirect(signed_url) logging.info(response) else: self.set_response(success=False, status=404, message="Report not ready") # Not found
def delete(self, d): rkey = self.request.get('rkey') r = Report.GetAccessible(rkey, self.user, urlencoded_key=True) if r: r.clean_delete(self_delete=True) self.message = "Report deleted" self.success = True else: self.message = "Report not found" self.set_response()