diff user_photos/s3.py @ 718:bf5340705d0c

Completed view to delete user photos. Still need to modify the admin to delete not just the model instance but the S3 bucket keys.
author Brian Neal <bgneal@gmail.com>
date Wed, 18 Sep 2013 21:34:05 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/user_photos/s3.py	Wed Sep 18 21:34:05 2013 -0500
@@ -0,0 +1,40 @@
+"""Module for all S3 related operations for the user_photos application."""
+
+import logging
+
+from django.conf import settings
+
+from core.s3 import S3Bucket
+
+
+logger = logging.getLogger(__name__)
+
+
+def delete_photos(qs):
+    """Delete the photos stored on S3 for the given Photo queryset.
+
+    Returns the number of photos actually deleted.
+
+    """
+
+    bucket = S3Bucket(settings.USER_PHOTOS_ACCESS_KEY,
+                      settings.USER_PHOTOS_SECRET_KEY,
+                      settings.USER_PHOTOS_BASE_URL,
+                      settings.USER_PHOTOS_BUCKET)
+
+    key_urls = []
+    for photo in qs:
+        key_urls.append(photo.url)
+        key_urls.append(photo.thumb_url)
+    req_cnt = len(key_urls)
+
+    logger.info("Requesting deletion of %d user photo(s) from S3", req_cnt)
+
+    act_cnt = bucket.delete_keys(key_urls)
+
+    if act_cnt == req_cnt:
+        logger.info("Deleted %d user photo(s) from S3", act_cnt)
+    else:
+        logger.warning("Deleted %d user photo(s) out of %d", act_cnt, req_cnt)
+
+    return act_cnt