def get(self, request, model_id, entry_id, service_slug, object_id): action = "album" content_type = get_object_or_404(ContentType, pk=model_id) service = get_service_from_slug(service_slug) service.record_results = True entry = get_object_or_404(content_type.model_class(), pk=entry_id) res = service.search_by_album_id(object_id, entry=entry) return render(request, 'mapper/results/results_media.html', { "results": res, "entry": entry, "service": service, "action": action, "content_type": content_type, })
def get(self, request, model_id, entry_id, service_slug, object_id): content_type = get_object_or_404(ContentType, pk=model_id) service = get_service_from_slug(service_slug) entry = get_object_or_404(content_type.model_class(), pk=entry_id) object = service.get_object(object_id) if not request.user.is_staff: raise Http404 try: media_entry = MediaEntry.objects.get(media=object, content_type=content_type, object_id=entry.id) except MediaEntry.DoesNotExist: media_entry = None media_types = MediaType.objects.all() return render(request, 'mapper/results/%s_preview.html' % TYPE_ID_TO_SLUG[object.type], { "entry": entry, "object": object, 'content_type': content_type, 'service': service, 'media_entry': media_entry, 'media_types': media_types, })
def post(self, request, model_id, entry_id): service_slug = request.POST.get('service_slug', False) action = request.POST.get('action', False) keyword = request.POST.get('keyword', False) search_type = request.POST.get('search_type', False) content_type = get_object_or_404(ContentType, pk=model_id) if not request.user.is_staff: raise Http404 page = int(request.POST.get('num', 1)) if not (service_slug or action or keyword): return HttpResponse("{'error' : Service, Action or Keyword not found'}") entry = content_type.model_class().objects.get(pk=entry_id) service = get_service_from_slug(service_slug) service.record_results = True if action == "keyword": res = service.search_by_keyword(keyword, page=page, entry=entry, return_objects=True) search_type = "media" elif action == "user": if search_type == "media": res = service.search_by_username(keyword, page=page, entry=entry, return_objects=True) else: res = service.search_albums_by_username(keyword, page=page, entry=entry, return_objects=True) if page * service.api.NB_RESULTS_PER_PAGE < res['index']['total_results']: next_page = page + 1 else: next_page = False context = {"results": res, "entry": entry, "service": service, "action": action, "keyword": keyword, "page": page, "next_page": next_page, "search_type": search_type, "content_type": content_type } return render(request, 'mapper/results/results_%s.html' % search_type, context)