def _handle_no_access(self, pm: PathMunger): cna = pm.get_noaccess_converter() pm.set_dest_file_name(".txt") cna.fout = pm.get_dest_file_path() if pm.is_dest_there(): return True if cna.convert(): return True return False
def _handle_restricted(self, pm: PathMunger): pm.is_no_access = True if self._handle_no_access(pm): self._write_success(pm) return True else: self._write_fail(pm) return False
def __write_ptoa(self, pm: PathMunger, success=True): ptoa_files = PtoAFiles() ptoa_files.root = globals()['__P2ADB__'] ptoa_files.p_file_name = pm.get_source_file_path() ptoa_files.p_file_size = os.path.getsize(pm.get_source_file_path()) ptoa_files.a_file_name = pm.get_dest_file_path() try: ptoa_files.a_file_size = os.path.getsize(pm.get_dest_file_path()) except OSError as e: ptoa_files.a_file_size = 0 if success: ptoa_files.completed = True ptoa_files.date_completed = datetime.now() else: ptoa_files.completed = False ptoa_files.date_completed = datetime.now() ptoa_files.save()
def _handle_conversion(self, pm: PathMunger): mime = pm.get_mime_type() if mime == "image": if self._handle_img(pm): return True if mime == "audio": if self._handle_audio(pm): return True if mime == "video": self._handle_video(pm) if mime == "sanc_document" or mime == "application": if self._handle_document(pm): return True if mime == "sanc_no_access": if self._handle_no_access(pm): return True return False
def _handle_document(self, pm: PathMunger): cdf = pm.get_document_converter() pm.set_dest_file_name(".pdf") cdf.fout = pm.get_dest_file_path() cdf.mime = pm.source_mime # Is this a no_access_file if cdf.is_no_access_file(): if self._handle_no_access(pm): return True return False # No proceed with potential conversion if pm.is_dest_there(): return True elif not pm.needs_conversion(): pm.do_a_copy() return True if cdf.convert(): return True return False
def _handle_video(self, pm: PathMunger): cav = pm.get_video_converter() cav.mime = pm.source_mime pm.set_dest_file_name(cav.which_ext()) cav.av_out = pm.dest_file_path if pm.is_dest_there(): return True if not cav.needs_conversion(): pm.do_a_copy() return True if cav.convert(): return True return False
def _handle_audio(self, pm: PathMunger): caf = pm.get_audio_converter() caf.mime = pm.source_mime pm.set_dest_file_name(caf.which_ext()) caf.av_out = pm.get_dest_file_path() if pm.is_dest_there(): return True if not caf.needs_conversion(): if not pm.do_a_copy(): return False return True if pm.is_dest_there(): # Write Success return True if not caf.convert(): # Fail return False
def _handle_img(self, pm: PathMunger): try: cif = pm.get_img_converter() pm.set_dest_file_name(cif.which_ext()) cif.img_out = pm.get_dest_file_path() if pm.is_dest_there(): return True if not cif.needs_conversion(): if not pm.do_a_copy(): return False return True if cif.convert(): return True return False except ConvertImgError: return False
def move(self): for base_path in self.next_path(): pm = PathMunger(base_path, "T:") self.logger.info("CONVERTING: \t{}".format(pm.get_source_bag())) p_root_db = None l = [] try: p_root_db = PtoADB.create(p_root=pm.get_source_bag()) except Exception as e: p_root_db = PtoADB.get(PtoADB.p_root == pm.get_source_bag()) if p_root_db.completed_conversion: self.logger.info("Already Converted: \t{}".format(pm.get_source_bag())) continue else: # Find files in this root that are converted for f in PtoAFiles.select().where(PtoAFiles.root == p_root_db): l.append(f.p_file_name) globals()['__P2ADB__'] = p_root_db for root, file in self.get_next_file_path(pm.get_source_bag()): if os.path.join(root, file) in l: continue pm = PathMunger(base_path, "T:") pm.set_current_targets(root, file) pm.create_dest_path() # Handle Restricted Files if self._is_a_blank_path(pm.source_base): if self._handle_restricted(pm): self._write_success(pm) else: self._write_fail(pm) continue ext = os.path.splitext(file)[1] if len(ext) < 4 or len(ext) > 5: # Extension will not be determinable go ahead and copy if pm.do_a_copy(): self._write_success(pm) if pm.is_pass_through(): if pm.is_dest_there(): self._write_success(pm) continue if pm.do_a_copy(): self._write_success(pm) continue self._write_fail(pm) else: if self._handle_conversion(pm): self._write_success(pm) else: self._write_fail(pm) p_root_db.completed_conversion = True p_root_db.date_completed = datetime.now() p_root_db.save()
def _write_fail(self, pm: PathMunger): self.logger.info(pm.get_fail_message(pm.get_error())[0]) self.review.write(pm.get_fail_message(pm.get_error())[1]) self.__write_ptoa(pm, False)
def _write_success(self, pm: PathMunger): self.logger.info(pm.get_success_message()[0]) self.success_move.write(pm.get_success_message()[1]) self.__write_ptoa(pm)