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