diff gpp/potd/models.py @ 330:3c951521e0ec

Fixing #152; POTD was saving thumbnail every night and making tons of thumbnail directories all over. Also added thumbnail images in the admin.
author Brian Neal <bgneal@gmail.com>
date Thu, 24 Feb 2011 03:45:50 +0000
parents 5c889b587416
children 7dbdbb08e68c
line wrap: on
line diff
--- a/gpp/potd/models.py	Wed Feb 23 03:40:18 2011 +0000
+++ b/gpp/potd/models.py	Thu Feb 24 03:45:50 2011 +0000
@@ -45,7 +45,20 @@
         return ('potd-archive', [str(self.id)])
 
     def save(self, *args, **kwargs):
+        if not self.pk:
+            self.generate_thumb()
 
+        super(Photo, self).save(*args, **kwargs)
+        Sequence.objects.insert_photo(self.pk)
+
+    def delete(self):
+        Sequence.objects.remove_photo(self.pk)
+        super(Photo, self).delete()
+
+    def can_comment_on(self):
+        return Current.objects.get_current_id() == self.id
+
+    def generate_thumb(self):
         if self.thumb:
             self.thumb.delete(save=False)
 
@@ -59,16 +72,6 @@
         image.save(s, format)
         thumb_name = os.path.basename(self.photo.path)
         self.thumb.save(thumb_name, ContentFile(s.getvalue()), save=False)
-        
-        super(Photo, self).save(*args, **kwargs)
-        Sequence.objects.insert_photo(self.pk)
-
-    def delete(self):
-        Sequence.objects.remove_photo(self.pk)
-        super(Photo, self).delete()
-
-    def can_comment_on(self):
-        return Current.objects.get_current_id() == self.id
 
 
 class CurrentManager(models.Manager):
@@ -103,27 +106,25 @@
     def insert_photo(self, photo_id):
         current = Current.objects.get_current_id()
         if current is not None:
-            try:
-                s = self.get(pk=1)
-                seq = [int(x) for x in s.seq.split(',')]
-                if photo_id not in seq:
-                    i = seq.index(current)
-                    seq.insert(i + 1, photo_id)
-                    s.seq = ','.join([str(x) for x in seq])
-                    s.save()
-            except:
-                pass
+            s = self.get(pk=1)
+            seq = [int(x) for x in s.seq.split(',')]
+            if photo_id not in seq:
+                i = seq.index(current)
+                seq.insert(i + 1, photo_id)
+                s.seq = ','.join([str(x) for x in seq])
+                s.save()
 
     def remove_photo(self, photo_id):
         try:
             s = self.get(pk=1)
+        except Sequence.DoesNotExist:
+            pass
+        else:
             seq = [int(x) for x in s.seq.split(',')]
             if photo_id in seq:
                 seq.remove(photo_id)
                 s.seq = ','.join([str(x) for x in seq])
                 s.save()
-        except:
-            pass
 
 
 class Sequence(models.Model):