Uploads do Django: Descartar duplicados enviados, usar arquivo existente (cheque baseado em md5)

Eu tenho um modelo com umFileField, que contém arquivos enviados pelo usuário. Desde que eu quero economizar espaço, gostaria de evitar duplicatas.

O que eu gostaria de alcançar:

Calcular os arquivos enviadoschecksum md5Armazene o arquivo com onome de arquivo baseado em seu md5sumSe um arquivo com esse nome já estiver lá (o novo arquivo é umduplicado)descartar o arquivo carregado e usar o arquivo existente

1 e2 já está funcionando, masComo eu poderia esquecer uma duplicata enviada e usar o arquivo existente?

Note que eu gostaria demantenha o arquivo existente enão Sobrescrevê-lo (principalmente para manter o tempo modificado o mesmo - melhor para backup).

Notas:

Estou usando o Django 1.5O manipulador de upload édjango.core.files.uploadhandler.TemporaryFileUploadHandler

Código:

def media_file_name(instance, filename):
    h = instance.md5sum
    basename, ext = os.path.splitext(filename)
    return os.path.join('mediafiles', h[0:1], h[1:2], h + ext.lower())

class Media(models.Model):
    orig_file = models.FileField(upload_to=media_file_name)
    md5sum = models.CharField(max_length=36)
    ...

    def save(self, *args, **kwargs):
            if not self.pk:  # file is new
                md5 = hashlib.md5()
                for chunk in self.orig_file.chunks():
                    md5.update(chunk)
                self.md5sum = md5.hexdigest()
            super(Media, self).save(*args, **kwargs)

Qualquer ajuda é apreciada!

questionAnswers(4)

yourAnswerToTheQuestion