Re: ImageField anti-duplication

2009-09-20 Thread A. Rossi

Yup, that did it!
Thanks for pointing that out!  That article was hard to find in the
documentation.


On Sep 12, 7:58 pm, "A. Rossi"  wrote:
> I had not considered writing a custom Storage class. I may try that if
> there are no other alternatives.
>
> Any other ideas/solutions?
>
> On Sep 12, 5:31 am, vinilios  wrote:
>
> > Have you read this ?
>
> >http://docs.djangoproject.com/en/dev/howto/custom-file-storage/
>
> > haven't used any custom file storage yet but maybe using a custom file-
> > storage with a dummy save method when file exists is what you need.
>
> > On Sep 12, 1:43 pm, "A. Rossi"  wrote:
>
> > > I have an application where users can upload images, then the image is
> > > renamed to a SHA256 hash of the file's contents.
> > > Here is the relevant snippet of the model
>
> > > class ImagePost(Post):
> > >     def imgurl(self, filename):
> > >         import hashlib, os.path
> > >         extension = os.path.splitext(filename)
> > >         self.image.seek(0)
> > >         return "images/%s%s" % (hashlib.sha256(self.image.read
> > > (self.image.size)).hexdigest(), extension[1])
>
> > >     image = models.ImageField(upload_to=imgurl, blank=True)
>
> > > what I am attempting to do is, if a user uploads an image that already
> > > exists (i.e. the two files have the exact same SHA256 hash) I want to
> > > have the ImageField point to the already existing file, rather than
> > > save the newly uploaded one. I have tried a couple things that didn't
> > > work, and the default behavior when dealing with files of the same
> > > name is to append an extra _ to the end of the name, before the
> > > extension.
>
> > > I feel like I'm on the cusp of figuring this out, but I'm stuck. Also,
> > > would I put the code for this into the imgurl() function, create a
> > > custom storage object, in the view(s) directly?
>
> > > Thank you for your help.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~--~~~~--~~--~--~---



Re: ImageField anti-duplication

2009-09-12 Thread A. Rossi

I had not considered writing a custom Storage class. I may try that if
there are no other alternatives.

Any other ideas/solutions?

On Sep 12, 5:31 am, vinilios  wrote:
> Have you read this ?
>
> http://docs.djangoproject.com/en/dev/howto/custom-file-storage/
>
> haven't used any custom file storage yet but maybe using a custom file-
> storage with a dummy save method when file exists is what you need.
>
> On Sep 12, 1:43 pm, "A. Rossi"  wrote:
>
> > I have an application where users can upload images, then the image is
> > renamed to a SHA256 hash of the file's contents.
> > Here is the relevant snippet of the model
>
> > class ImagePost(Post):
> >     def imgurl(self, filename):
> >         import hashlib, os.path
> >         extension = os.path.splitext(filename)
> >         self.image.seek(0)
> >         return "images/%s%s" % (hashlib.sha256(self.image.read
> > (self.image.size)).hexdigest(), extension[1])
>
> >     image = models.ImageField(upload_to=imgurl, blank=True)
>
> > what I am attempting to do is, if a user uploads an image that already
> > exists (i.e. the two files have the exact same SHA256 hash) I want to
> > have the ImageField point to the already existing file, rather than
> > save the newly uploaded one. I have tried a couple things that didn't
> > work, and the default behavior when dealing with files of the same
> > name is to append an extra _ to the end of the name, before the
> > extension.
>
> > I feel like I'm on the cusp of figuring this out, but I'm stuck. Also,
> > would I put the code for this into the imgurl() function, create a
> > custom storage object, in the view(s) directly?
>
> > Thank you for your help.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~--~~~~--~~--~--~---



Re: ImageField anti-duplication

2009-09-12 Thread vinilios

Have you read this ?

http://docs.djangoproject.com/en/dev/howto/custom-file-storage/

haven't used any custom file storage yet but maybe using a custom file-
storage with a dummy save method when file exists is what you need.


On Sep 12, 1:43 pm, "A. Rossi"  wrote:
> I have an application where users can upload images, then the image is
> renamed to a SHA256 hash of the file's contents.
> Here is the relevant snippet of the model
>
> class ImagePost(Post):
>     def imgurl(self, filename):
>         import hashlib, os.path
>         extension = os.path.splitext(filename)
>         self.image.seek(0)
>         return "images/%s%s" % (hashlib.sha256(self.image.read
> (self.image.size)).hexdigest(), extension[1])
>
>     image = models.ImageField(upload_to=imgurl, blank=True)
>
> what I am attempting to do is, if a user uploads an image that already
> exists (i.e. the two files have the exact same SHA256 hash) I want to
> have the ImageField point to the already existing file, rather than
> save the newly uploaded one. I have tried a couple things that didn't
> work, and the default behavior when dealing with files of the same
> name is to append an extra _ to the end of the name, before the
> extension.
>
> I feel like I'm on the cusp of figuring this out, but I'm stuck. Also,
> would I put the code for this into the imgurl() function, create a
> custom storage object, in the view(s) directly?
>
> Thank you for your help.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~--~~~~--~~--~--~---



ImageField anti-duplication

2009-09-12 Thread A. Rossi

I have an application where users can upload images, then the image is
renamed to a SHA256 hash of the file's contents.
Here is the relevant snippet of the model

class ImagePost(Post):
def imgurl(self, filename):
import hashlib, os.path
extension = os.path.splitext(filename)
self.image.seek(0)
return "images/%s%s" % (hashlib.sha256(self.image.read
(self.image.size)).hexdigest(), extension[1])

image = models.ImageField(upload_to=imgurl, blank=True)


what I am attempting to do is, if a user uploads an image that already
exists (i.e. the two files have the exact same SHA256 hash) I want to
have the ImageField point to the already existing file, rather than
save the newly uploaded one. I have tried a couple things that didn't
work, and the default behavior when dealing with files of the same
name is to append an extra _ to the end of the name, before the
extension.

I feel like I'm on the cusp of figuring this out, but I'm stuck. Also,
would I put the code for this into the imgurl() function, create a
custom storage object, in the view(s) directly?

Thank you for your help.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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
-~--~~~~--~~--~--~---