Ok its running in a infinite loop because im calling
self.*photo.save() and that starts this loop all over again. Maybe I
can add a field to the model like booleen resized and if its true dont
do any resizing but if its false then perform some resizing(aka run
the function)? also im going to have to delete these files when the
object is deleted too.

On Oct 15, 6:01 am, Devin M <devin...@gmail.com> wrote:
> Hello everyone,
>     I am writing a save handler in my models.py file to run a few
> actions after a save. to do this I have a function called make_photos
> and a connection to the post_save signal.
> Here is my code:
> class Album(models.Model):
>     title = models.CharField(max_length=200)
>     date = models.DateField(blank=True, null=True)
>     desc = models.TextField(blank=True, null=True)
>     comments = models.BooleanField()
>     published = models.BooleanField(default=True)
>     tags = models.CharField(max_length=200, blank=True, null=True)
>     def __unicode__(self):
>         return u'%s' % (self.title)
>
> class Photo(models.Model):
>     title = models.CharField(max_length=200, default='Untitled Photo')
>     album = models.ForeignKey(Album, blank=True, null=True)
>     desc = models.TextField(blank=True, null=True)
>     date = models.DateField(blank=True, null=True)
>     comments = models.BooleanField()
>     published = models.BooleanField(default=True)
>     tags = models.CharField(max_length=200, blank=True, null=True)
>     thumb_photo = models.ImageField(upload_to='thumb_images',
> blank=True, null=True)
>     large_photo = models.ImageField(upload_to='large_images',
> blank=True, null=True)
>     original_photo = models.ImageField(upload_to='original_images',
> blank=True, null=True)
>     def makeimages(self):
>         (dirName, fileName) = os.path.split(self.original_photo.path)
>         (fileBaseName, fileExtension)=os.path.splitext(fileName)
>
>         #Save the thumbnail
>         thumb_width = 300
>         thumb_height = 300
>         thumb = Image.open(self.original_photo.path)
>         thumb.resize((thumb_width,thumb_height), Image.ANTIALIAS)
>         thumb_path = "/tmp/" + str(fileBaseName) + "_thumb.jpg"
>         thumb.save(thumb_path, "JPEG")
>         thumb_img_file = open(thumb_path, 'r')
>         thumb_file = File(thumb_img_file)
>         self.thumb_photo.save(str(fileBaseName) + '_thumb.jpg',
> thumb_file, save=True)
>         thumb_img_file.close()
>
>         #Save the large
>         large_width = 1024
>         large_height = 768
>         large = Image.open(self.original_photo.path)
>         large.resize((large_width,large_height), Image.ANTIALIAS)
>         large_path = "/tmp/" + str(fileBaseName) + "_large.jpg"
>         large.save(thumb_path, "JPEG")
>         large_img_file = open(thumb_path, 'r')
>         large_file = File(thumb_img_file)
>         self.thumb_photo.save(str(fileBaseName) + '_large.jpg',
> large_file, save=True)
>         large_img_file.close()
>
>         post_save.connect(makeimages)
>
> The only problem i have with this code is that it runs every save. So
> it creates a infinite loop of sorts and I dont know how to make it
> perform this action once. Is there another signal I should use? Any
> ideas?
>
> Regards,
> Devin M

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to