3.3.0: lo que entra nuevo ya entra ordenado
Las cuatro funciones que eligió Munka tras la 3.2.0: - Nueva pieza: crea «NN- Título» en su mes con el número que toca y sus subcarpetas; si la pieza ya existe, lo dice. Se deshace mientras siga vacía. - Bandeja de entrada: lo que se deje en _Entrada se reparte por mes, día de rodaje y cámara. «Traer material» copia una tarjeta comprobando cada archivo (se vuelve a leer y se compara la huella), conserva la fecha del rodaje y no toca el origen. - Versiones del mismo clip: dos clips de cámara que se llaman igual, duran lo mismo y tienen la misma forma son el mismo clip; se queda el de más imagen y el otro va a Duplicados. - Orden automático, apagado de fábrica: una tarea del Programador de tareas de Windows lanza «automatico», que lee todas las carpetas y hace solo lo seguro. No toca una carpeta que no se pueda leer entera ni una cuyo plan mueva más de 3.000 archivos, y si el programa ya está abierto se lo pide a él. Desinstalar quita la tarea. De paso: una ruta que empieza por guion bajo ya no pierde el guion al ir a la papelera. Pruebas: prueba_orden.py 24, probar.py 19, prueba_funcional.py 29, prueba_ventana.py 18 desde el código y 17 con el paquete. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
14
instalar.py
14
instalar.py
@@ -25,6 +25,7 @@ import ctypes
|
||||
import shutil
|
||||
import winreg
|
||||
import sqlite3
|
||||
import subprocess
|
||||
from ctypes import wintypes as W
|
||||
|
||||
import ventana as V
|
||||
@@ -35,8 +36,10 @@ DESCRIPCION = "OrganiLAB · ordena y aligera el material de video"
|
||||
# «equipo» es esa carpeta (sus programas, su menú Inicio y su Escritorio) y la línea de Aplicaciones va a
|
||||
# una clave aparte del registro. Lo usa prueba_ventana.py.
|
||||
ENSAYO = os.environ.get("ORGANILAB_ENSAYO", "")
|
||||
CLAVE = r"Software\OrganiLAB-ensayo\Alta" if ENSAYO else r"Software\Microsoft\Windows\CurrentVersion\Uninstall\OrganiLAB"
|
||||
CLAVE_DE_VERDAD = r"Software\Microsoft\Windows\CurrentVersion\Uninstall\OrganiLAB"
|
||||
CLAVE = r"Software\OrganiLAB-ensayo\Alta" if ENSAYO else CLAVE_DE_VERDAD
|
||||
MARCA_MUDANZA = "instalado-en.txt" # en la carpeta de origen: adónde se instaló lo que había aquí
|
||||
TAREA_AUTOMATICO = "OrganiLAB - orden automatico" # la tarea de Windows del orden automático (organizador.TAREA_WINDOWS)
|
||||
INVENTARIO = "inventario.sqlite"
|
||||
NO_VIAJA = {"actualizacion", "__pycache__", MARCA_MUDANZA} # del primer nivel: lo que es de paso
|
||||
NO_VIAJA_DATOS = {"sesion.json", "ventana"} # de datos\: la sesión abierta y el perfil del motor, que se rehace solo
|
||||
@@ -347,6 +350,15 @@ def desinstalar(base=None):
|
||||
winreg.DeleteKey(winreg.HKEY_CURRENT_USER, CLAVE)
|
||||
except OSError:
|
||||
pass
|
||||
# si estaba encendido el orden automático, su tarea de Windows se va con el programa: si no,
|
||||
# seguiría intentando abrir cada noche algo que ya no está. Solo cuando se desinstala de verdad:
|
||||
# las pruebas trabajan contra una clave de ensayo y no deben tocar la tarea de nadie.
|
||||
if not ENSAYO and CLAVE == CLAVE_DE_VERDAD:
|
||||
try:
|
||||
subprocess.run(["schtasks", "/Delete", "/F", "/TN", TAREA_AUTOMATICO], capture_output=True, timeout=30,
|
||||
creationflags=getattr(subprocess, "CREATE_NO_WINDOW", 0))
|
||||
except (OSError, subprocess.SubprocessError):
|
||||
pass
|
||||
return {"accesos": quitados}
|
||||
|
||||
|
||||
|
||||
Referencia en una nueva incidencia
Block a user