def delete_partition(self, part): 'Ejecuta el proceso de eliminar la particion de la lista' i = get_row_index(self.lista, part) particion = self.lista[i] inicio = particion[TblCol.INICIO] fin = particion[TblCol.FIN] del_sig = del_ant = False # Si tiene una fila anterior if i > 0: p_anterior = self.lista[i - 1] if self.is_summable(p_anterior, particion): del_ant = True inicio = p_anterior[TblCol.INICIO] # si tiene una fila siguiente if has_next_row(self.lista, i): p_siguiente = self.lista[i + 1] if self.is_summable(p_siguiente, particion): del_sig = True fin = p_siguiente[TblCol.FIN] tamano = fin - inicio temp = copy(particion) temp[TblCol.DISPOSITIVO] = '' # Validar de que tipo quedará la particion libre if is_primary(temp): temp[TblCol.TIPO] = msj.particion.primaria elif is_logic(temp): temp[TblCol.TIPO] = msj.particion.logica temp[TblCol.FORMATO] = msj.particion.libre temp[TblCol.MONTAJE] = '' temp[TblCol.TAMANO] = humanize(tamano) temp[TblCol.USADO] = humanize(0) temp[TblCol.LIBRE] = humanize(tamano) temp[TblCol.INICIO] = inicio temp[TblCol.FIN] = fin temp[TblCol.FORMATEAR] = False temp[TblCol.ESTADO] = PStatus.FREED # Sustituimos con los nuevos valores self.lista[i] = temp # Borramos los esṕacios vacios contiguos si existieren if del_sig: del self.lista[i + 1] if del_ant: del self.lista[i - 1] # Si lo que se estaeliminando no es un espacio libre if not is_free(particion): # Agregamos la accion correspondiente self.acciones.append(['borrar', self.disco, None, particion[TblCol.INICIO], particion[TblCol.FIN], particion[TblCol.FORMATO], msj.particion.get_tipo_orig( particion[TblCol.TIPO]), 0])
def delete_partition(self, part): 'Ejecuta el proceso de eliminar la particion de la lista' i = get_row_index(self.lista, part) particion = self.lista[i] inicio = particion[TblCol.INICIO] fin = particion[TblCol.FIN] del_sig = del_ant = False # Si tiene una fila anterior if i > 0: p_anterior = self.lista[i - 1] if self.is_summable(p_anterior, particion): del_ant = True inicio = p_anterior[TblCol.INICIO] # si tiene una fila siguiente if has_next_row(self.lista, i): p_siguiente = self.lista[i + 1] if self.is_summable(p_siguiente, particion): del_sig = True fin = p_siguiente[TblCol.FIN] tamano = fin - inicio temp = copy(particion) temp[TblCol.DISPOSITIVO] = '' # Validar de que tipo quedará la particion libre if is_primary(temp): temp[TblCol.TIPO] = msj.particion.primaria elif is_logic(temp): temp[TblCol.TIPO] = msj.particion.logica temp[TblCol.FORMATO] = msj.particion.libre temp[TblCol.MONTAJE] = '' temp[TblCol.TAMANO] = humanize(tamano) temp[TblCol.USADO] = humanize(0) temp[TblCol.LIBRE] = humanize(tamano) temp[TblCol.INICIO] = inicio temp[TblCol.FIN] = fin temp[TblCol.FORMATEAR] = False temp[TblCol.ESTADO] = PStatus.FREED # Sustituimos con los nuevos valores self.lista[i] = temp # Borramos los esṕacios vacios contiguos si existieren if del_sig: del self.lista[i + 1] if del_ant: del self.lista[i - 1] # Si lo que se estaeliminando no es un espacio libre if not is_free(particion): # Agregamos la accion correspondiente self.acciones.append([ 'borrar', self.disco, None, particion[TblCol.INICIO], particion[TblCol.FIN], particion[TblCol.FORMATO], msj.particion.get_tipo_orig(particion[TblCol.TIPO]), 0 ])
def get_next_free_partition(self): """Retorna la fila siguiente si existe y se trata de un espacio libre, sino retorna None""" if has_next_row(self.lista, self.num_fila_act): actual_row = self.lista[self.num_fila_act] next_row = get_next_row(self.lista, None, self.num_fila_act) # Si la particion es del mismo tipo (Extendida o Primaria) # Y se trata de un espacio libre if actual_row[TblCol.TIPO] == next_row[TblCol.TIPO] and is_free(next_row): return next_row return None
def get_next_free_partition(self): '''Retorna la fila siguiente si existe y se trata de un espacio libre, sino retorna None''' if has_next_row(self.lista, self.num_fila_act): actual_row = self.lista[self.num_fila_act] next_row = get_next_row(self.lista, None, self.num_fila_act) # Si la particion es del mismo tipo (Extendida o Primaria) # Y se trata de un espacio libre if actual_row[TblCol.TIPO] == next_row[TblCol.TIPO] \ and is_free(next_row): return next_row return None