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