def upload_photo(request): ''' Handles photo upload and stores uploaded photoes to mongodb ''' # TODO: use real user name if request.method == 'GET': c = {} c.update(csrf(request)) plist = [ (p['name'], p['region-code']) for p in province_list] c.update({"province_list" : plist}) return render_to_response('place/upload.html', c, context_instance=RequestContext(request)) if request.method == 'POST': # remove file extension name filenames = [ splitext(fname)[0] for fname in dict(request.POST)['Filename'] ] # quote to match file_root_names = [ urllib2.quote(fname.encode('utf-8')) for fname in filenames ] place = request.POST['spot'] r = Restraunt.objects(name=place).first() for i,fid in enumerate(request.FILES): file = request.FILES[fid] root_name = file_root_names[i] # TODO: read username photo = store_photo_to_db(file, 'simon', request.POST['desc-' + root_name], file.content_type) if r: r.photos.append(photo) r.save() return render_to_response('debug/success.html')
def get_photolist_by_area(request, place_name): ''' Get uploaded photos from GridFS (mongoDB) ''' r = Restraunt.objects(name=place_name).first() ret = [str(photo.file.grid_id) for photo in r.photos] ret = simplejson.dumps(ret) return HttpResponse(ret)
def get_restraunt_list(request, region_code): region = attrs_of(region_code)['name'] restraunts = Restraunt.objects(locality_tags=region).all() for r in restraunts: print r.name ret = [r.name for r in restraunts] ret = simplejson.dumps(ret) return HttpResponse(ret)
def store_photo_to_db(file, author, description, content_type): ''' Store uploaded photo into GridFS (mongoDB) ''' if file.name == '': raise ValueError r = Restraunt.objects().first() photo = Photo(author=author, description=description) photo.file.new_file() for chunk in file.chunks(): photo.file.write(chunk) photo.file.content_type=content_type photo.file.close() photo.save() r.photos.append(photo) r.save() return photo