def login(request): consumer = None params = None if (request.method == 'GET'): params = request.GET elif request.method == 'POST': params = request.POST consumer_service = ConsumerService() device_id = params.get('device_id', None) user_id = params.get('user_id', None) api_token = params.get('api_key', None) if not device_id: error = utils.internalServerErrorResponse("Invalid request: Device Id, user_id and api_key required for login.") logger.warning("Invalid request: Device Id, user_id and api_key required for login.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- login credentials: " + str(device_id) + ' ' + str(user_id) + ' ' + str(api_token)) consumer = consumer_service.login(device_id, user_id, api_token) consumer_list = [] consumer_list.append(consumer) json = serializers.serialize("json", consumer_list, fields=('id','device_id','api_token','email_address', 'name')) json_obj = json[1:len(json)-1] return HttpResponse(json_obj, mimetype='application/json')
def __refreshPlaylist__(request): try: device_id = request.GET['device_id'] location_id = request.GET['location_id'] except KeyError: error = utils.internalServerErrorResponse("Invalid request: Device Id and Location Id required for refreshing playlist.") logger.warning("Invalid request: Device Id and Location Id required for refreshing playlist.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- refresh playlist with parameters device_id " + str(device_id) + ", location_id " + str(location_id)) # Use location id to fetch current playlist return __reorderPlaylist__(PlaylistItem.objects.filter(Q(item_state=2) | Q(item_state=1)))
def signUp(request): consumer = None params = None if (request.method == 'GET'): params = request.GET elif request.method == 'POST': params = request.POST consumer_service = ConsumerService() device_id = params.get('device_id', None) if not device_id: error = utils.internalServerErrorResponse("Invalid request: Device Id required for sign up.") logger.warning("Invalid request: Device Id required for sign up.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- sign up with credentials: " + str(device_id)) auth_token = params.get('auth_token', None) if not auth_token: password = params.get('password', '') email_address = params.get('email', '') name = params.get('name', '') consumer = consumer_service.register(device_id, password, email_address, name) else: token_type = params.get('token_type', None) facebook_id = params.get('facebook_id', '') if not token_type: error = utils.internalServerErrorResponse("Invalid token type") logger.error("Invalid token type") return HttpResponse(simplejson.dumps(error), mimetype='application/json') consumer = consumer_service.register_with_token(device_id, auth_token, token_type, facebook_id) consumer_list = [] consumer_list.append(consumer) json = serializers.serialize("json", consumer_list, fields=('id','device_id','api_token','email_address', 'name')) json_obj = json[1:len(json)-1] return HttpResponse(json_obj, mimetype='application/json')
def index(request): try: location_id = request.GET['location_id'] except KeyError: error = utils.internalServerErrorResponse("Invalid request: Location Id required for logging into venue app.") logger.warning("Invalid request: Location Id required for logging into venue app.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- venue app login with parameters location_id " + str(location_id)) music_tracks = MusicTrack.objects.all() playlist_items = PlaylistItem.objects.all() context = {'music_track_list': music_tracks, 'playlist_item_list': playlist_items, 'domain_url': request.META['HTTP_HOST'], 'location_id': location_id} return render(request, 'backend/index.html', context)
def getVoteHistory(request): try: device_id = request.GET['device_id'] location_id = request.GET['location_id'] except KeyError: error = utils.internalServerErrorResponse("Invalid request: Device Id and password required for sign up.") logger.warning("Invalid request: Device Id and password required for sign up.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- get vote history with parameters device_id " + str(device_id) + ", location_id " + str(location_id)) voting_service = VotingService() try: votes = voting_service.getVoteHistory(device_id) except InvalidDeviceError as ide: error = utils.internalServerErrorResponse(ide.value) logger.error(ide.value) return HttpResponse(simplejson.dumps(error), mimetype='application/json') playlist_item_list = [] for vote in votes: playlist_item_list.append(vote.playlist_item) return HttpResponse(serializers.serialize("json", playlist_item_list, relations={'music_track': {'relations': ('album', 'category', 'artist')}}), mimetype='application/json')
def addToPlaylist(request): params = None if (request.method == 'GET'): params = request.GET elif request.method == 'POST': params = request.POST location_service = LocationService() consumer_service = ConsumerService() user_id = params.get('user_id', None) api_token = params.get('api_key', None) location_id = params.get('location_id', None) music_track_id = params.get('music_track_id', None) if not location_id: raise InvalidLocationError(location_id) if not music_track_id: raise MusicTrackNotFoundError(music_track_id) consumer = consumer_service.isValidUser(user_id, api_token) if not consumer: raise InvalidUserError(user_id) if not location_service.isActive(location_id): response_data = {} location_service.checkOut(consumer) response_data['message'] = 'Location is not active' response_data['checked_out'] = True response_data['status'] = 200 return HttpResponse(HttpResponse(json.dumps(response_data), mimetype='application/json')) logger.info("Incoming request- add to playlist with parameters device_id " + str(user_id) + ", music_track_id " + str(music_track_id) + ", location_id " + str(location_id)) playlist_service = PlaylistService() try: playlist_service.addToPlaylist(consumer, location_id, music_track_id) logger.info("added music track " + str(music_track_id) + " to playlist for location " + str(location_id)) # Improve exception handling. except (KeyError, PlaylistNotFoundError, UnableToAddMusicError) as exception: error = utils.internalServerErrorResponse(exception.value) logger.error(exception.value) return HttpResponse(simplejson.dumps(error), mimetype='application/json') return __refreshPlaylistHelper__(consumer, location_id)
def __requestLibrary__(request): #error = utils.internalServerErrorResponse("Error, disabled") #return HttpResponse(simplejson.dumps(error), mimetype='application/json') try: device_id = request.GET['device_id'] location_id = request.GET['location_id'] except KeyError: error = utils.internalServerErrorResponse("Invalid request: Device Id and Location Id required for requesting library.") logger.warning("Invalid request: Device Id and Location Id required for requesting library.") return HttpResponse(simplejson.dumps(error), mimetype='application/json') logger.info("Incoming request- get library with parameters device_id " + str(device_id) + ", location_id " + str(location_id)) library = MusicTrack.objects.all() upcoming_playlist = PlaylistItem.objects.filter(Q(item_state = 2) | Q(item_state=1)) return remove_items_in_playlist(library, upcoming_playlist)
def voteUp(request): params = None if (request.method == 'GET'): params = request.GET elif request.method == 'POST': params = request.POST location_service = LocationService() consumer_service = ConsumerService() user_id = params.get('user_id', None) api_token = params.get('api_key', None) location_id = params.get('location_id', None) music_track_id = params.get('music_track_id', None) if not location_id: raise InvalidLocationError(location_id) if not music_track_id: raise MusicTrackNotFoundError(music_track_id) consumer = consumer_service.isValidUser(user_id, api_token) if not consumer: raise InvalidUserError(user_id) if not location_service.isActive(location_id): response_data = {} location_service.checkOut(consumer) response_data['message'] = 'Location is not active' response_data['checked_out'] = True response_data['status'] = 200 return HttpResponse(HttpResponse(json.dumps(response_data), mimetype='application/json')) logger.info("Incoming request- vote up with parameters user_id " + str(user_id) + ", location_id " + str(location_id) + ", music_track_id " + str(music_track_id)) voting_service = VotingService() try: voting_service.voteUp(consumer, location_id, music_track_id) logger.info("Updated playlist after vote up for music track " + str(music_track_id) + " at location " + str(location_id) + " from user " + str(user_id)) except UnableToVoteError as utv: error = utils.internalServerErrorResponse(utv.value) logger.error(utv.value) return HttpResponse(simplejson.dumps(error), mimetype='application/json') return __refreshPlaylistHelper__(consumer, location_id)