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.