示例#1
0
def handle_uploaded_file(f, system, province, reporter):
    '''
            处理巡检人员提交的巡检报告文件
    f表示提交的报告压缩文件
    system表示巡检的系统
    province表示所在的省
    reporter表示提交人员
    '''
    report_path = ""
        #在服务器上创建路径存储巡检人员提交的报告
    try:
        path = settings.MEDIA_ROOT + system + os.path.sep + province + os.path.sep + reporter + time.strftime('\\%Y\\%m\\%d\\%H%M%S\\')
        if not os.path.exists(path):
            os.makedirs(path)
        zip_file = open('report.zip', 'wb+')
        for chunk in f.chunks():
            zip_file.write(chunk)
        zip_file.close()
        zip = zipfile.ZipFile('report.zip')
        for filename in zip.namelist():
            data = zip.read(filename)
            filename = os.path.split(filename)[1]
            file = open(os.path.join(path, filename), 'wb+')
            file.write(data)
            file.close()
            logger.info(filename + u'已上传到服务器' + path)
            if filename == 'report.html':
                logger.info(u'找到report.html')
                report_path = os.path.join(path, filename)
                report_path = report_path.replace(settings.MEDIA_ROOT, '')
                #抽取通过测试的数目和未通过的数目
                pattern = re.compile(r'"fail":\d+,"label":"All Tests","pass":\d+')
                match = pattern.search(data)
                str = match.group()
                nums = re.findall(r'\d+', str)
                fail_num = int(nums[0])
                pass_num = int(nums[1])
                logger.info(u'抽取通过测试的数目和未通过的数目')
            elif filename == 'output.xml':
                logger.info(u'找到output.xml')
                output_xml_path = os.path.join(path, filename)
                parser = Parser(logger)
                apdex_index = parser.calculate_apdex(output_xml_path)

    except Exception, e:
        logger.error(e)