def constructResponseObject(responsePassed): """ constructs an Error response object, even if the """ if (responsePassed): temp_resp = Response() temp_resp.status_code = responsePassed.status_code or 404 if ((temp_resp.status_code >= 200) and (temp_resp.status_code < 300)): temp_resp.status_code = 404 temp_resp.reason = 'Bad Request' details = 'UnexpectedError' temp_resp.headers = { 'Content-Type': 'text/html', 'Warning': details } else: temp_resp.reason = responsePassed.reason or 'Bad Request' details = responsePassed.content or 'UnexpectedError' temp_resp.headers = { 'Content-Type': 'text/html', 'WWW-Authenticate': details } else: temp_resp = Response() temp_resp.reason = 'Bad Request' temp_resp.status_code = 404 details = 'UnexpectedError' temp_resp.headers = { 'Content-Type': 'text/html', 'WWW-Authenticate': details } return temp_resp
def get(self): """ Authenticate a Rucio account temporarily via a GSS token. .. :quickref: GSS; Authenticate with GSS token :reqheader Rucio-VO: VO name as a string (Multi-VO only). :reqheader Rucio-Account: Account identifier as a string. :reqheader Rucio-AppID: Application identifier as a string. :reqheader SavedCredentials: Apache mod_auth_kerb SavedCredentials. :resheader Access-Control-Allow-Origin: :resheader Access-Control-Allow-Headers: :resheader Access-Control-Allow-Methods: :resheader Access-Control-Allow-Credentials: :resheader Access-Control-Expose-Headers: :resheader X-Rucio-Auth-Token: The authentication token :status 200: Successfully authenticated :status 404: Invalid credentials """ response = Response() response.headers['Access-Control-Allow-Origin'] = request.environ.get('HTTP_ORIGIN') response.headers['Access-Control-Allow-Headers'] = request.environ.get('HTTP_ACCESS_CONTROL_REQUEST_HEADERS') response.headers['Access-Control-Allow-Methods'] = '*' response.headers['Access-Control-Allow-Credentials'] = 'true' response.headers['Access-Control-Expose-Headers'] = 'X-Rucio-Auth-Token' response.headers['Content-Type'] = 'application/octet-stream' response.headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate' response.headers['Cache-Control'] = 'post-check=0, pre-check=0' response.headers['Pragma'] = 'no-cache' vo = request.environ.get('HTTP_X_RUCIO_VO', 'def') account = request.environ.get('HTTP_X_RUCIO_ACCOUNT') gsscred = request.environ.get('REMOTE_USER') appid = request.environ.get('HTTP_X_RUCIO_APPID') if appid is None: appid = 'unknown' ip = request.environ.get('HTTP_X_FORWARDED_FOR') if ip is None: ip = request.remote_addr try: result = get_auth_token_gss(account, gsscred, appid, ip, vo=vo) except AccessDenied: return generate_http_error_flask(401, 'CannotAuthenticate', 'Cannot authenticate to account %(account)s with given credentials' % locals()) if result is None: return generate_http_error_flask(401, 'CannotAuthenticate', 'Cannot authenticate to account %(account)s with given credentials' % locals()) else: response.headers('X-Rucio-Auth-Token', result) return str() return 'BadRequest', 400
def response_file(data, filename): """ :param data: response data :param filename: :return: return a file to client """ from flask import Response from ctypes import create_string_buffer import mimetypes, struct from werkzeug.datastructures import Headers # buf = create_string_buffer(len(data)) # struct.pack_into(str(len(data))+"s", buf, 0, data) response = Response() response.data = data response.status_code = 200 mimetype_tuple = mimetypes.guess_type(filename) response.default_mimetype=mimetype_tuple[0] response_headers = Headers({ 'Pragma': "no-cache", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.headers.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers return response
def dlhaha(func_key): # func_key= request.args.get('func',None) if func_key == None: raise ValueError(u'không có tên hàm download xl') else: request_args = request.args wb, filename = get_funcxl_and_run_funcxl_from_key(func_key, request_args) response = Response() response.status_code = 200 output = BytesIO() wb.save(output) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers return response
def sendfresponse(self): try: params = self.get_params(request) if params != False: fname = params.get('name') fPath = FILE_PATH + fname file = open(fPath, 'rb').read() response = Response() response.data = file response.status_code = 200 response.headers = Headers() response.headers['Pragma'] = 'public' response.headers['Expires'] = '0' response.headers['Cache-Control'] = 'public' response.headers['Content-Description'] = 'File Transfer' response.headers['Content-Type'] = 'application/octet-stream'#'text/plain' #'application/vnd.ms-excel' #'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' response.headers['Content-Disposition'] = 'attachment; filename='+fname response.headers['Content-Transfer-Encoding'] = 'binary' # response.headers['X-Key'] = self.KEY os.remove(fPath) return response else: return False except Exception as e: self.log.exception("sendfresponse Exception....") self.log.exception(e)
def root(): next = get_next_url() if (next is not None): enriched_headers = get_enrich_headers() enriched_headers.pop('Host', None) r = make_request( next, request.method, enriched_headers, ) def generate(): for chunk in r.raw.stream(decode_content=False): yield chunk response = Response(generate(), headers=dict(r.headers)) response.status_code = r.status_code # remove chunked transfer header while forwarding back to browser r2 = r.headers.copy() r2.pop('Transfer-Encoding', None) response.headers = dict(r2) LOG.critical("response header: %s\n\n", r2) LOG.critical("response: %s\n", response) return response return "Missing next param url 'n'"
def download_bim_excel(): response = Response() response.status_code = 200 date = datetime.utcnow().strftime('%Y-%m-%d') book = xlwt.Workbook() sheet1 = book.add_sheet('BimLink ' + date) lines = Track.query.join(Area).join(Material).join(Location).filter(Area.id == Track.area_id).filter(Material.id == Track.material_id).filter(Location.id == Track.location_id).all() i = 0 for li in lines: start = (int(round(li.station_start*10)*10)) end = (int(round(li.station_end*10)*10)) #if end > start: num = (end - start)/10 for n in range(0, num): s = start + n*10 e = s+10 excel_id = li.area.area + '_' + li.location.location + '_' + str(s) + '_' + str(e) revit_id = Bimlink.query.filter_by(excel_id = excel_id).first() if revit_id: sheet1.row(i).write(0, revit_id.revit_id) sheet1.row(i).write(1,excel_id) sheet1.row(i).write(2,'Complete') sheet1.row(i).write(3,str(li.date)) sheet1.row(i).write(4,li.material.material) i += 1 output = StringIO.StringIO() book.save(output) response.data = output.getvalue() filename = 'ESA CM005 Waterproofing BIMLink_' + date + '.xls' mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') return response
def seachprojectExam(): if request.method == 'POST': if request.data: data = json.loads(request.data) else: data = request.form else: data = request.args page = Page(data.get("page")).page type_ = data.get("questionType", "choice") comments = projectExam[type_] query = {} if isNull(data.get("content")) is False: query['content'] = {'$regex': ".*" + data.get("content") + ".*"} if isNull(data.get("type")) is False: query['type'] = {'$regex': ".*" + data.get("type") + ".*"} print(page) lis = comments.find(query, { "_id": 0 }).limit(page.get("pageSize")).skip( page.get("pageSize") * (page.get("current") - 1)) lis = list(lis) # # print(comments.count_documents(filter=query)) result = {'data': lis, 'total': comments.count_documents(filter=query)} response = Response() response.headers = {"Access-Control-Allow-Origin": "*"} response.data = json.dumps(result) return response
def route(): content_type = request.args["Content-Type"] response = Response() headers = Headers() headers.add("Content-Type", content_type) # Noncompliant response.headers = headers return response
def render_site(site_name, path): # pylint: disable=unused-variable site = config['sites'].get(site_name, None) if not site: LOGGER.warning('Request for nonexistent site %s', site_name) return 'Site not found: {}'.format(site_name), 404 url = site['url'] if path: url += '/{}'.format(path) creds = (site['creds']['user'], site['creds']['pass']) resp = cache.get(url, None) if not resp: resp = requests.get(url, auth=creds) cache[url] = resp if resp.status_code == 404: return '', resp.status_code flask_resp = Response(resp.text) flask_resp.headers = {**flask_resp.headers, **resp.headers} return flask_resp, resp.status_code
def get_nanopub(ident, format=None): #print(request.method, 'get_nanopub()', ident) ident = ident.split("_")[0] uri = _get_uri(ident) result = app.nanopub_manager.get(uri) if result is None: #print("cannot find", uri) abort(404) content_type = None if format is not None and format in extensions: content_type = extensions[format] if content_type is None: content_type = request.headers[ 'Accept'] if 'Accept' in request.headers else 'application/ld+json' fmt = sadi.mimeparse.best_match( [mt for mt in list(dataFormats.keys()) if mt is not None], content_type) if 'view' in request.args or fmt in htmls: return render_nanopub(result, 200) elif fmt in dataFormats: response = Response(result.serialize(format=dataFormats[fmt])) response.headers = {'Content-type': fmt} return response, 200
def get_nanopub(ident, format=None): #print(request.method, 'get_nanopub()', ident) ident = ident.split("_")[0] uri = get_nanopub_uri(ident) result = current_app.nanopub_manager.get(uri) if result is None: #print("cannot find", uri) abort(404) content_type = None if format is not None and format in DATA_EXTENSIONS: content_type = DATA_EXTENSIONS[format] if content_type is None: content_type = request.headers[ 'Accept'] if 'Accept' in request.headers else 'application/ld+json' fmt = sadi.mimeparse.best_match( [mt for mt in list(DATA_FORMATS.keys()) if mt is not None], content_type) if 'view' in request.args or fmt in HTML_MIME_TYPES: return render_nanopub(result, 200) elif fmt in DATA_FORMATS: response = Response(result.serialize(format=DATA_FORMATS[fmt])) response.headers = {'Content-type': fmt} return response, 200
def get_download_response(xls, filename): response = Response() response.status_code = 200 output = StringIO.StringIO() xls.save(output) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def write_client_excel(medium_data, year): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u"媒体名称", u"类别"] + [u"%s-%s-01" % (year, str(k)) for k in range(1, 13)] + [u'总计'] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_center) worksheet.set_column(0, k, 15) th = 1 for k in medium_data: th = _insert_medium_data(workbook, worksheet, k, th) workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % (u"MediumsWeekly", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def get(self): header = request.headers['Authorization'] if not header: return {'message': 'No Authorization data provided'}, 400 else: print(header) user = User.query.filter_by(api_key=header).first() if user: #htmldata = self.getData() headers = {'Content-Type': 'text/html'} r = Response() r.headers = headers r.data = render_template("index2.html").encode("latin-1") r.status_code = 200 return make_response( render_template("index2.html").encode("latin-1"), 200, headers, ) # return render_template("index.html") else: return { 'message': 'Something went wrong while receving the call' }, 401
def handle_object_get(thisAuth, thisContainer, thisObject): if thisContainer == pseudoContainer.PSEUDO_CONTAINER_NAME: return pseudoContainer.dispatch(thisObject=thisObject) sdos_frontend = get_sdos_frontend(containerName=thisContainer, swiftTenant=thisAuth, swiftToken=get_token(request)) if sdos_frontend and thisObject.startswith( pseudoObjects.PSEUDO_OBJECT_PREFIX): return pseudoObjects.dispatch_get_head(sdos_frontend, thisObject) myUrl = get_proxy_request_url(thisAuth, thisContainer, thisObject) s, h, b = httpBackend.doGenericRequest(method=request.method, reqUrl=myUrl, reqHead=request.headers, reqArgs=request.args, reqData=request.data) if (s == 200 and len(b) and sdos_frontend): try: decrypted_b = sdos_frontend.decrypt_bytes_object(b, thisObject) except: raise HttpError("Decryption failed", 412) # don't overwrite headers since the content length from the original response is incorrect; it accounts for padding... # the Response object will determine the actual, correct size return Response(response=decrypted_b, status=s, headers=strip_etag(h)) else: r = Response(response=b, status=s) # this covers the unencrypted case (1) and also HEAD requests (2). We overwrite ALL the headers to retain # the content size in the HEAD case r.headers = h return r
def seachWangyiyun(): if request.method == 'POST': if request.data: data = json.loads(request.data) else: data = request.form else: data = request.args page = Page(data.get("page")).page comments = mydb["comments"] query = {"comments.likedCount": {"$gt": 2}} sort = [] sortType = data.get("sort") if sortType is None: sort = [("comments.likedCount", -1)] else: sort = [(sortType, -1)] lis = comments.find(query, { "_id": 0 }).sort(sort).limit(page.get("pageSize")).skip( page.get("pageSize") * (page.get("current") - 1)) lis = list(lis) # result = {'data': lis, 'total': comments.estimated_document_count()} print(len(lis)) response = Response() response.headers = {"Access-Control-Allow-Origin": "*"} response.data = json.dumps(result, cls=DateEncoder) return response
def excel_response(spreadsheet, filename=u'export.xls'): """ Prepares an excel spreadsheet for response in Flask :param spreadsheet: the spreadsheet :type spreadsheet:class:`xlwt.Workbook` :param filename: the name of the file when downloaded :type filename: unicode :return: the flask response :rtype:class:`flask.Response` """ response = Response() response.status_code = 200 output = StringIO.StringIO() spreadsheet.save(output) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ u'Pragma': u"public", # required, u'Expires': u'0', u'Cache-Control': [u'must-revalidate, post-check=0, pre-check=0', u'private'], u'Content-Type': mimetype_tuple[0], u'Content-Disposition': u'attachment; filename=\"%s\";' % filename, u'Content-Transfer-Encoding': u'binary', u'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response_headers.update({u'Content-Encoding': mimetype_tuple[1]}) response.headers = response_headers response.set_cookie(u'fileDownload', u'true', path=u'/') return response
def werkzeug_headers(): rfs_header = request.args["rfs_header"] response = Response() headers = Headers() headers.add("HeaderName", rfs_header) response.headers = headers return response
def export_download(self, file_name, sheet_name, headings, data, heading_xf, data_xfs): response = Response() response.status_code = 200 ################################## # 新建excel并加入response对象 ################################## book = xlwt.Workbook(encoding='UTF-8') sheet = book.add_sheet(sheet_name) rowx = 0 for colx, value in enumerate(headings): sheet.write(rowx, colx, value, heading_xf) sheet.set_panes_frozen(True) sheet.set_horz_split_pos(rowx + 1) sheet.set_remove_splits(True) for row in data: rowx += 1 for colx, value in enumerate(row): sheet.write(rowx, colx, value, data_xfs[colx]) output = StringIO.StringIO() book.save(output) response.data = output.getvalue() ################################ # 提供jquery下载的报文头 ################################# filename = file_name mimetype_tuple = mimetypes.guess_type(filename) #HTTP下载报文头 response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({'Content-Encoding': mimetype_tuple[1]}) response.headers = response_headers #jquery.fileDownload.js response.set_cookie('fileDownload', 'true', path='/') return response
def write_frameworkorder_excel(orders): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format({ 'align': 'left', 'valign': 'vcenter', 'border': 1 }) keys = [ u"FrameworkOrder ID", u"代理集团", u"备注", u"合同金额", u"合同号", u"开始日期", u"结束日期", u"回款日期", u"直客销售", u"渠道销售", u"状态" ] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_left) worksheet.set_column(0, 0 + k, 15) th = 1 for order in orders: worksheet.write(th, 0, order.id, align_left) worksheet.write(th, 1, order.group.name or " ", align_left) worksheet.write(th, 2, order.description or " ", align_left) worksheet.write(th, 3, order.money or 0, align_left) worksheet.write(th, 4, order.contract or u"无合同号", align_left) worksheet.write(th, 5, order.start_date_cn or " ", align_left) worksheet.write(th, 6, order.end_date_cn or " ", align_left) worksheet.write(th, 7, order.reminde_date_cn or " ", align_left) worksheet.write(th, 8, order.direct_sales_names or " ", align_left) worksheet.write(th, 9, order.agent_sales_names or " ", align_left) worksheet.write(th, 10, order.contract_status_cn or " ", align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % (u"FOrders", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def write_simple_report_excel(reports): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u'员工姓名', u'职务', u'考核周期', u'KR指标自评分', u'KR指标上级评分', u'改进提升自评分', u'改进提升上级评分', u'管理指标自评分', u'管理指标上级评分', u'胜任能力自评分', u'胜任能力上级评分', u'绩效评估自评总分', u'绩效评估上级总评分', u'同事评分', u'绩效总得分', u'填表时间'] worksheet.set_column(0, len(keys), 18) for k in range(len(keys)): worksheet.write(0, k, keys[k], align_center) worksheet.set_row(0, 20) reports = [k for k in reports if k.status >= 3] th = 1 for k in range(len(reports)): worksheet.write(th, 0, reports[k].creator.name, align_center) worksheet.write(th, 1, reports[k].creator.team.name, align_center) worksheet.write(th, 2, reports[k].version_cn, align_center) worksheet.write(th, 3, reports[k].self_KR_score, align_center) worksheet.write(th, 4, reports[k].KR_score, align_center) worksheet.write(th, 5, reports[k].self_upper_score, align_center) worksheet.write(th, 6, reports[k].upper_score, align_center) if reports[k].type == 2: worksheet.write(th, 7, reports[k].self_manage_score, align_center) worksheet.write(th, 8, reports[k].manage_score, align_center) else: worksheet.write(th, 7, u'无', align_center) worksheet.write(th, 8, u'无', align_center) worksheet.write(th, 9, reports[k].self_ability_score, align_center) worksheet.write(th, 10, reports[k].ability_score, align_center) worksheet.write(th, 11, reports[k].self_total_score, align_center) worksheet.write(th, 12, reports[k].total_score, align_center) worksheet.write(th, 13, reports[k].personnal_score, align_center) worksheet.write(th, 14, reports[k].personnal_score + reports[k].total_score, align_center) worksheet.write(th, 15, reports[k].create_time_cn, align_center) worksheet.set_row(th, 20) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % ("绩效考核总表", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def biz_file(data, status=None, headers=None): if not status: status = codes.HTTP_OK response = Response(data, status=status) if headers: response.headers = headers return response
def write_target_info(targets): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u'名称', u'外包性质', u'类型', u'开户行', u'卡号', u'支付宝', u'联系方式', u'2014年成本', u'2015年成本', u'2016年成本', u'总计'] # 设置高度 # for k in range(1000): # worksheet.set_row(k, 25) outsources = [outsource_to_dict(k) for k in OutSourceExecutiveReport.all()] outsources = [k for k in outsources if k['status'] == 1] for k in range(len(keys)): worksheet.write(0, k, keys[k], align_center) worksheet.set_column(0, k, 30) targets = list(targets) th = 1 for k in range(len(targets)): worksheet.write(th, 0, targets[k].name, align_left) worksheet.write(th, 1, targets[k].otype_cn, align_left) worksheet.write(th, 2, targets[k].type_cn, align_left) worksheet.write(th, 3, targets[k].bank, align_left) worksheet.write(th, 4, targets[k].card, align_left) worksheet.write(th, 5, targets[k].alipay, align_left) worksheet.write(th, 6, targets[k].contract, align_left) worksheet.write(th, 7, sum([o['money'] for o in outsources if o['target_id'] == int( targets[k].id) and int(o['month_day'].year) == 2014]), align_left) worksheet.write(th, 8, sum([o['money'] for o in outsources if o['target_id'] == int( targets[k].id) and int(o['month_day'].year) == 2015]), align_left) worksheet.write(th, 9, sum([o['money'] for o in outsources if o['target_id'] == int( targets[k].id) and int(o['month_day'].year) == 2016]), align_left) worksheet.write(th, 10, sum([o['money'] for o in outsources if o[ 'target_id'] == int(targets[k].id)]), align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % ("供应商详情", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def main_tuner(request_file): logger.info("%s was requested by %s" % (request_file, request.environ.get('REMOTE_ADDR'))) # return epg if request_file.lower().startswith('epg.'): logger.info("EPG was requested by %s", request.environ.get('REMOTE_ADDR')) obtain_epg() with open( os.path.join(os.path.dirname(sys.argv[0]), 'cache', 'epg.xml'), 'r+') as f: content = f.read() response = Response(content, mimetype='text/xml') headers = dict(response.headers) headers.update({ "Access-Control-Expose-Headers": "Accept-Ranges, Content-Encoding, Content-Length, Content-Range", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Range", "Access-Control-Allow-Methods": "GET, POST, OPTIONS, HEAD" }) response.headers = headers return response #xmltv_merger() #return send_from_directory(os.path.join(os.path.dirname(sys.argv[0]), 'cache'), 'combined.xml') # Icon for the favourites menu and browser tab elif request_file.lower() == 'favicon.ico': return redirect( "https://assets.materialup.com/uploads/57194301-5bfe-4b2c-9f17-1c1de930c496/avatar.png", 302) elif request_file.lower() == 'playlist.m3u8': obtain_m3u8() logger.info("All channels playlist was requested by %s", request.environ.get('REMOTE_ADDR')) output = '#EXTM3U\n' + m3u8_playlist return Response(output, mimetype='application/x-mpegURL') # HDHomeRun emulated json files for Plex Live tv. elif request_file.lower() == 'lineup_status.json': return status() elif request_file.lower() == 'discover.json': return discover() elif request_file.lower() == 'lineup.json': return lineup() elif request_file.lower() == 'lineup.post': return lineup_post() elif request_file.lower() == 'device.xml': return device() else: logger.info("Unknown requested %r by %s (main 404)", request_file, request.environ.get('REMOTE_ADDR')) abort(404, "Unknown request")
def code(status_code, message=None, headers=None): try: return abort(status_code, message or "") except LookupError: response = Response() response.status_code = status_code response.data = message or "" response.headers = headers return response
def head(self): resp = Response(mimetype='application/json') resp.headers = { "Content-Type": "application/json", "data": { "count": int(self.get_query().count()) } } return resp
def response(self): response = Response() response.status_code = 200 response.headers = {'content-type': 'application/k2-directory'} if self.name: response.headers.update({'__name__': self.name}) response.headers.update(self.contents) return response
def download(): file = request.args.get('file') file = os.path.join(app.config['DOWNLOAD_FOLDER'], *[path for path in file.split('/')]) if os.path.isfile(file): res = Response(bytes(send_file(file))) else: res = Response(bytes(file)) res.headers = {'Content-Type': 'application/octet-stream'} return res
def write_outs_excel(outs): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u'外出申请人', u'参会人', u'开始时间', u'结束时间', u'状态'] worksheet.set_column(0, len(keys), 25) for k in range(len(keys)): worksheet.write(0, k, keys[k], align_center) th = 1 for k in range(len(outs)): if len(outs[k].joiners) > 1: worksheet.merge_range( th, 0, th + len(outs[k].joiners) - 1, 0, outs[k].creator.name, align_center) worksheet.merge_range( th, 2, th + len(outs[k].joiners) - 1, 2, outs[k].start_time_cn, align_center) worksheet.merge_range( th, 3, th + len(outs[k].joiners) - 1, 3, outs[k].end_time_cn, align_center) worksheet.merge_range( th, 4, th + len(outs[k].joiners) - 1, 4, outs[k].status_cn, align_center) joiners = outs[k].joiners for i in range(len(joiners)): worksheet.write(th + i, 1, joiners[i].name, align_center) th += len(outs[k].joiners) else: worksheet.write(th, 0, outs[k].creator.name, align_center) if outs[k].joiners: worksheet.write(th, 1, outs[k].joiners[0].name, align_center) else: worksheet.write(th, 1, '', align_center) worksheet.write(th, 2, outs[k].start_time_cn, align_center) worksheet.write(th, 3, outs[k].end_time_cn, align_center) worksheet.write(th, 4, outs[k].status_cn, align_center) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % ("外出报备", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def create_response(self): if type(self.value) == dict: self.value = json.dumps(self.value) if self.headers == None: return (self.value, self.code) else: resp = Response(self.value, self.code) resp.headers = self.headers return resp
def write_agent_total_excel(year, agent_obj, total_is_sale_money, total_is_medium_money): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) money_align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1, 'num_format': '#,##0.00'}) align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u'代理集团', u'代理', u'合同号', 'campaign', u'销售金额', u'媒介金额'] for k in range(len(keys)): worksheet.set_column(k, 0, 30) worksheet.write(0, k, keys[k], align_center) th = 1 for k in agent_obj: agents = k['agents'] if k['excel_order_count'] == 1: worksheet.write(th, 0, k['name'], align_left) else: worksheet.merge_range(th, 0, th + k['excel_order_count'] - 1, 0, k['name'], align_left) for a in agents: if a['orders']: if len(a['orders']) == 1: worksheet.write(th, 1, a['name'], align_left) else: worksheet.merge_range(th, 1, th + a['html_order_count'] - 1, 1, a['name'], align_left) for o in a['orders']: worksheet.write(th, 2, o['contract'] or u'无合同号', align_left) worksheet.write(th, 3, o['campaign'], align_left) worksheet.write(th, 4, o['is_sale_money'], money_align_left) worksheet.write(th, 5, o['is_medium_money'], money_align_left) th += 1 worksheet.merge_range(th, 0, th, 3, u'总计', align_center) worksheet.write(th, 4, total_is_sale_money, money_align_left) worksheet.write(th, 5, total_is_medium_money, money_align_left) workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % ('代理总表', str(year))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def write_ondutys_excel(ondutys, start_date, end_date): start_date = start_date.strftime('%Y-%m-%d') end_date = end_date.strftime('%Y-%m-%d') response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) red_align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1, 'color': 'red'}) url_format = workbook.add_format({ 'font_color': 'blue', 'underline': 1, 'valign': 'vcenter', 'border': 1 }) keys = [u'员工姓名', u'异常次数', u'操作'] worksheet.set_column(0, len(keys), 25) for k in range(len(keys)): worksheet.write(0, k, keys[k], align_center) th = 1 for k in range(len(ondutys)): worksheet.write(th, 0, ondutys[k]['user'].name, align_center) if ondutys[k]['count'] > 0: worksheet.write(th, 1, ondutys[k]['count'], red_align_center) else: worksheet.write(th, 1, ondutys[k]['count'], align_center) worksheet.write_url(th, 2, 'http://z.inad.com/account/onduty/%s/info?start_time=%s&end_time=%s' % ( ondutys[k]['user'].id, start_date, end_date), url_format, u'查看') th += 1 workbook.close() response.data = output.getvalue() filename = ("%s %s-%s.xls" % ("考勤表", start_date, end_date)) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def _findnsave_sale_download(name, data, cols): workbook = xlwt.Workbook(encoding='utf-8') sheet = workbook.add_sheet('default') for i, k in enumerate(cols): sheet.write(0, i, k) num = 1 for d in data: for i, k in enumerate(cols): v = d[k] sheet.write(num, i, v) num += 1 response = Response() response.status_code = 200 filename = name + '.xls' output = StringIO.StringIO() workbook.save(output) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0] or 'application/vnd.ms-excel', 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data), }) if not mimetype_tuple[1] is None: response.update({'Content-Encoding': mimetype_tuple[1]}) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') logger.info('download %s, %d items' % (filename, num - 1)) return response
def export_download(self,file_name, sheet_name, headings, data, heading_xf, data_xfs): response = Response() response.status_code = 200 ################################## # 新建excel并加入response对象 ################################## book = xlwt.Workbook(encoding='UTF-8') sheet = book.add_sheet(sheet_name) rowx = 0 for colx, value in enumerate(headings): sheet.write(rowx, colx, value, heading_xf) sheet.set_panes_frozen(True) sheet.set_horz_split_pos(rowx+1) sheet.set_remove_splits(True) for row in data: rowx += 1 for colx, value in enumerate(row): sheet.write(rowx, colx, value, data_xfs[colx]) output = StringIO.StringIO() book.save(output) response.data = output.getvalue() ################################ # 提供jquery下载的报文头 ################################# filename = file_name mimetype_tuple = mimetypes.guess_type(filename) #HTTP下载报文头 response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #jquery.fileDownload.js response.set_cookie('fileDownload', 'true', path='/') return response
def save_inventory(): current_date = datetime.date.today().strftime("%m/%d/%y") book = Workbook() sheet1 = book.add_sheet('inventory') file_name = request.form.get('file') inventory_list = model2.show_inventory() sheet1.write(0, 0, "Inventory " + current_date) sheet1.write(1, 0, "Tag Total") sheet1.write(2, 0, "1/2 Tag Total") sheet1.write(4, 0, "Sku") sheet1.write(4, 1, "#") sheet1.write(4, 2, "Tag") sheet1.write(4, 3, "Total") total = 0 single_row = 0 while single_row < len(inventory_list): print_row = sheet1.row(single_row + 5) for i in range(0, 3): print_row.write(i, inventory_list[single_row][i]) print_row.write(3, inventory_list[single_row][1] * inventory_list[single_row][2]) total += inventory_list[single_row][1] * inventory_list[single_row][2] single_row +=1 sheet1.write(1, 1, total) sheet1.write(2, 1, total / 2) response = Response() response.status_code = 200 output = StringIO.StringIO() book.save(output) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type(file_name) response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % file_name, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') return response
def toexcel_stock_template(): goods_allocation = GoodsAllocation.query.filter_by( users=current_user).order_by('sort').all() column_names = ['商品编号', '货位编号', '数量', '备注'] try: response = Response() response.status_code = 200 output = io.StringIO() workbook = xlsxwriter.Workbook(output, {'in_memory': True}) worksheet = workbook.add_worksheet('sheet') for i, x in enumerate(column_names): worksheet.write(0, i, x) workbook.close() output.seek(0) response.data = output.read() file_name = 'toexcel_stock_template.xlsx' mimetype_tuple = mimetypes.guess_type(file_name) response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Charset': 'UTF-8', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'Content-Disposition': 'attachment; filename=\"%s\";' % file_name, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({'Content-Encoding': mimetype_tuple[1]}) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response except Exception as e: return str(e)
def http_direct_view(stream, filename): response = Response() response.status_code = 200 response.data = stream mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Content-Type': mimetype_tuple[0], 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers return response
def write_rebate_order_excel(orders, year, month): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) keys = [u'区域', u'合同号', u'客户名称', u'代理/直客', u'项目名称', u'客户合同总金额', u'回款总金额', u'客户' + str(month) + u'月执行额', str(month) + u'月合同利润', u'合同开始', u'合同结束'] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_left) # 设置宽度为30 for k in range(len(keys) + 1): worksheet.set_column(k, 0, 15) # 设置高度 for k in range(0, len(orders) + 2): worksheet.set_row(k, 20) th = 1 for k in range(len(orders)): worksheet.write(th, 0, orders[k].locations_cn, align_left) worksheet.write(th, 1, orders[k].contract, align_left) worksheet.write(th, 2, orders[k].client.name, align_left) worksheet.write(th, 3, orders[k].agent.name, align_left) worksheet.write(th, 4, orders[k].campaign, align_left) worksheet.write(th, 5, orders[k].money, align_left) worksheet.write(th, 6, orders[k].back_moneys, align_left) worksheet.write(th, 7, orders[k].executive_report( g.user, year, [month], 'normal')[0], align_left) worksheet.write(th, 8, orders[k].executive_report( g.user, year, [month], 'normal')[0], align_left) worksheet.write(th, 9, orders[k].start_date_cn, align_left) worksheet.write(th, 10, orders[k].end_date_cn, align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % (u"Execution-rebate-order", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def gpustat_server(): stats = GPUStatCollection.new_query() rep = Response(json.dumps(stats.jsonify(), default=date_handler), mimetype='application/json') rep.headers = { **rep.headers, **{ 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET' } } return rep
def service_response(body, headers, status_code): """ Constructs a Flask Response from the body, headers, and status_code. :param str body: Response body as a string :param dict headers: headers for the response :param int status_code: status_code for response :return: Flask Response """ response = Response(body) response.headers = headers response.status_code = status_code return response
def _service_response(body, headers, status_code): """ Constructs a Flask Response from the body, headers, and status_code. :param str body: Response body as a string :param dict headers: headers for the response :param int status_code: status_code for response :return: Flask Response """ response = Response(body) response.headers = headers response.status_code = status_code return response
def test_header_x_clacks_overhead(self): """ Test the X-Clacks-Overhead header. Expected result: The response header is extended with the X-Clacks-Overhead field, but otherwise unchanged. """ response = Response() response.headers = MagicMock() response.headers.add = MagicMock() extended_response = _header_x_clacks_overhead(response) response.headers.add.assert_called_once_with('X-Clacks-Overhead', 'GNU Terry Pratchett') self.assertEqual(response, extended_response)
def raw_download(logged = False): if request.method == 'POST': league = request.values.get('league') group = request.values.get('group') year = request.values.get('year') response = Response() response.status_code = 200 workbook = generate_xls.generate_xls_raw(league, group, year) output = StringIO.StringIO() workbook.save(output) response.data = output.getvalue() filename = 'results_raw.xls' mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", # required, 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response else: if 'login' in session: logged = True labels = labels_getter(session) return render_template('raw_download.html', leagues = labels.get('leagues'), logged = logged) return render_template("index.html")
def write_frameworkorder_excel(orders): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) keys = [u"FrameworkOrder ID", u"代理集团", u"备注", u"合同金额", u"合同号", u"开始日期", u"结束日期", u"回款日期", u"直客销售", u"渠道销售", u"状态"] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_left) worksheet.set_column(0, 0 + k, 15) th = 1 for order in orders: worksheet.write(th, 0, order.id, align_left) worksheet.write(th, 1, order.group.name or " ", align_left) worksheet.write(th, 2, order.description or " ", align_left) worksheet.write(th, 3, order.money or 0, align_left) worksheet.write(th, 4, order.contract or u"无合同号", align_left) worksheet.write(th, 5, order.start_date_cn or " ", align_left) worksheet.write(th, 6, order.end_date_cn or " ", align_left) worksheet.write(th, 7, order.reminde_date_cn or " ", align_left) worksheet.write(th, 8, order.direct_sales_names or " ", align_left) worksheet.write(th, 9, order.agent_sales_names or " ", align_left) worksheet.write(th, 10, order.contract_status_cn or " ", align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % (u"FOrders", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def write_douban_order_excel(orders, year, month): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) keys = [u"合同号", u"客户名称", u"项目名称", u"合同总金额", u"收入", month + u"月执行额", u"返点成本", u"累计外包成本(已打款)", u"合同利润", u"合同开始", u"合同结束"] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_left) th = 1 for k in range(len(orders)): worksheet.write(th, 0, orders[k].contract, align_left) worksheet.write(th, 1, orders[k].client.name, align_left) worksheet.write(th, 2, orders[k].agent.name, align_left) worksheet.write(th, 4, orders[k].campaign, align_left) worksheet.write(th, 5, orders[k].money, align_left) worksheet.write(th, 6, orders[k].money * 0.4, align_left) worksheet.write(th, 7, orders[k].executive_report( g.user, year, [month], 'normal')[0], align_left) worksheet.write( th, 6, orders[k].rebate_money(year, month, 'cost'), align_left) worksheet.write(th, 8, orders[k].outsources_paied_sum, align_left) worksheet.write(th, 9, orders[k].profit_money(year, month), align_left) worksheet.write(th, 10, orders[k].start_date_cn, align_left) worksheet.write(th, 11, orders[k].end_date_cn, align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("%s-%s.xls" % (u"Execution-douban", datetime.datetime.now().strftime('%Y%m%d%H%M%S'))) mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def save_survey(): #Edit or create the actual question and answer if request.method == "POST": try: username = mongo.get_username(session['username']) if "save" in request.form and request.form["save"] == "true": survey_name = request.form["survey_name"] survey = mongo.get_survey(survey_name) output = StringIO.StringIO() response = Response() response.status_code = 200 output.write(survey_name + "\n") if "questions" in survey: for q in survey["questions"]: output.write("\n" + str(q["_id"]) + ". " + q["text"] + "\n") for a in q["answers"]: output.write(a["text"] + "\n") response.data = output.getvalue() response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Content-Type': "text/plain", 'Content-Disposition': 'attachment; filename= \"%s\";' % (survey_name + ".txt"), 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers return response elif "load" in request.form and request.form["load"] == "true": if request.form["option"]: load_survey_name = request.form["option"] survey_name = request.form["survey_name"] mongo.load_survey(survey_name, load_survey_name) survey = mongo.get_survey(survey_name) survey_log = survey_name.split(" ")[0]+"_log" log = mongo.get_survey_log(survey_log) result = mongo.exist_survey() mongo.insert_survey_log(survey_log, username, "load a new survey from " + request.form["option"]) survey = mongo.get_survey(survey_name) return render_template("surveypage.html", survey=survey, result=result, log=log) else: return render_template("error.html", msg="Bad Request! You have to select a survey to load") except KeyError: return render_template("error.html", msg="Bad Request!") else: return render_template("error.html", msg="Bad Request! Shouldn't come here")
def _findnsave_sale_download( name, data, cols ): workbook = xlwt.Workbook( encoding = 'utf-8' ) sheet = workbook.add_sheet( 'default' ) for i, k in enumerate( cols ): sheet.write( 0, i, k ) num = 1 for d in data: for i, k in enumerate( cols ): v = d[k] sheet.write( num, i, v ) num += 1 response = Response() response.status_code = 200 filename = name + '.xls' output = StringIO.StringIO() workbook.save( output ) response.data = output.getvalue() mimetype_tuple = mimetypes.guess_type( filename ) #HTTP headers for forcing file download response_headers = Headers( { 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[ 0 ] or 'application/vnd.ms-excel', 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len( response.data ), } ) if not mimetype_tuple[ 1 ] is None: response.update( { 'Content-Encoding': mimetype_tuple[ 1 ] } ) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie( 'fileDownload', 'true', path = '/' ) logger.info( 'download %s, %d items' % ( filename, num - 1 ) ) return response
def metrics(**args): """ Entry point of input for Metrics: form to input bibcodes """ # query = request.args.get('q', None) form = MetricsInputForm() # If we were called from results form, get bibcodes # from URL try: bibcodes = request.args.getlist('bibcode') except: bibcodes = [] if request.method == 'POST': export_file = '' export_id = request.form.get('exportid','') pdf_report = request.form.get('pdf_report','') if export_id: export_file = config.METRICS_TMP_DIR + '/' + export_id output_file = 'Metrics.xls' elif pdf_report: export_file = config.METRICS_TMP_DIR + '/' + pdf_report output_file = 'Metrics.pdf' if export_file: try: xls_file = open(export_file) except Exception, err: app.logger.error('ID %s. Unable retrieve saved metrics file: %s! (%s)' % (g.user_cookie_id,export_file,err)) response = Response() response.status_code = 200 xls_str = xls_file.read() xls_file.close() response.data = xls_str response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': 'text/xls; charset=UTF-8', 'Content-Disposition': 'attachment; filename=\"%s\";'%output_file, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def genResponse(output, filename): ######################### # Code for creating Flask # response ######################### response = Response() response.status_code = 200 response.data = output.getvalue() ################################ # Code for setting correct # headers for jquery.fileDownload ################################# mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') ################################ # Return the response ################################# return response
def export_teacher_week(): # Will need to pass the week and the teacher to the form # current_semester = request.form['semester'] # current_year = request.form['year'] response = Response() response.status_code = 200 # week_to_export = models.Schedule.q uery.filter_by(semester=current_semester, year=current_year).first() # if schedule_to_export is None: # return flash('Invalid semester') # else: # workbook = excel_lib.export_excel(schedule_to_export) output = StringIO.StringIO() # workbook.save(output) response.data = output.getvalue() filename = 'Weekly Schedule.xls' mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def handle_auth(): """ Forward the auth request to swift replace the given storage url with our own: 'X-Storage-Url': 'http://192.168.209.204:8080/v1/AUTH_test' becomes 'X-Storage-Url': 'http://localhost:4000/v1/AUTH_test' this is the first request any client makes; we passed on an auth-token from swift which is used in further requests :return: """ clientHeaders = request.headers swiftStatus, swiftHeaders = httpBackend.doAuthGetToken(reqHead=clientHeaders) log.debug("swift response: {}".format(swiftHeaders)) replaceStorageUrl(swiftResponse=swiftHeaders) log.debug("proxy response: {}".format(swiftHeaders)) r = Response(response="", status=swiftStatus) r.headers = swiftHeaders return r
def handle_object_get(thisAuth, thisContainer, thisObject): sdos_frontend = get_sdos_frontend(containerName=thisContainer, swiftTenant=thisAuth, swiftToken=get_token(request)) if sdos_frontend and thisObject.startswith(pseudoObjects.PSEUDO_OBJECT_PREFIX): return pseudoObjects.dispatch(sdos_frontend, thisObject) myUrl = get_proxy_request_url(thisAuth, thisContainer, thisObject) s, h, b = httpBackend.doGenericRequest( method=request.method, reqUrl=myUrl, reqHead=request.headers, reqArgs=request.args, reqData=request.data ) if s == 200 and len(b) and sdos_frontend: decrypted_b = sdos_frontend.decrypt_bytes_object(b, thisObject) # don't overwrite headers since the content length from the original response is incorrect; it accounts for padding... # the Response object will determine the actual, correct size return Response(response=decrypted_b, status=s, headers=strip_etag(h)) else: r = Response(response=b, status=s) # this covers the unencrypted case (1) and also HEAD requests (2). We overwrite ALL the headers to retain # the content size in the HEAD case r.headers = h return r
def export(excel_dict, file_name): data = OrderedDict() data.update(excel_dict) io = StringIO() save_data(io, data) response = Response() response.status_code = 200 response.data = io.getvalue() response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Content-Type': "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 'Content-Disposition': 'attachment; filename=\"%s\";' % file_name, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers return response
def download_textfile(): response = Response() response.status_code = 200 f = StringIO.StringIO() f.write('\n'.join(request.args['packages'].split(','))) response.data = f.getvalue() response.headers = Headers({ 'Pragma': 'public', 'Expires': '0', 'Cache-Control': 'must-revalidate, pre-check=0, post-check=0', 'Cache-Control': 'private', 'Content-Type': 'text/plain', 'Content-Disposition': 'attachement; filename=\"packages.txt\";', 'Content-Transfer-Encoding': 'Binary', 'Content-Length': len(response.data) }) return response
def report_as_pdf(id): response = Response() response.status_code = 200 data = Report.query.get(id) report_date_end = data.date + timedelta(days=-7) sums = report_table(data.date, report_date_end) chart = make_chart(data) pdf = StringIO.StringIO() pisa.CreatePDF(StringIO.StringIO(render_template('test_pdf.html', data=data, sums=sums, chart=chart).encode('utf-8')), pdf) response.data = pdf.getvalue() filename = 'ESA CM005 Waterproofing Report' + data.date.strftime('%Y-%m-%d') + '.pdf' mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') return response
def write_client_excel(agents): response = Response() response.status_code = 200 output = StringIO.StringIO() workbook = xlsxwriter.Workbook(output) worksheet = workbook.add_worksheet() align_left = workbook.add_format( {'align': 'left', 'valign': 'vcenter', 'border': 1}) align_center = workbook.add_format( {'align': 'center', 'valign': 'vcenter', 'border': 1}) keys = [u"名称", u"所属集团", u"2014年返点", u"2015年返点", u"2016年返点"] for k in range(len(keys)): worksheet.write(0, 0 + k, keys[k], align_center) worksheet.set_column(0, 0 + k, 20) th = 1 for k in range(len(agents)): worksheet.write(th, 0, agents[k]['name'], align_left) worksheet.write(th, 1, agents[k]['group_name'], align_left) worksheet.write(th, 2, agents[k]['rebate_2014'], align_left) worksheet.write(th, 3, agents[k]['rebate_2015'], align_left) worksheet.write(th, 4, agents[k]['rebate_2016'], align_left) th += 1 workbook.close() response.data = output.getvalue() filename = ("代理详情.xls") mimetype_tuple = mimetypes.guess_type(filename) response_headers = Headers({ 'Pragma': "public", 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) response.headers = response_headers response.set_cookie('fileDownload', 'true', path='/') return response
def _file_read(methods=["GET"]): resp = Response(json.dumps({})) resp.headers = Endpoints.headers hash_id = request.args.get('hash_id', None) if hash_id == None: resp.status_code = 404 resp.response = json.dumps({'error': {'code': 404, "msg": "not found"}}) return resp metadata = application.get_metadata(hash_id) if metadata == None: resp.status_code = 500 resp.response = json.dumps({'error': {'code': 500, "msg": "not found"}}) return resp t = application.get_target_value() resp.headers['Content-Type'] = metadata['type'] h = application.get_read_handle() h.seek(metadata['offset']) resp.response = h.read(metadata['size']) # h.close() return resp
def daily_report_as_pdf(id): response = Response() response.status_code = 200 t = Track.query.get(id) today = t.date entries = Track.query.join(Area).join(Material).join(Location).filter(Track.date == today).filter(Area.id == Track.area_id).filter(Material.id == Track.material_id).filter(Location.id == Track.location_id).all() pdf = StringIO.StringIO() pisa.CreatePDF(StringIO.StringIO(render_template('daily_report_pdf.html', entries=entries, today=today).encode('utf-8')), pdf) response.data = pdf.getvalue() filename = 'ESA CM005 Daily Report' + t.date.strftime('%Y-%m-%d') + '.pdf' mimetype_tuple = mimetypes.guess_type(filename) #HTTP headers for forcing file download response_headers = Headers({ 'Pragma': "public", # required, 'Expires': '0', 'Cache-Control': 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control': 'private', # required for certain browsers, 'Content-Type': mimetype_tuple[0], 'Content-Disposition': 'attachment; filename=\"%s\";' % filename, 'Content-Transfer-Encoding': 'binary', 'Content-Length': len(response.data) }) if not mimetype_tuple[1] is None: response.update({ 'Content-Encoding': mimetype_tuple[1] }) response.headers = response_headers #as per jquery.fileDownload.js requirements response.set_cookie('fileDownload', 'true', path='/') return response