def vote(request): results = {'result': 'Fail'} if request.method == 'GET': GET = request.GET if 'rate' in GET: #save request to database user = User.objects.get(id=int(GET['user_id'])) movie = Movie.objects.get(id=int(GET['movie_id'])) try: vote = Vote.objects.get(user=user, movie=movie) vote.rate = int(GET['rate']) vote.save() except: rate = int(GET['rate']) new_vote = Vote(user=user, movie=movie, rate=rate) new_vote.save() total = Vote.objects.filter(movie=movie).count() avg = Vote.objects.filter(movie=movie).aggregate(Avg('rate')) #prepare json response results = {'result': 'Successful', 'total': total, 'avg': avg['rate__avg']} #update feed f = Feed() f.update_feed(user, 6, None, movie) json = simplejson.dumps(results) return HttpResponse(json, mimetype='application/json')
def review(request): results = {'result': 'Fail'} if request.method == 'GET': GET = request.GET if 'user_id' in GET: #save request to database user = User.objects.get(id=int(GET['user_id'])) movie = Movie.objects.get(id=int(GET['movie_id'])) #update feed f = Feed() f.update_feed(user, 5, None, movie) results = {'result': 'Successful'} json = simplejson.dumps(results) return HttpResponse(json, mimetype='application/json')
def add_to_favlist(request): results = {'result': 'Fail'} if request.method == 'GET': GET = request.GET if GET.has_key('user_id'): user = User.objects.get(id=int(GET['user_id'])) movie = Movie.objects.get(id=int(GET['movie_id'])) favlist = FavList(user=user, movie=movie) favlist.save() results = {'result': 'Added successfully'} #update feed f = Feed() f.update_feed(user, 7, None, movie) json = simplejson.dumps(results) return HttpResponse(json, mimetype='application/json')
def _save_movie(imdb_id, user): request_url = 'http://www.omdbapi.com/?i=%s' % imdb_id errors = [] try: response = urllib2.urlopen(request_url) except urllib2.URLError as err: errors.append(err) if response: result = response.read() json_result = simplejson.loads(result) if json_result['Response'] != 'False': # process data title = json_result['Title'] year = json_result['Year'] # process release date release_str = json_result['Released'] if len(release_str.split()) == 1: if release_str == 'N/A': release_time = None else: release_time = datetime(*time.strptime(release_str, "%Y")[:6]) elif len(release_str.split()) == 2: release_time = datetime(*time.strptime(release_str, "%b %Y")[:6]) elif len(release_str.split()) == 3: release_time = datetime(*time.strptime(release_str, "%d %b %Y")[:6]) # fetch poster image to local disk poster_url = json_result['Poster'] poster_file_name = ('/images/posters/%s_%s.jpg' % (year, title.lower().replace(' ', '_'))) poster_file_abs = settings.MEDIA_ROOT + poster_file_name poster_file_rel = '/media' + poster_file_name if poster_url == 'N/A': poster_file_rel = '/media/images/default_poster.png' else: try: resp = urllib2.urlopen(poster_url) except urllib2.URLError as err: print err if resp: poster_file = open(poster_file_abs, 'w') poster_file.write(resp.read()) poster_file.close() # check if movie exists in DB flag = Movie.objects.filter(title=title, year=year) if not flag: # add movie info to DB new_movie = Movie( title=title, year=year, genre=json_result['Genre'], actors=json_result['Actors'], plot=json_result['Plot'], poster=poster_file_rel, runtime=json_result['Runtime'], rating=json_result['imdbRating'], votes=json_result['imdbVotes'], release_date=release_time, added_by=user, imdbid=imdb_id ) new_movie.save() # update feed f = Feed() f.update_feed(user, 3, None, new_movie) else: errors.append('No data available') else: # duplicate movie, returns error errors.append('This movie is already in our database. ' 'Please try to add another one.') # return errors list return errors