Hi there,

I am a total beginner to programming and Django so I'd appreciate help
that beginner can get his head round!

I was following a tutorial to show how to upload images to an Amazon
S3 account with the Boto library but I think it is for an older
version of Django (I'm on 1.1.2 and Python 2.65) and something has
changed. I get an error:
    Exception Type:     TypeError
    Exception Value:    'InMemoryUploadedFile' object is unsubscriptable

My code is:

    Models.py

    from django.db import models
    from django.contrib.auth.models import User
    from django import forms
    from datetime import datetime

    class PhotoUrl(models.Model):
        url = models.CharField(max_length=128)
        uploaded = models.DateTimeField()

        def save(self):
                self.uploaded = datetime.now()
                models.Model.save(self)

    views.py
    import mimetypes
    from django.http import HttpResponseRedirect
    from django.shortcuts import render_to_response
    from django.core.urlresolvers import reverse
    from django import forms
    from django.conf import settings
    from boto.s3.connection import S3Connection
    from boto.s3.key import Key

    def awsdemo(request):
        def store_in_s3(filename, content):
                conn = S3Connection(settings.AWS_ACCESS_KEY_ID,
settings.AWS_SECRET_ACCESS_KEY)
                b = conn.create_bucket('almacmillan-hark')
                mime = mimetypes.guess_type(filename)[0]
                k = Key(b)
                k.key = filename
                k.set_metadata("Content-Type", mime)
                k.set_contents_from_strong(content)
                k.set_acl("public-read")

        photos = PhotoUrl.objects.all().order_by("-uploaded")
        if not request.method == "POST":
                f = UploadForm()
                return render_to_response('awsdemo.html', {'form':f,
'photos':photos})

        f = UploadForm(request.POST, request.FILES)
        if not f.is_valid():
                return render_to_response('awsdemo.html', {'form':f,
'photos':photos})

        file = request.FILES['file']
        filename = file.name
        content = file['content']
        store_in_s3(filename, content)
        p = PhotoUrl(url="http://almacmillan-hark.s3.amazonaws.com/"; +
filename)
        p.save()
        photos = PhotoUrl.objects.all().order_by("-uploaded")
        return render_to_response('awsdemo.html', {'form':f,
'photos':photos})

    urls.py

    (r'^awsdemo/$', 'harkproject.s3app.views.awsdemo'),

    awsdemo.html

    <div class="form">
                <strong>{{form.file.label}}</strong>
                <form method="POST" action ="." enctype="multipart/form-data">
                        {{form.file}}<br/>
                        <input type="submit" value="Upload">
                </form>
        </div>

I'd really appreciate help. I hope I have provided enough code.

Kind regards
AL

-- 
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