""" Modulo que define las vistas de la aplicacion """ from rest_framework.decorators import api_view from rest_framework.response import Response from . import medium @api_view(['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 Response(medium.search_artist(query, limit, page)) return Response({'status': 400, 'error': 'Debe indicar una query'}) @api_view(['GET']) def get_artist(_, mbid): """ Obtiene un artista dado su mbid""" return Response(medium.get_artist(mbid)) @api_view(['GET']) def get_disc(_, mbid): """Obtiene un disco dado su mbid""" return Response(medium.get_disc(mbid)) @api_view(['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 Response(medium.search_disc(query, limit, page)) return Response({'status': 400, 'error': 'Debe indicar una query'}) @api_view(['GET']) def get_discs_of_artist(request, mbid): """ Obtiene todos los discos de un artista dado el mbid del artista""" return Response(medium.get_discs_of_artist(mbid)) @api_view(['GET']) def get_artist_of_disc(request, mbid): """ Obtiene el artista 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 Response(medium.get_artist_of_disc(mbid, limit, page)) @api_view(['GET']) def get_release(_, mbid): """ Obtiene una release dada su mbid""" return Response(medium.get_release(mbid)) @api_view(['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 Response(medium.search_release(query, limit, page)) return Response({'status': 400, 'error': 'Debe indicar una query'}) @api_view(['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 Response(medium.get_releases_of_disc(mbid, limit, page)) @api_view(['GET']) def get_artist_of_release(request, mbid): """ Obtiene el artista de una release 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', 10)) page = int(request.GET.get('page', 1)) return Response(medium.get_artist_of_release(mbid, limit, page)) @api_view(['GET']) def get_recording(_, mbid): """Obtiene un recording dada su mbid""" return Response(medium.get_recording(mbid)) @api_view(['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 Response(medium.search_recording(query, limit, page)) return Response({'status': 400, 'error': 'Debe indicar una query'}) @api_view(['GET']) def get_recordings_of_release(request, mbid): """ Obtiene las recordings de una release 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 Response(medium.get_recordings_of_release(mbid, limit, page)) @api_view(['GET']) def get_release_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 Response(medium.get_release_of_recording(mbid, limit, page)) @api_view(['GET']) def get_artist_of_recording(request, mbid): """ Obtiene el artista de una grabación 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', 10)) page = int(request.GET.get('page', 1)) return Response(medium.get_artist_of_recording(mbid, limit, page)) @api_view(['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 Response(coverart) return Response(status=404) @api_view(['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 Response(coverart) return Response(status=404) @api_view(['GET']) def get_cover_art_of_recording(_, mbid): """Obtiene la coverart de la release de una recording dado su mbid""" coverart = medium.get_cover_art_recording(mbid) if coverart: return Response(coverart) return Response(status=404)