Beispiel #1
0
 def clean_username(self):
     user_name = self.cleaned_data["username"]
     params = {"method": "flickr.people.findByUsername", "username": user_name}
     try:
         user_id = Helpers.getFlickrData(params).get('user').get('nsid')
     except:
         raise forms.ValidationError("Could not find any public photos for user %s" % user_name)
     return user_id
Beispiel #2
0
def search(request):
    
    context = { "title": "search", "photos": None, "flickrForm": FlickrSearchForm() }
    
    if request.method == 'POST':
        form = FlickrSearchForm(request.POST)
        if form.is_valid():
            user_id = form.cleaned_data['username']
            returnurl = form.cleaned_data['returnurl']

            try:
                images = request.POST["images"]
                if "," in images:
                # multiple images selected -> redirect to basket
                    returnparam = "&returnurl="+returnurl if "basket" not in returnurl else ""
                    return redirect('/basket/?search-result-url=%s%s' % (images, returnparam))
                else:
                    return redirect('%s&search-result-url=%s' % (returnurl, images))
            except:
                photo_data = Helpers.getFlickrData(Helpers.setFlickrParams(user_id=user_id, per_page=12))
                context["nsid"] = user_id
                context["photos"] = photo_data["photos"]
                # user was found but with zero photos -> render /search again (sub-optimal implementation) 
                if not context["photos"]["photo"]:
                    return render_to_response('search.html', { "flickrForm": FlickrSearchForm(), "non_field_errors": "No photos found with the given user name" }, context_instance=RequestContext(request))

        context["flickrForm"] = form

    if request.method == 'GET':
        if "returnurl" in request.GET:
            context["flickrForm"] = FlickrSearchForm(initial={'returnurl': request.GET["returnurl"]})
        if request.is_ajax():
            if 'nsid' in request.GET and 'offset' in request.GET:
                user_id = request.GET['nsid']
                offset = request.GET['offset']
                next_page = round(int(offset)/12)+1
                photo_data = Helpers.getFlickrData(Helpers.setFlickrParams(user_id=user_id, page=next_page))
                data = json.dumps(photo_data["photos"])
                return HttpResponse(data, mimetype='application/json')

    return render_to_response('search.html', context, context_instance=RequestContext(request))