""" Modulo que define las vistas de la aplicacion """ from django.http import JsonResponse from django.views.decorators.http import require_GET from . import medium @require_GET def search_artist(request): """Busca un artista Se espera que la request contenga al menos la query y opcionalmente puede incluir per_page y page para paginar los datos En caso que no alla query se retornara un error """ limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) query = request.GET.get('query') if query: return JsonResponse(medium.search_artist(query, limit, page)) return JsonResponse({'status': 400, 'error': 'Debe indicar una query'}) @require_GET def get_artist(_, mbid): """ Obtiene un artista dado su mbid""" return JsonResponse(medium.get_artist(mbid)) @require_GET def get_disc(_, mbid): """Obtiene un disco dado su mbid""" return JsonResponse(medium.get_disc(mbid)) @require_GET def search_disc(request): """Busca un disco Se espera que la request contenga al menos la query y opcionalmente puede incluir per_page y page para paginar los datos En caso que no alla query se retornara un error """ limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) query = request.GET.get('query') if query: return JsonResponse(medium.search_disc(query, limit, page)) return JsonResponse({'status': 400, 'error': 'Debe indicar una query'}) @require_GET def get_discs_of_artist(request, mbid): """ Obtiene todos los discos de un artista dado el mbid del artista""" limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) return JsonResponse(medium.get_discs_of_artist(mbid, limit, page)) @require_GET def get_artist_of_disc(request, mbid): """ Obtiene el artista de un disco""" return JsonResponse(medium.get_artist_of_disc(mbid)) @require_GET def get_release(_, mbid): """ Obtiene una release dada su mbid""" return JsonResponse(medium.get_release(mbid)) @require_GET def search_release(request): """ Busca una release Se espera que la request contenga al menos la query y opcionalmente puede incluir per_page y page para paginar los datos En caso que no alla query se retornara un error """ limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) query = request.GET.get('query', '') if query: return JsonResponse(medium.search_release(query, limit, page)) return JsonResponse({'status': 400, 'error': 'Debe indicar una query'}) @require_GET def get_releases_of_disc(request, mbid): """ Obtiene las releases de un disco Como los datos son paginables la query puede contener per_page y page para definir cuantos elementos mostrar por pagina y que pagina mostrar. """ limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) return JsonResponse(medium.get_releases_of_disc(mbid, limit, page)) @require_GET def get_artist_of_release(request, mbid): """ Obtiene el artista de una release dada su mbid""" return JsonResponse(medium.get_artist_of_release(mbid)) @require_GET def get_recording(_, mbid): """Obtiene un recording dada su mbid""" return JsonResponse(medium.get_recording(mbid)) @require_GET def search_recording(request): """ Busca una recording Se espera que la request contenga al menos la query y opcionalmente puede incluir per_page y page para paginar los datos En caso que no alla query se retornara un error """ limit = int(request.GET.get('per_page', 10)) page = int(request.GET.get('page', 1)) query = request.GET.get('query', '') if query: return JsonResponse(medium.search_recording(query, limit, page)) return JsonResponse({'status': 400, 'error': 'Debe indicar una query'}) @require_GET def get_recordings_of_release(request, mbid): """ Obtiene las recordings de una release dada su mbid""" return JsonResponse(medium.get_recordings_of_release(mbid)) @require_GET def get_releases_of_recording(request, mbid): """ Obtiene la release de una recording dada su mbid Como los datos son paginables la query puede contener per_page y page para definir cuantos elementos mostrar por pagina y que pagina mostrar. """ limit = int(request.GET.get('per_page', 100)) page = int(request.GET.get('page', 1)) return JsonResponse(medium.get_releases_of_recording(mbid, limit, page)) @require_GET def get_artist_of_recording(request, mbid): """ Obtiene el artista de una grabación dada su mbid""" return JsonResponse(medium.get_artist_of_recording(mbid)) @require_GET def get_cover_art_of_disc(_, mbid): """Obtiene la coverart de un disc dado su mbid""" coverart = medium.get_cover_art_disc(mbid) if coverart: return JsonResponse(coverart) return JsonResponse(status=404, data={'status': 404, 'error': 'No encontrado'}) @require_GET def get_cover_art_of_release(_, mbid): """Obtiene la coverart de una release dado su mbid""" coverart = medium.get_cover_art_release(mbid) if coverart: return JsonResponse(coverart) return JsonResponse(status=404, data={'status': 404, 'error': 'No encontrado'})