示例#1
0
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
示例#2
0
    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
示例#3
0
文件: auth.py 项目: gongxiujin/rgcpis
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
示例#4
0
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
示例#5
0
    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)
示例#6
0
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'"
示例#7
0
文件: views.py 项目: kyspy/DailyTrak
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
示例#8
0
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
示例#10
0
    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
示例#11
0
        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
示例#12
0
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
示例#13
0
文件: order.py 项目: cash2one/braavos
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
示例#14
0
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
示例#16
0
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
示例#17
0
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
示例#18
0
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
示例#19
0
def werkzeug_headers():
    rfs_header = request.args["rfs_header"]
    response = Response()
    headers = Headers()
    headers.add("HeaderName", rfs_header)
    response.headers = headers
    return response
示例#20
0
    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
示例#21
0
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
示例#22
0
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
示例#23
0
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
示例#24
0
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
示例#25
0
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")
示例#26
0
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
示例#27
0
 def head(self):
     resp = Response(mimetype='application/json')
     resp.headers = {
         "Content-Type": "application/json",
         "data": {
             "count": int(self.get_query().count())
         }
     }
     return resp
示例#28
0
    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
示例#29
0
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
示例#30
0
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
示例#31
0
    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
示例#32
0
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
示例#33
0
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
示例#34
0
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
示例#35
0
    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
示例#36
0
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
示例#37
0
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)
示例#38
0
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
示例#39
0
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
示例#40
0
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
示例#41
0
    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
示例#42
0
    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
示例#43
0
    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)
示例#44
0
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")
示例#45
0
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
示例#46
0
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
示例#47
0
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")
示例#48
0
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
示例#49
0
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
示例#50
0
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
示例#51
0
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
示例#52
0
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
示例#53
0
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
示例#54
0
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
示例#55
0
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
示例#56
0
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
示例#57
0
文件: views.py 项目: kyspy/DailyTrak
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
示例#58
0
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
示例#59
0
    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
示例#60
0
文件: views.py 项目: kyspy/DailyTrak
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