def save(self, force_insert=False, force_update=False, **kwargs): """Overrides models.Model.save. - Generates slug. - Saves image file. """ # prefill the slug with the ID, it requires double save if not self.id: if isinstance(self.image, UploadedFile): # due to PIL has read several bytes from image, position in file has to be reset self.image.seek(0) super(Photo, self).save(force_insert, force_update) self.width, self.height = get_image_dimensions(self.image.path) self.slug = str(self.id) + '-' + self.slug force_insert, force_update = False, True image_changed = False else: old = Photo.objects.get(pk = self.pk) image_changed = old.image != self.image # rename image by slug imageType = detect_img_type(self.image.path) if imageType is not None: self.image = file_rename(self.image.name, self.slug, PHOTOS_TYPE_EXTENSION[ imageType ]) # delete formatedphotos if new image was uploaded if image_changed: super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs) self.width, self.height = get_image_dimensions(self.image.path) force_insert, force_update = False, True for f_photo in self.formatedphoto_set.all(): f_photo.delete() super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs)
def save(self, force_insert=False, force_update=False, **kwargs): """Overrides models.Model.save. - Generates slug. - Saves image file. """ # prefill the slug with the ID, it requires double save if not self.id: if isinstance(self.image, UploadedFile): # due to PIL has read several bytes from image, position in file has to be reset self.image.seek(0) # FIXME: better unique identifier, supercalifragilisticexpialidocious? self.slug = '' super(Photo, self).save(force_insert, force_update) self.width, self.height = get_image_dimensions(self.image.path) self.slug = str(self.id) + '-' + slugify(self.title) # truncate slug in order to fit in an ImageField and/or paths in Redirects self.slug = self.slug[:64] force_insert, force_update = False, True image_changed = False else: old = Photo.objects.get(pk=self.pk) image_changed = old.image != self.image # rename image by slug imageType = detect_img_type(self.image.path) if imageType is not None: self.image = file_rename(self.image.name.encode('utf-8'), self.slug, photos_settings.TYPE_EXTENSION[imageType]) # delete formatedphotos if new image was uploaded if image_changed: super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs) self.width, self.height = get_image_dimensions(self.image.path) force_insert, force_update = False, True for f_photo in self.formatedphoto_set.all(): f_photo.delete() super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs)
def save(self, force_insert=False, force_update=False, **kwargs): """Overrides models.Model.save. - Generates slug. - Saves image file. """ # prefill the slug with the ID, it requires double save if not self.id: if isinstance(self.image, UploadedFile): # due to PIL has read several bytes from image, position in file has to be reset self.image.seek(0) # FIXME: better unique identifier, supercalifragilisticexpialidocious? self.slug = '' super(Photo, self).save(force_insert, force_update) self.width, self.height = get_image_dimensions(self.image.path) self.slug = str(self.id) + '-' + slugify(self.title) # truncate slug in order to fit in an ImageField and/or paths in Redirects self.slug = self.slug[:64] force_insert, force_update = False, True image_changed = False else: old = Photo.objects.get(pk = self.pk) image_changed = old.image != self.image # rename image by slug imageType = detect_img_type(self.image.path) if imageType is not None: self.image = file_rename(self.image.name.encode('utf-8'), self.slug, photos_settings.TYPE_EXTENSION[ imageType ]) # delete formatedphotos if new image was uploaded if image_changed: super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs) self.width, self.height = get_image_dimensions(self.image.path) force_insert, force_update = False, True for f_photo in self.formatedphoto_set.all(): f_photo.delete() super(Photo, self).save(force_insert=force_insert, force_update=force_update, **kwargs)