189 lines
5.2 KiB
Python
189 lines
5.2 KiB
Python
"""
|
|
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'})
|