def export(request): ''' 导出巡检报告 ''' response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=data.txt' report_list = Report.objects.all() logger.info(u'获得所有报告') parser = Parser(logger) i = 1 seperator = '#' for report in report_list: pass_rate = float(report.pass_num) / float(report.total_num) str_pass_rate = str(int(pass_rate * 100)) + '%' #获得巡检报告在服务器的目录 report_dir = settings.MEDIA_ROOT + report.system + os.path.sep + report.province + os.path.sep + report.reporter time_str = os.path.dirname(report.report_path)[-17:] time_str.replace('\\',os.path.sep) report_dir = report_dir + os.path.sep + time_str detail_info = parser.parse_outputxml(report_dir + os.path.sep + 'output.xml') if detail_info == '': #确少详细信息的记录不导出 continue response.write(str(i) + seperator + report.system + seperator \ + report.province + seperator + report.city + seperator \ + str(report.total_num) + seperator + str(report.pass_num) + seperator \ + str_pass_rate + seperator + report.sub_time.strftime("%Y-%m-%d") \ + seperator + report.reporter + seperator + ' ' + seperator + ' ' + detail_info + seperator) i += 1 return response
def export(request): ''' 导出巡检报告 ''' response = HttpResponse(content_type='text/plain') response['Content-Disposition'] = 'attachment; filename=data.txt' report_list = Report.objects.all() logger.info(u'获得所有报告') parser = Parser(logger) i = 1 seperator = '#' for report in report_list: pass_rate = float(report.pass_num) / float(report.total_num) str_pass_rate = str(int(pass_rate * 100)) + '%' #获得巡检报告在服务器的目录 report_dir = settings.MEDIA_ROOT + report.system + os.path.sep + report.province + os.path.sep + report.reporter time_str = os.path.dirname(report.report_path)[-17:] time_str.replace('\\', os.path.sep) report_dir = report_dir + os.path.sep + time_str detail_info = parser.parse_outputxml(report_dir + os.path.sep + 'output.xml') if detail_info == '': #确少详细信息的记录不导出 continue response.write(str(i) + seperator + report.system + seperator \ + report.province + seperator + report.city + seperator \ + str(report.total_num) + seperator + str(report.pass_num) + seperator \ + str_pass_rate + seperator + report.sub_time.strftime("%Y-%m-%d") \ + seperator + report.reporter + seperator + ' ' + seperator + ' ' + detail_info + seperator) i += 1 return response
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)