拍爱

storage_utils.py 750B

1234567891011121314151617181920212223242526272829
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import shortuuid
  4. from django.core.files.storage import default_storage
  5. from django.db import transaction
  6. from filemd5 import calculate_md5
  7. from photo.models import PhotoUUIDInfo
  8. @transaction.atomic
  9. def file_save(file_, prefix='img', ext='jpeg'):
  10. ext = os.path.splitext(file_.name)[-1] or ext
  11. photo, created = PhotoUUIDInfo.objects.select_for_update().get_or_create(photo_md5=calculate_md5(file_))
  12. if not photo.photo_path:
  13. path = '{}/{}{}'.format(prefix, shortuuid.uuid(), ext)
  14. if default_storage.exists(path):
  15. default_storage.delete(path)
  16. default_storage.save(path, file_)
  17. photo.photo_path = path
  18. photo.save()
  19. return photo.photo_path, ext