Bonjour, j'ai un réel problème pour mettre à jour un fichier dans un models.FileField.
J'expose le cas :
J'ai une classe ObjectVideo, avec un champ
video = models.FileField(upload_to='videos/videos/', null=True)
La grande question est que une fois uploadée, je la re-encode avec un cron. Or dans le script python qui va re-encoder (avec ffmpeg), me produit un fichier, mais impossible de le mettre à jour pour mon champ vidéo!
Les opérations que je font sont :
(version dpaste : http://dpaste.com/332768/ )
bref, quelqu'un à une idée de la manière dont ca doit se passer?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #on créé une nouvelle vidéo et on récupère l'absolute path sur la machine path_new_video = video_compression(objectvideo.video) #on récupère l'ancien absolute path path, ext = os.path.splitext(objectvideo.video._get_path()) #on recupère name = data/video/video/foo, soit l'equivalent de l'url name, ext2 = os.path.splitext(objectvideo.video._get_url()) #on delete l'ancienne os.remove(objectvideo.video._get_path()) #on calcule le new_path new_path = path + '_480p.flv' new_name = name + '_480p.flv' #on le met où il devrait être pour la machine os.rename(path_new_video, new_path) #et c'est là où je bloque : ca fait tout peter objectvideo.video = new_path objectvideo.treated = True objectvideo.save() #en gros ici le objectvideo.video.path est bon, mais le .name ne l'est plus, et si je met le .name à jour, le .path s'adapte sur le .name!
Je sais qu'il faudrait limite créer un objet FileField, mais il demande des filename et des content qui ne lui plaise jamais. Bref je demande de l'aide sur la procédure à adapter!
Merci à vous
Partager