Here are some code samples. Functionality may change in the future:

class PhotoUploadForm(newforms.Form):
    item_id     =
newforms.IntegerField(widget=newforms.widgets.HiddenInput)
    photo       = newforms.ImageField(label=_('photo'),
widget=newforms.widgets.FileInput)

    def __init__(self, user, *args, **kwargs):
        super(PhotoUploadForm, self).__init__(*args, **kwargs)
        self.user = user
        self.item = None

    def clean_item_id(self):
        item_id = int(self.cleaned_data.get('item_id'))
        try:
            self.item = Item.on_site.get(pk=item_id)
        except Item.DoesNotExist:
            raise newforms.ValidationError(_("Invalid input."))
        return item_id

    def clean(self):
        if self.item.user != self.user:
            raise newforms.ValidationError(_("You are not allowed to
upload photos for this item."))
        nr_of_images = self.item.photo_set.count()
        if nr_of_images >= MAXIMUM_IMAGES_PER_ITEM:
            raise newforms.ValidationError(_("Maximum number of photos
reached for this item."))
        return self.cleaned_data

    def save(self):
        photo = Photo()
        photo.item = self.item
        if not self.item.photo_set.filter(**{'main' : True}):
            photo.main = True
        uploaded_file = self.cleaned_data['photo']
        content = uploaded_file.content
        photo.save_image_file(uploaded_file.filename, content)
        photo.size = len(content)
        photo.save()

And the view (replace JsonResponse with HttpResponse). JsonResponse
and jsonify are custom, not included in the django source:

def photo_upload(request):
    if request.POST:
        form = PhotoUploadForm(request.user, request.POST,
request.FILES)
        if form.is_valid():
            form.save()
            json = {'status': 'success', 'message': _("Upload
succeeded.")}
            return JsonResponse(json)
    form = PhotoUploadForm()
    json = jsonify(form)
    return JsonResponse(json)

Regards, Sander.

On 20 jun, 22:19, SanPy <[EMAIL PROTECTED]> wrote:
> Dirk,
>
> File and image uploading for newforms, AFAIK, is not implemented in
> 0.96. There is a ticket for this (#3297). If you look in the django-
> developers newsgroup and search for #3297, you will find more
> information. It is possible to have it working with the latest trunk
> from SVN and a patch from #3297. It works fine on my machine with the
> latest trunk and patch.
>
> Als je er niet uitkomt, laat het hier dan even weten, dan geef ik je
> wat code voorbeelden.
>
> Groet, Sander.
>
> On 20 jun, 18:15, "Dirk van Oosterbosch, IR labs" <[EMAIL PROTECTED]>
> wrote:
>
> > Hello,
>
> > I'm starting with Django, so I was adviced to use the newforms. But I
> > can't just figure out how to correctly upload images (or other files
> > for that matter). I heard that there was already much discussion on
> > this list, but on groups.google.com I couldn't find any pointers.
>
> > I tried out two code examples from blogs, but get stuck with both.
>
> > First I tried this 
> > one:http://www.oluyede.org/blog/2007/03/18/django-image-uploading-
> > validation-and-newforms/
> > The strange thing about this example is that part of the validation
> > happens in the view (not in the clean_photo method of the Form).
> > I got stuck with this, because this (line 6 , in views):
> >                  img = Image.open(StringIO(request.FILES['photo']
> > ['content']))
> > kept failing. I would like to test this behavior of Image in the
> > django shell, but wouldn't know how.
>
> > Then I triedhttp://batiste.dosimple.ch/blog/2007-05-13-1/
> > which claims to be based on the former example, but seems quite
> > different to me. Probably the reason why I can't get this to work is
> > my lack of understanding the monkey-patching business.
> > The strange thing here (i.e. the part where I get lost), is that the
> > clean_avatar method takes two arguments clean_avatar(self, value),
> > but I have no idea where this other argument should be coming from.
> > (Django has the same problem: TypeError at /upload/  clean_photo()
> > takes exactly 2 arguments (1 given))
>
> > I'm using 0.96
>
> > I was hoping you guys could lead me towards working image upload. ;-)
>
> > best
> > dirk
>
> > -----------------------------
> > Dirk van Oosterbosch
> > de Wittenstraat 225
> > 1052 AT Amsterdam
> > the Netherlands
>
> >http://labs.ixopusada.com
> > -----------------------------


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to