oxdata/oxdata/lookup/views.py

101 lines
3.3 KiB
Python

# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
from oxdjango.shortcuts import render_to_json_response, json_response
from oxdjango.api import actions
import models
def get_movie_id(request):
movie_id = None
movieId = None
if 'id' in request.GET:
movieId = request.GET['id']
elif 'itemId' in request.GET:
movieId = request.GET['itemId']
if movieId:
if len(movieId) == 7:
movie_id = models.get_movie_id(imdb_id=movieId)
else:
try:
movie_id = models.MovieId.objects.get(oxdb_id=movieId)
except models.MovieId.DoesNotExist:
movie_id = None
if 'imdb' in request.GET:
movieId = request.GET['imdb']
movie_id = models.get_movie_id(imdb_id=movieId)
elif 'oxdb' in request.GET:
oxdbId = request.GET['oxdb']
movie_id = models.MovieId.objects.get(oxdb_id=oxdbId)
elif 'criterion' in request.GET:
criterion_id = request.GET['criterion']
movie_id = models.MovieId.objects.get(criterion_id=criterion_id)
elif 'wikipedia' in request.GET:
wikipedia_id = request.GET['wikipedia']
movie_id = models.MovieId.objects.get(wikipedia_id=wikipedia_id)
if movie_id:
movie_id.updateFromImdb()
return movie_id
def ids(request):
prefix = request.build_absolute_uri('/')
json = {}
if 'title' in request.GET:
title = request.GET['title']
director = request.GET.get('director', '')
year = request.GET.get('year', '')
movies = models.MovieId.objects.filter(title=title)
if director:
movies = movies.filter(director=director)
if year:
movies = movies.filter(year=year)
if movies.count() == 1:
json = movies[0].json(prefix)
else:
movie = get_movie_id(request)
if movie:
json = movie.json(prefix)
return render_to_json_response(json)
def get(request, data):
prefix = request.build_absolute_uri('/')
response = json_response()
movie_id = None
movieId = None
if 'id' in data:
movieId = data['id']
elif 'itemId' in data:
movieId = data['itemId']
if movieId:
if len(movieId) == 7:
movie_id = models.get_movie_id(imdb_id=movieId)
else:
try:
movie_id = models.MovieId.objects.get(oxdb_id=movieId)
except models.MovieId.DoesNotExist:
movie_id = None
if 'imdb' in data:
movieId = data['imdb']
movie_id = models.get_movie_id(imdb_id=movieId)
elif 'oxdb' in data:
oxdbId = data['oxdb']
movie_id = models.MovieId.objects.get(oxdb_id=oxdbId)
elif 'criterion' in data:
criterion_id = data['criterion']
movie_id = models.MovieId.objects.get(criterion_id=criterion_id)
elif 'wikipedia' in data:
wikipedia_id = data['wikipedia']
movie_id = models.MovieId.objects.get(wikipedia_id=wikipedia_id)
if movie_id:
movie_id.updateFromImdb()
response['data'] = movie_id.json(prefix)
else:
response['status'] = {'text':'not found', 'code': 404}
return render_to_json_response(response)
actions.register(get)
def urls(request):
json = {}
return render_to_json_response(json)