IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Fonctionnement du FileField


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut Fonctionnement du FileField
    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/ )
    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!
    bref, quelqu'un à une idée de la manière dont ca doit se passer?
    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

  2. #2
    Membre averti
    Profil pro
    Ingénieur développement logiciel
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciel

    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    C'est bon!

    La solution est là :
    http://mathieu.agopian.info/blog/200...-shell-python/

    il faut ouvrir le fichier avec 'open'
    puis ouvrir un Field dessus
    et ne pas oublier le save=False
    (mais ne pas oublier de faire monobject.save() tout à la fin!!!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/06/2003, 16h51
  2. Réponses: 5
    Dernier message: 14/05/2003, 14h51
  3. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  4. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo