def read(self, request, sound_id): try: sound = Sound.objects.get(id=sound_id, moderation_state="OK", processing_state="OK", similarity_state="OK") #TODO: similarity_state="OK" #TODO: this filter has to be added again, but first the db has to be updated except Sound.DoesNotExist: #@UndefinedVariable raise ReturnError(404, "NotFound", {"explanation": "Sound with id %s does not exist or similarity data is not ready." % sound_id}) similar_sounds = get_similar_sounds(sound,request.GET.get('preset', None), int(request.GET.get('num_results', settings.SOUNDS_PER_PAGE)) ) sounds = [] for similar_sound in similar_sounds : try: sound = prepare_collection_sound(Sound.objects.select_related('user').get(id=similar_sound[0]), custom_fields = request.GET.get('fields', False)) sound['distance'] = similar_sound[1] sounds.append(sound) except Exception, e: # Delete sound from gaia index so it does not appear again in similarity searches if Similarity.contains(similar_sound[0]): Similarity.delete(similar_sound[0]) # Invalidate similarity search cache cache_key = "similar-for-sound-%s-%s" % (similar_sound[0], request.GET.get('preset', None)) cache.delete(cache_key)
def similar(request, username, sound_id): sound = get_object_or_404(Sound, user__username__iexact=username, id=sound_id, moderation_state="OK", processing_state="OK", analysis_state="OK", similarity_state="OK") similar_sounds = get_similar_sounds(sound,request.GET.get('preset', None), int(settings.SOUNDS_PER_PAGE)) logger.debug('Got similar_sounds for %s: %s' % (sound_id, similar_sounds)) return render_to_response('sounds/similar.html', locals(), context_instance=RequestContext(request))
def similar(request, username, sound_id): sound = get_object_or_404( Sound, id=sound_id, moderation_state="OK", processing_state="OK", analysis_state="OK", similarity_state="OK" ) if sound.user.username.lower() != username.lower(): raise Http404 similarity_results, count = get_similar_sounds( sound, request.GET.get("preset", None), int(settings.SOUNDS_PER_PAGE) ) logger.debug("Got similar_sounds for %s: %s" % (sound_id, similarity_results)) similar_sounds = Sound.objects.ordered_ids([sound_id for sound_id, distance in similarity_results]) return render_to_response("sounds/similar.html", locals(), context_instance=RequestContext(request))
def similar(request, username, sound_id): sound = get_object_or_404(Sound, id=sound_id, moderation_state="OK", processing_state="OK", analysis_state="OK", similarity_state="OK") if sound.user.username.lower() != username.lower(): raise Http404 similar_sounds, count = get_similar_sounds(sound,request.GET.get('preset', None), int(settings.SOUNDS_PER_PAGE)) logger.debug('Got similar_sounds for %s: %s' % (sound_id, similar_sounds)) return render_to_response('sounds/similar.html', locals(), context_instance=RequestContext(request))
def similar(request, username, sound_id): sound = get_object_or_404(Sound, id=sound_id, moderation_state="OK", processing_state="OK", analysis_state="OK", similarity_state="OK") if sound.user.username.lower() != username.lower(): raise Http404 similarity_results, count = get_similar_sounds(sound, request.GET.get('preset', None), int(settings.SOUNDS_PER_PAGE)) similar_sounds = Sound.objects.ordered_ids([sound_id for sound_id, distance in similarity_results]) tvars = {'similar_sounds': similar_sounds} return render(request, 'sounds/similar.html', tvars)
def similar(request, username, sound_id): sound = get_object_or_404(Sound, id=sound_id, moderation_state="OK", processing_state="OK", analysis_state="OK", similarity_state="OK") if sound.user.username.lower() != username.lower(): raise Http404 similarity_results, count = get_similar_sounds( sound, request.GET.get('preset', None), int(settings.SOUNDS_PER_PAGE)) logger.debug('Got similar_sounds for %s: %s' % (sound_id, similarity_results)) similar_sounds = Sound.objects.ordered_ids( [sound_id for sound_id, distance in similarity_results]) return render(request, 'sounds/similar.html', locals())
def read(self, request, sound_id): try: sound = Sound.objects.get(id=sound_id, moderation_state="OK", processing_state="OK", similarity_state="OK") #TODO: similarity_state="OK" #TODO: this filter has to be added again, but first the db has to be updated except Sound.DoesNotExist: #@UndefinedVariable raise ReturnError(404, "NotFound", {"explanation": "Sound with id %s does not exist or similarity data is not ready." % sound_id}) similar_sounds = get_similar_sounds(sound,request.GET.get('preset', None), int(request.GET.get('num_results', settings.SOUNDS_PER_PAGE)) ) sounds = [] for similar_sound in similar_sounds : sound = prepare_collection_sound(Sound.objects.select_related('user').get(id=similar_sound[0]), custom_fields = request.GET.get('fields', False)) sound['distance'] = similar_sound[1] sounds.append( sound ) result = {'sounds': sounds, 'num_results': len(similar_sounds)} add_request_id(request,result) logger.info("Sound similarity,id=" + sound_id + ",api_key=" + request.GET.get("api_key", False) + ",api_key_username=" + request.user.username) return result