def upload_report(cls, report): formats = ['pdf', 'xml'] try: for format in formats: if format == 'pdf': report_url = report.pdf_url else: report_url = report.xml_url request = requests.get(report_url, stream=True) filename = "appointment_%s_report.%s" % ( report.integrator_response.object_id, format) lf = TemporaryUploadedFile(filename, 'byte', 1000, 'utf-8') for block in request.iter_content(1024 * 8): # If no more file then stop if not block: break # Write image block to temporary file lf.write(block) lf.seek(0) lf.content_type = "application/%s" % format in_memory_file = InMemoryUploadedFile(lf, None, filename, lf.content_type, lf.tell(), None) lab_report, created = LabReport.objects.update_or_create( appointment_id=report.integrator_response.object_id) if lab_report: LabReportFile.objects.create(report_id=lab_report.id, name=in_memory_file) # Send Reports to Patient from ondoc.notification.tasks import send_lab_reports if format == 'pdf': try: send_lab_reports.apply_async( (report.integrator_response.object_id, ), countdown=1) except Exception as e: logger.error(str(e)) except Exception as e: logger.error(str(e))
def handle(self, *args, **options): queryset = UserInsurance.objects.all() for data in queryset: if data.coi: file_path = data.coi.url request = requests.get(file_path, stream=True) if request.status_code != requests.codes.ok: continue file_name = file_path.split('/')[-1] splited = file_name.split('.') splited = splited[0] file_name = str(splited) + '-' + str(uuid.uuid4().hex) + '.' + str(splited[-1]) temp_file = TemporaryUploadedFile(file_name, 'byte', 1000, 'utf-8') for block in request.iter_content(1024 * 8): if not block: break temp_file.write(block) data.coi = InMemoryUploadedFile(temp_file, None, file_name, 'application/pdf', temp_file.tell(), None) data.save()
def push_mis(): from ondoc.api.v1.utils import CustomTemporaryUploadedFile from ondoc.insurance.models import InsuranceMIS import pyminizip from ondoc.notification.models import EmailNotification from ondoc.api.v1.utils import util_absolute_url from ondoc.crm.admin.insurance import UserInsuranceResource, UserInsuranceDoctorResource, UserInsuranceLabResource, InsuredMemberResource from datetime import datetime, timedelta resources = [(UserInsuranceResource, InsuranceMIS.AttachmentType.USER_INSURANCE_RESOURCE), (UserInsuranceDoctorResource, InsuranceMIS.AttachmentType.USER_INSURANCE_DOCTOR_RESOURCE), (UserInsuranceLabResource, InsuranceMIS.AttachmentType.USER_INSURANCE_LAB_RESOURCE), (InsuredMemberResource, InsuranceMIS.AttachmentType.INSURED_MEMBERS_RESOURCE)] from_date = str(datetime.now().date() - timedelta(days=1)) to_date = from_date # arguments = { # 'from_date': from_date, # 'to_date': to_date, # } earliest_date = str(datetime(2019, 1, 1).date()) future_date = str(datetime.now().date() + timedelta(days=1)) date_tuple = ((from_date, to_date), (earliest_date, to_date)) email_attachments = [] mis_temporary_file = [] mis_temporary_file_paths = [] for resource in resources: resource_obj = resource[0]() for date in date_tuple: arguments = { 'from_date': date[0], 'to_date': date[1], } dataset = resource_obj.export(**arguments) filename = "%s_%s_%s.xls" % (resource_obj.__class__.__name__, date[0], date[1]) filename_prefix = "%s_%s_%s_" % (resource_obj.__class__.__name__, date[0], date[1]) filename_suffix = ".xls" mis_temporary_file.append( CustomTemporaryUploadedFile(filename, 'byte', 1000, 'utf-8', filename_prefix, filename_suffix)) f = open( mis_temporary_file[len(mis_temporary_file) - 1].temporary_file_path(), 'wb') f.write(dataset.xls) f.seek(0) mis_temporary_file_paths.append( mis_temporary_file[len(mis_temporary_file) - 1].temporary_file_path()) zipfilename = "All_MIS_%s.zip" % from_date zipfile = TemporaryUploadedFile(zipfilename, 'byte', 1000, 'utf-8') zf = open(zipfile.temporary_file_path(), 'wb') pyminizip.compress_multiple(mis_temporary_file_paths, [], zipfile.temporary_file_path(), settings.INSURANCE_MIS_PASSWORD, int(8)) for tf in mis_temporary_file: tf.close() attachment = InMemoryUploadedFile(zipfile, None, zipfilename, 'application/zip', zipfile.tell(), None) insurance_mis_obj = InsuranceMIS( attachment_file=attachment, attachment_type=InsuranceMIS.AttachmentType.ALL_MIS_ZIP) insurance_mis_obj.save() zf.close() email_attachments.append({ 'filename': zipfilename, 'path': util_absolute_url(insurance_mis_obj.attachment_file.url) }) EmailNotification.send_insurance_mis(email_attachments)