def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() #instantiate mdb mdb_o = _movie_database() #instantiate controllers movieController = MovieController(mdb=mdb_o) userController = UserController(mdb=mdb_o) voteController = VoteController(mdb=mdb_o) ratingController = RatingController(mdb=mdb_o) resetController = ResetController(mdb=mdb_o) #TODO dispatcher.connect('movie_get_mid', controller=movieController, action='GET_MID', conditions=dict(method=['GET'])) #configuration conf = { 'global': { 'server.socket_host': 'student04.cse.nd.edu', 'server.socket_port': '52052', #change this }, '/': { 'request.dispatch': dispatcher, } } cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app) if __name__ == '__main__': start_service()
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_movies('ml-1m/movies.dat') self.mdb.load_posters('/afs/nd.edu/user37/cmc/Public/cse332_sp14/cherrypy/data/images.dat')
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_ratings('ml-1m/ratings.dat') self.mdb.load_votes('ml-1m/ratings.dat')
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.load_posters('images.dat') self.mdb.load_movies('ml-1m/movies.dat')
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_movies('ml-1m/movies.dat') self.mdb.load_posters( '/afs/nd.edu/user37/cmc/Public/cse332_sp14/cherrypy/data/images.dat' )
def PUT_MID(self, movie_id): #TODO output = {'result': 'success'} mid = int(movie_id) try: data = json.loads(cherrypy.request.body.read()) mdb_tmp = _movie_database() mdb_tmp.load_movies('ml-1m/movies.dat') mdb = mdb_tmp.get_movie(mid) self.mdb.set_movie(mid, movie) #also set genre
def PUT_RESET_MOVIE(self, movie_id): output = {'result' : 'success'} mid = int(movie_id) try: mdb_tmp = _movie_database() mdb_tmp.load_movies('ml-1m/movies.dat') movie = mdb_tmp.get_movie(mid) self.mdb.set_movie(mid, movie) # also get genre except Exception as ex: output['result'] = 'error' output['message'] = str(ex) return json.dumps(output)
def start_service(): # Initialize and load the _movie_database mdb = _movie_database() mdb.load_movies("ml-1m/movies.dat", "ml-1m/images.dat") mdb.load_users("ml-1m/users.dat") mdb.load_ratings("ml-1m/ratings.dat") # Init the authenticator auth = AuthenticateKey("BEARbird") # Dispatcher is created, not yet connected to anything dispatcher = cherrypy.dispatch.RoutesDispatcher() # /movies/ controller moviesController = MoviesController(mdb, auth) dispatcher.connect('movies_get', '/movies/:movie_id', controller=moviesController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('movies_get_all', '/movies/', controller=moviesController, action = 'GET_ALL', conditions=dict(method=['GET'])) dispatcher.connect('movies_delete_all', '/movies/', controller=moviesController, action = 'DELETE_ALL', conditions=dict(method=['DELETE'])) dispatcher.connect('movies_delete', '/movies/:movie_id', controller=moviesController, action = 'DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('movies_put', '/movies/:movie_id', controller=moviesController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movies_post', '/movies/', controller=moviesController, action = 'POST', conditions=dict(method=['POST'])) # /reset/ controller resetController = ResetController(mdb, auth) dispatcher.connect('reset_all', '/reset/', controller=resetController, action = 'RESET_ALL', conditions=dict(method=['PUT'])) dispatcher.connect('reset', '/reset/:movie_id', controller=resetController, action = 'RESET', conditions=dict(method=['PUT'])) # /ratings/ controller usersController = UsersController(mdb, auth) dispatcher.connect('users_get', '/users/:user_id', controller=usersController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('users_get_all', '/users/', controller=usersController, action = 'GET_ALL', conditions=dict(method=['GET'])) dispatcher.connect('users_delete_all', '/users/', controller=usersController, action = 'DELETE_ALL', conditions=dict(method=['DELETE'])) dispatcher.connect('users_delete', '/users/:user_id', controller=usersController, action = 'DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('users_put', '/users/:user_id', controller=usersController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('users_post', '/users/', controller=usersController, action = 'POST', conditions=dict(method=['POST'])) # /recommendations/ controller recommendationsController = RecommendationsController(mdb, auth) dispatcher.connect('recommendations_get', '/recommendations/:user_id', controller=recommendationsController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('recommendations_put', '/recommendations/:user_id', controller=recommendationsController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('recommendations_delete', '/recommendations/', controller=recommendationsController, action = 'DELETE', conditions=dict(method=['DELETE'])) # /ratings/ controller ratingsController = RatingsController(mdb) dispatcher.connect('ratings_get', '/ratings/:movie_id', controller=ratingsController, action = 'GET', conditions=dict(method=['GET'])) # conf is a dictionary wit the settings for cherrypy. # This is how to change the bind port and the dispathcer object conf = { 'global' : {'server.socket_host': 'student03.cse.nd.edu', 'server.socket_port': 40019}, '/' : {'request.dispatch': dispatcher,} } # These three lines tell cherrypy the settings and start the event loop cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def RESET(self, movie_id): try: # Create a new temporary movies database and draw the data from there tempdb = _movie_database() tempdb.load_movies('ml-1m/movies.dat', 'ml-1m/images.dat') movie = tempdb.get_movie(int(movie_id)) # Write the data to the actual database self.moviesdb.set_movie(int(movie_id), movie) # Return success output = {'result':'success'} return json.dumps(output, encoding='latin-1') except KeyError as ex: output = {'result':'error'} output['message'] = 'RESET failed' return json.dumps(output, encoding='latin-1')
def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() mdb = _movie_database() movieController = MovieController(mdb) userController = UserController(mdb) recommendationController = RecommendationController(mdb) ratingController = RatingController(mdb) resetController = ResetController(mdb) optionsController = OptionsController() # connect MovieController handlers dispatcher.connect('movie_get', '/movies/:movie_id', controller=movieController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_put', '/movies/:movie_id', controller=movieController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movie_delete', '/movies/:movie_id', controller=movieController, action = 'DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('movie_get_index', '/movies/', controller=movieController, action = 'GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('movie_post', '/movies/', controller=movieController, action = 'POST', conditions=dict(method=['POST'])) dispatcher.connect('movie_delete_index', '/movies/', controller=movieController, action = 'DELETE_INDEX', conditions=dict(method=['DELETE'])) # connect UserController handlers dispatcher.connect('user_get', '/users/:user_id', controller=userController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('user_put', '/users/:user_id', controller=userController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('user_delete', '/users/:user_id', controller=userController, action = 'DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('user_get_index', '/users/', controller=userController, action = 'GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('user_post', '/users/', controller=userController, action = 'POST', conditions=dict(method=['POST'])) dispatcher.connect('user_delete_index', '/users/', controller=userController, action = 'DELETE_INDEX', conditions=dict(method=['DELETE'])) # connect RecommendationController handlers dispatcher.connect('recommendation_get', '/recommendations/:user_id', controller=recommendationController, action = 'GET', conditions=dict(method=['GET'])) dispatcher.connect('recommendation_put', '/recommendations/:user_id', controller=recommendationController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('recommendation_delete', '/recommendations/', controller=recommendationController, action = 'DELETE', conditions=dict(method=['DELETE'])) # connect RatingController handler dispatcher.connect('rating_get', '/ratings/:movie_id', controller=ratingController, action = 'GET', conditions=dict(method=['GET'])) # connect ResetController handlers dispatcher.connect('reset_put', '/reset/:movie_id', controller=resetController, action = 'PUT', conditions=dict(method=['PUT'])) dispatcher.connect('reset_put_index', '/reset/', controller=resetController, action = 'PUT_INDEX', conditions=dict(method=['PUT'])) # connect OptionsController handler dispatcher.connect('options_movie_id', '/movies/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_movies', '/movies/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_user_id', '/users/:user_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_users', '/users/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_recommendation_id', '/recommendations/:user_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_recommendation', '/recommendations/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_rating_id', '/ratings/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_reset_id', '/reset/:movie_id', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('options_reset', '/reset/', controller=optionsController, action = 'OPTIONS', conditions=dict(method=['OPTIONS'])) conf = {'global':{'server.socket_host':'student01.cse.nd.edu','server.socket_port': 40041,},'/':{'request.dispatch':dispatcher,'tools.CORS.on':True,}} cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def PUT(self, key=None): output = {} if key is None: self.myd.load_users('ml-1m/users.dat') self.myd.load_movies('ml-1m/movies.dat') self.myd.load_ratings('ml-1m/ratings.dat') self.myd.load_images('ml-1m/images.dat') output['result'] = 'success' else: key = str(key) new_myd = _movie_database() new_myd.load_movies('ml-1m/movies.dat') try: self.myd.movies[key] = new_myd.get_movie(key) output['result'] = 'success' except KeyError: output['result'] = 'error' output['message'] = 'invalid request' return json.dumps(output)
def RESET(self, movie_id): try: # Grab apikey and check against authenticator data = cherrypy.request.body.read() processed_data = json.loads(data) apikey = processed_data["apikey"] if not self.auth.check_apikey(apikey): output = {} output['result'] = 'error' output['message'] = 'Authentication Failure' return json.dumps(output, encoding='latin-1') # Create a new temporary movies database and draw the data from there tempdb = _movie_database() tempdb.load_movies('ml-1m/movies.dat', 'ml-1m/images.dat') movie = tempdb.get_movie(int(movie_id)) # Write the data to the actual database self.moviesdb.set_movie(int(movie_id), movie) # Return success output = {'result':'success'} return json.dumps(output, encoding='latin-1') except KeyError as ex: output = {'result':'error'} output['message'] = 'RESET failed' return json.dumps(output, encoding='latin-1')
def start_service(): # initialize mdb class mdb = _movie_database() mdb.load_movies('ml-1m/movies.dat') mdb.load_users('ml-1m/users.dat') mdb.load_ratings('ml-1m/ratings.dat') mdb.load_images('ml-1m/images.dat') # dispatcher dispatcher = cherrypy.dispatch.RoutesDispatcher() # controllers resetController = ResetController(mdb=mdb) movieController = MovieController(mdb=mdb) userController = UserController(mdb=mdb) ratingController = RatingController(mdb=mdb) recommendationController = RecommendationController(mdb=mdb) # for /ratings/:movie_id dispatcher.connect('ratings_get', '/ratings/:movie_id', controller=ratingController, action='GET', conditions=dict(method=['GET'])) # for /recommendations/ dispatcher.connect('full_recommendations_delete', '/recommendations/', controller=recommendationController, action='FULL_DELETE', conditions=dict(method=['DELETE'])) # for /recommendations/:user_id dispatcher.connect('recommendations_get', '/recommendations/:user_id', controller=recommendationController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('recommendations_put', '/recommendations/:user_id', controller=recommendationController, action='PUT', conditions=dict(method=['PUT'])) # for /users/ dispatcher.connect('full_users_get', '/users/', controller=userController, action='FULL_GET', conditions=dict(method=['GET'])) dispatcher.connect('full_users_post', '/users/', controller=userController, action='FULL_POST', conditions=dict(method=['POST'])) dispatcher.connect('full_users_delete', '/users/', controller=userController, action='FULL_DELETE', conditions=dict(method=['DELETE'])) # for /users/:user_id dispatcher.connect('users_get', '/users/:user_id', controller=userController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('users_put', '/users/:user_id', controller=userController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('users_delete', '/users/:user_id', controller=userController, action='DELETE', conditions=dict(method=['DELETE'])) # for /movies/ dispatcher.connect('full_movies_get', '/movies/', controller=movieController, action='FULL_GET', conditions=dict(method=['GET'])) dispatcher.connect('full_movies_post', '/movies/', controller=movieController, action='FULL_POST', conditions=dict(method=['POST'])) dispatcher.connect('full_movies_delete', '/movies/', controller=movieController, action='FULL_DELETE', conditions=dict(method=['DELETE'])) # for /movies/:movie_id dispatcher.connect('movies_get', '/movies/:movie_id', controller=movieController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movies_put', '/movies/:movie_id', controller=movieController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movies_delete', '/movies/:movie_id', controller=movieController, action='DELETE', conditions=dict(method=['DELETE'])) # for /reset/ dispatcher.connect('full_reset', '/reset/', controller=resetController, action='FULL_RESET', conditions=dict(method=['PUT'])) # for /reset/:movie_id dispatcher.connect('reset', '/reset/:movie_id', controller=resetController, action='RESET', conditions=dict(method=['PUT'])) # configuration for server conf = { 'global': { 'server.socket_host': 'student04.cse.nd.edu', 'server.socket_port': 51019 }, '/': { 'request.dispatch': dispatcher } } # start server cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() mdb = _movie_database() movieController = MovieController(mdb) userController = UserController(mdb) voteController = VoteController(mdb) ratingController = RatingController(mdb) resetController = ResetController(mdb) favoriteController = FavoriteController(mdb) optionsController = OptionsController() #MOVIES dispatcher.connect('movie_get', '/movies/:movie_id', controller=movieController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_put', '/movies/:movie_id', controller=movieController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movie_delete', '/movies/:movie_id', controller=movieController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('movie_get_idx', '/movies/', controller=movieController, action='GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('movie_post_idx', '/movies/', controller=movieController, action='POST_INDEX', conditions=dict(method=['POST'])) dispatcher.connect('movie_delete_idx', '/movies/', controller=movieController, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) #USERS dispatcher.connect('user_get', '/users/:user_id', controller=userController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_put', '/users/:user_id', controller=userController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('user_delete', '/users/:user_id', controller=userController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('user_get_idx', '/users/', controller=userController, action='GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('user_post_idx', '/users/', controller=userController, action='POST_INDEX', conditions=dict(method=['POST'])) dispatcher.connect('user_delete_idx', '/users/', controller=userController, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) #VOTING/RECOMMENDATIONS dispatcher.connect('votes_get', '/recommendations/:user_id', controller=voteController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('votes_put', '/recommendations/:user_id', controller=voteController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('votes_delete_idx', '/recommendations/', controller=voteController, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) #FAVORITES dispatcher.connect('favs_get', '/favorites/:user_id', controller=favoriteController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('favs_put', '/favorites/:user_id', controller=favoriteController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('favs_put_idx', '/favorites/', controller=favoriteController, action='GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('favs_post_idx', '/favorites/', controller=favoriteController, action='POST_INDEX', conditions=dict(method=['POST'])) dispatcher.connect('favs_delete', '/favorites/:user_id', controller=favoriteController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('favs_delete_idx', '/favorites/', controller=favoriteController, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) #RATINGS dispatcher.connect('ratings_get', '/ratings/:movie_id', controller=ratingController, action='GET', conditions=dict(method=['GET'])) #RESET dispatcher.connect('reset_all', '/reset/', controller=resetController, action='PUT', conditions=dict(method=['PUT'])) #OPTIONS dispatcher.connect('movie_options', '/movies/:movie_id', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('movie_index_options', '/movies/', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('user_options', '/users/:user_id', controller=optionsController, action='OPTIONS', conditions=dict(mehtod=['OPTIONS'])) dispatcher.connect('user_index_options', '/users/', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('votes_options', '/recommendations/:user_id', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('votes_index_options', '/recommendations/', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('ratings_options', '/ratings/:movie_id', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('favorites_options', '/favorites/:user_id', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('favorites_index_options', '/favorites/', controller=optionsController, action='OPTIONS', conditions=dict(method=['OPTIONS'])) conf = { 'global': { 'server.socket_host': 'student00.cse.nd.edu', 'server.socket_port': 40009, }, '/': { 'request.dispatch': dispatcher, 'tools.CORS.on': True, } } cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
#Eugene Choi import json import cherrypy from _movie_database import _movie_database mdb = _movie_database() mdb.load_movies('ml-1m/movies.dat') mdb.load_users('ml-1m/users.dat') mdb.load_ratings('ml-1m/ratings.dat') mdb.load_images() class MoviesController(object): def GET(self): output = {'result': 'success'} entries = [] for key in mdb.movies: try: entries.append({ 'id': key, 'title': mdb.movies[key][0], 'genres': mdb.movies[key][1], 'result': 'success', 'img': mdb.images[key] }) except KeyError as ex: entries.append({ 'id': key, 'title': mdb.movies[key][0], 'genres': mdb.movies[key][1],
class TestMovieDatabase(unittest.TestCase): """unit tests for python primer homework""" #@classmethod #def setUpClass(self): mdb = _movie_database() def reset_data(self): "reset data is required because we cannot promise an order of test case execution" self.mdb.delete_all_ratings() self.mdb.load_movies('ml-1m/movies.dat') self.mdb.load_users('ml-1m/users.dat') self.mdb.load_ratings('ml-1m/ratings.dat') def test_get_movie(self): self.reset_data() movie = self.mdb.get_movie(2) self.assertEquals(movie[0], 'Jumanji (1995)') self.assertEquals(movie[1], 'Adventure|Children\'s|Fantasy') def test_get_movie_null(self): self.reset_data() movie = self.mdb.get_movie(20000) self.assertEquals(movie, None) def test_set_movie(self): self.reset_data() movie = self.mdb.get_movie(2) movie[0] = 'ABC' self.mdb.set_movie(2, movie) movie = self.mdb.get_movie(2) self.assertEquals(movie[0], 'ABC') def test_delete_movie(self): self.reset_data() self.mdb.delete_movie(2) movie = self.mdb.get_movie(2) self.assertEquals(movie, None) def test_get_user(self): self.reset_data() user = self.mdb.get_user(3) self.assertEquals(user[1], 25) self.assertEquals(user[2], 15) self.assertEquals(user[3], '55117') def test_set_user(self): self.reset_data() user = self.mdb.get_user(3) user[2] = 6 self.mdb.set_user(3, user) user = self.mdb.get_user(3) self.assertEquals(user[1], 25) self.assertEquals(user[2], 6) self.assertEquals(user[3], '55117') def test_delete_user(self): self.reset_data() self.mdb.delete_user(3) user = self.mdb.get_user(3) self.assertEquals(user, None) def test_get_rating(self): self.reset_data() rating = self.mdb.get_rating(32) self.assertEquals(rating, 3.945731303772336) rating = self.mdb.get_rating(110) self.assertEquals(rating, 4.234957020057307) rating = self.mdb.get_rating(1) self.assertEquals(rating, 4.146846413095811) def test_get_highest_rated_movie_1(self): self.reset_data() hrm_mid = self.mdb.get_highest_rated_movie() hrm_rating = self.mdb.get_rating(hrm_mid) hrm = self.mdb.get_movie(hrm_mid) hrm_name = hrm[0] self.assertEquals(hrm_mid, 787) self.assertEquals(hrm_name, 'Gate of Heavenly Peace, The (1995)') self.assertEquals(hrm_rating, 5.0) def test_set_user_movie_rating_1(self): self.reset_data() self.mdb.set_user_movie_rating(41, 787, 2) rating = self.mdb.get_rating(787) self.assertEquals(rating, 4.25) def test_set_user_movie_rating_2(self): self.reset_data() self.mdb.set_user_movie_rating(41, 787, 2) self.mdb.set_user_movie_rating(101, 787, 4) rating = self.mdb.get_rating(787) self.assertEquals(rating, 4.2) def test_set_and_get_movie_ratings(self): self.reset_data() self.mdb.set_user_movie_rating(41, 787, 2) self.mdb.set_user_movie_rating(101, 787, 4) hrm_mid = self.mdb.get_highest_rated_movie() hrm_rating = self.mdb.get_rating(hrm_mid) hrm = self.mdb.get_movie(hrm_mid) hrm_name = hrm[0] self.assertEquals(hrm_mid, 989) self.assertEquals(hrm_name, 'Schlafes Bruder (Brother of Sleep) (1995)') self.assertEquals(hrm_rating, 5.0) def test_get_user_movie_rating(self): self.reset_data() rating = self.mdb.get_user_movie_rating(6030, 32) self.assertEquals(rating, 5)
def start_service(): #Make controller and dispatcher objects for all resources DB = _movie_database() mov = Movies.Movies(DB) usr = Users.Users(DB) rat = Ratings.Ratings(DB) rec = Recommendations.Recommendations(DB) dispatcher = cherrypy.dispatch.RoutesDispatcher() #MOVIES #GET: dispatcher.connect('mov_get', '/movies/:id',controller=mov, action = 'GET',conditions=dict(method=['GET'])) dispatcher.connect('mov_get_all','/movies/',controller=mov, action = 'GET_ALL',conditions=dict(method=['GET'])) #PUT dispatcher.connect('mov_put','/movies/:id',controller=mov, action = 'PUT',conditions=dict(method=['PUT'])) #POST dispatcher.connect('mov_post','/movies/',controller=mov, action = 'POST',conditions=dict(method=['POST'])) #RESET dispatcher.connect('mov_res','/reset/:id',controller=mov, action = 'RESET',conditions=dict(method=['PUT'])) dispatcher.connect('mov_res_all','/reset/',controller=mov,action = 'RESET_ALL',conditions=dict(method=['PUT'])) #DELETE dispatcher.connect('mov_del','/movies/:id',controller=mov, action = 'DELETE',conditions=dict(method=['DELETE'])) dispatcher.connect('mov_del_all','/movies/',controller=mov, action = 'DELETE_ALL',conditions=dict(method=['DELETE'])) #USERS: #GET dispatcher.connect('usr_get', '/users/:id',controller=usr, action = 'GET',conditions=dict(method=['GET'])) dispatcher.connect('usr_get_all','/users/',controller=usr, action = 'GET_ALL',conditions=dict(method=['GET'])) #PUT dispatcher.connect('usr_put','/users/:id',controller=usr, action = 'PUT',conditions=dict(method=['PUT'])) #POST dispatcher.connect('usr_post','/users/',controller=usr, action = 'POST',conditions=dict(method=['POST'])) #DELETE dispatcher.connect('usr_del','/users/:id',controller=usr, action = 'DELETE',conditions=dict(method=['DELETE'])) dispatcher.connect('usr_del_all','/users/',controller=usr, action = 'DELETE_ALL',conditions=dict(method=['DELETE'])) #RATINGS: dispatcher.connect('rat_get','/ratings/:id',controller=rat, action = 'GET',conditions=dict(method=['GET'])) #RECOMMENDATIONS: #DELETE dispatcher.connect('rec_del','/recommendations/',controller=rec, action = 'DELETE',conditions=dict(method=['DELETE'])) #GET dispatcher.connect('rec_get', '/recommendations/:id',controller=rec, action = 'GET',conditions=dict(method=['GET'])) #PUT dispatcher.connect('rec_put','/recommendations/:id',controller=rec, action = 'PUT',conditions=dict(method=['PUT'])) #Configuration conf = {'global': {'server.socket_host': 'student03.cse.nd.edu', 'server.socket_port':40041}, '/' : {'request.dispatch':dispatcher}} #Update the configuration and start the server cherrypy.config.update(conf) app = cherrypy.tree.mount(None,config=conf) cherrypy.quickstart(app)
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_ratings('ml-1m/ratings.dat')
def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() conf = { 'global': { 'server.socket_host': 'student04.cse.nd.edu', 'server.socket_port': 52011 }, '/': { 'request.dispatch': dispatcher } } mdb = _movie_database() mdb.load_all_preset() moviesCon = MoviesController(mdb) dispatcher.connect('movies_index_get', '/movies/', controller=moviesCon, action='GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('movies_mid_get', '/movies/:mid', controller=moviesCon, action='GET_MID', conditions=dict(method=['GET'])) dispatcher.connect('movies_index_post', '/movies/', controller=moviesCon, action='POST_INDEX', conditions=dict(method=['POST'])) dispatcher.connect('movies_mid_put', '/movies/:mid', controller=moviesCon, action='PUT_MID', conditions=dict(method=['PUT'])) dispatcher.connect('movies_index_delete', '/movies/', controller=moviesCon, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) dispatcher.connect('movies_mid_delete', '/movies/:mid', controller=moviesCon, action='DELETE_MID', conditions=dict(method=['DELETE'])) usersCon = UsersController(mdb) dispatcher.connect('users_index_get', '/users/', controller=usersCon, action='GET_INDEX', conditions=dict(method=['GET'])) dispatcher.connect('users_uid_get', '/users/:uid', controller=usersCon, action='GET_UID', conditions=dict(method=['GET'])) dispatcher.connect('users_index_post', '/users/', controller=usersCon, action='POST_INDEX', conditions=dict(method=['POST'])) dispatcher.connect('users_uid_put', '/users/:uid', controller=usersCon, action='PUT_UID', conditions=dict(method=['PUT'])) dispatcher.connect('users_index_delete', '/users/', controller=usersCon, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) dispatcher.connect('users_uid_delete', '/users/:uid', controller=usersCon, action='DELETE_UID', conditions=dict(method=['DELETE'])) recCon = RecommendationsController(mdb) dispatcher.connect('recommendations_uid_get', '/recommendations/:uid', controller=recCon, action='GET_UID', conditions=dict(method=['GET'])) dispatcher.connect('recommendations_uid_put', '/recommendations/:uid', controller=recCon, action='PUT_UID', conditions=dict(method=['PUT'])) dispatcher.connect('recommendations_index_delete', '/recommendations/', controller=recCon, action='DELETE_INDEX', conditions=dict(method=['DELETE'])) ratingsCon = RatingsController(mdb) dispatcher.connect('ratings_mid_get', '/ratings/:mid', controller=ratingsCon, action='GET_MID', conditions=dict(method=['GET'])) resetCon = ResetController(mdb) dispatcher.connect('reset_index_put', '/reset/', controller=resetCon, action='PUT_INDEX', conditions=dict(method=['PUT'])) dispatcher.connect('reset_mid_put', '/reset/:mid', controller=resetCon, action='PUT_MID', conditions=dict(method=['PUT'])) cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() myd = _movie_database() myd.load_users('ml-1m/users.dat') myd.load_movies('ml-1m/movies.dat') myd.load_ratings('ml-1m/ratings.dat') myd.load_images('ml-1m/images.dat') movie_controller = MovieController(myd) user_controller = UserController(myd) recommendation_controller = RecommendationController(myd) rating_controller = RatingController(myd) reset_controller = ResetController(myd) option_controller = OptionController() #movies dispatcher.connect('movie_get', '/movies/', controller=movie_controller, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_post', '/movies/', controller=movie_controller, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('movie_delete', '/movies/', controller=movie_controller, action='DELETE', conditions=dict(method=['DELETE'])) #movies:key dispatcher.connect('movie_get_key', '/movies/:key', controller=movie_controller, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_put_key', '/movies/:key', controller=movie_controller, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movie_delete_key', '/movies/:key', controller=movie_controller, action='DELETE', conditions=dict(method=['DELETE'])) #users dispatcher.connect('user_get', '/users/', controller=user_controller, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_post', '/users/', controller=user_controller, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('user_delete', '/users/', controller=user_controller, action='DELETE', conditions=dict(method=['DELETE'])) #users:key dispatcher.connect('user_get_key', '/users/:key', controller=user_controller, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_put', '/users/:key', controller=user_controller, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('user_delete_key', '/users/:key', controller=user_controller, action='DELETE', conditions=dict(method=['DELETE'])) #Recommendataions dispatcher.connect('recommendation_delete', '/recommendations/', controller=recommendation_controller, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('recommendation_get_key', '/recommendations/:key', controller=recommendation_controller, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('recommendation_put_key', '/recommendations/:key', controller=recommendation_controller, action='PUT', conditions=dict(method=['PUT'])) #Ratings dispatcher.connect('rating_get_key', '/ratings/:key', controller=rating_controller, action='GET', conditions=dict(method=['GET'])) #Reset dispatcher.connect('reset_put', '/reset/', controller=reset_controller, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('reset_put_key', '/reset/:key', controller=reset_controller, action='PUT', conditions=dict(method=['PUT'])) #Connect dispatcher.connect('movie_option', '/movies/', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('movie_option_key', '/movies/:key', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('user_option', '/users/', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('user_option_key', '/users/:key', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('recommendations_option', '/recommendations/', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('recommendations_option_key', '/recommendations/:key', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('rating_option_key', '/ratings/:key', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('reset_option', '/reset/', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) dispatcher.connect('reset_option_key', '/reset/:key', controller=option_controller, action='OPTIONS', conditions=dict(method=['OPTIONS'])) #set up server conf = { 'global': { 'server.socket_host': 'student04.cse.nd.edu', 'server.socket_port': 51080 }, '/': { 'request.dispatch': dispatcher, 'tools.CORS.on': True } } cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def __init__(self, mdb): mdb = _movie_database() mdb.load_movies('data/movies.dat') mdb.load_users('data/users.dat') mdb.load_ratings('data/ratings.dat') mdb.load_images()
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_favorites('ml-1m/favorites.dat')
def start_service(): # Make controller and dispatcher objects for all resources DB = _movie_database() mov = Movies.Movies(DB) usr = Users.Users(DB) rat = Ratings.Ratings(DB) rec = Recommendations.Recommendations(DB) dispatcher = cherrypy.dispatch.RoutesDispatcher() # MOVIES # GET: dispatcher.connect("mov_get", "/movies/:id", controller=mov, action="GET", conditions=dict(method=["GET"])) dispatcher.connect("mov_get_all", "/movies/", controller=mov, action="GET_ALL", conditions=dict(method=["GET"])) # PUT dispatcher.connect("mov_put", "/movies/:id", controller=mov, action="PUT", conditions=dict(method=["PUT"])) # POST dispatcher.connect("mov_post", "/movies/", controller=mov, action="POST", conditions=dict(method=["POST"])) # RESET dispatcher.connect("mov_res", "/reset/:id", controller=mov, action="RESET", conditions=dict(method=["PUT"])) dispatcher.connect("mov_res_all", "/reset/", controller=mov, action="RESET_ALL", conditions=dict(method=["PUT"])) # DELETE dispatcher.connect("mov_del", "/movies/:id", controller=mov, action="DELETE", conditions=dict(method=["DELETE"])) dispatcher.connect( "mov_del_all", "/movies/", controller=mov, action="DELETE_ALL", conditions=dict(method=["DELETE"]) ) # USERS: # GET dispatcher.connect("usr_get", "/users/:id", controller=usr, action="GET", conditions=dict(method=["GET"])) dispatcher.connect("usr_get_all", "/users/", controller=usr, action="GET_ALL", conditions=dict(method=["GET"])) # PUT dispatcher.connect("usr_put", "/users/:id", controller=usr, action="PUT", conditions=dict(method=["PUT"])) # POST dispatcher.connect("usr_post", "/users/", controller=usr, action="POST", conditions=dict(method=["POST"])) # DELETE dispatcher.connect("usr_del", "/users/:id", controller=usr, action="DELETE", conditions=dict(method=["DELETE"])) dispatcher.connect( "usr_del_all", "/users/", controller=usr, action="DELETE_ALL", conditions=dict(method=["DELETE"]) ) # RATINGS: dispatcher.connect("rat_get", "/ratings/:id", controller=rat, action="GET", conditions=dict(method=["GET"])) # RECOMMENDATIONS: # DELETE dispatcher.connect( "rec_del", "/recommendations/", controller=rec, action="DELETE", conditions=dict(method=["DELETE"]) ) # GET dispatcher.connect("rec_get", "/recommendations/:id", controller=rec, action="GET", conditions=dict(method=["GET"])) # PUT dispatcher.connect("rec_put", "/recommendations/:id", controller=rec, action="PUT", conditions=dict(method=["PUT"])) # Configuration conf = { "global": {"server.socket_host": "student03.cse.nd.edu", "server.socket_port": 40041}, "/": {"request.dispatch": dispatcher}, } # Update the configuration and start the server cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
from reset import ResetController from recommendations import RecommendationsController from cors import CorsController def CORS(): cherrypy.response.headers["Access-Control-Allow-Origin"] = "*" cherrypy.response.headers["Access-Control-Allow-Methods"] = "GET, PUT, POST, OPTIONS, DELETE" # web services if __name__ == '__main__': # Backend setup movie_file = "./dat/movies.dat" users_file = "./dat/users.dat" ratings_file = "./dat/ratings.dat" images_file = "./dat/images.dat" mdb = _movie_database(movie_file, users_file, ratings_file, images_file) dispatcher = cherrypy.dispatch.RoutesDispatcher() conf = { 'global': { 'server.socket_host':'student04.cse.nd.edu', 'server.socket_port':51043 }, '/': { "request.dispatch": dispatcher, "tools.CORS.on": True } } ## Controllers: moviesController = MoviesController(mdb)
def __init__(self, mdb=None): if mdb is None: self.mdb = _movie_database() else: self.mdb = mdb self.mdb.load_users('ml-1m/users.dat')
def start_service(): mdb = _movie_database() dispatcher = cherrypy.dispatch.RoutesDispatcher() votes = VotesController(mdb=mdb) ratings = RatingsController(mdb=mdb) reset = ResetController(mdb=mdb) #instantiate controllers movieController = MovieController(mdb=mdb) userController = UserController(mdb=mdb) #connecting endpoings #connect /movies/:movie_id resource dispatcher.connect('movie_get_mid', '/movies/:movie_id', controller=movieController, action='GET_MID', conditions=dict(method=['GET'])) dispatcher.connect('movie_put_mid', '/movies/:movie_id', controller=movieController, action='PUT_MID', conditions=dict(method=['PUT'])) dispatcher.connect('movie_delete_mid', '/movies/:movie_id', controller=movieController, action='DELETE_MID', conditions=dict(method=['DELETE'])) dispatcher.connect('movie_get', '/movies/', controller=movieController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_post', '/movies/', controller=movieController, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('movie_delete', '/movies/', controller=movieController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('user_get_uid', '/users/:user_id', controller=userController, action='GET_UID', conditions=dict(method=['GET'])) dispatcher.connect('user_put_uid', '/users/:user_id', controller=userController, action='PUT_UID', conditions=dict(method=['PUT'])) dispatcher.connect('user_delete_uid', '/users/:user_id', controller=userController, action='DELETE_UID', conditions=dict(method=['DELETE'])) dispatcher.connect('user_get', '/users/', controller=userController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_post', '/users/', controller=userController, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('user_delete', '/users/', controller=userController, action='DELETE', conditions=dict(method=['DELETE'])) # /recommendations/ routes dispatcher.connect('delete_rec', '/recommendations/', controller=votes, action='DELETE_RECOMMENDATIONS', conditions=dict(method=['DELETE'])) # /recommentdations/:user_id routes dispatcher.connect('get_user_rec', '/recommendations/:user_id', controller=votes, action='GET_RECOMMENDATIONS', conditions=dict(method=['GET'])) dispatcher.connect('put_user_rec', '/recommendations/:user_id', controller=votes, action='PUT_RECOMMENDATIONS', conditions=dict(method=['PUT'])) # /ratings/:movie_id routes dispatcher.connect('get_movie_rating', '/ratings/:movie_id', controller=ratings, action='GET_RATING', conditions=dict(method=['GET'])) # /reset/ routes dispatcher.connect('put_reset', '/reset/', controller=reset, action='PUT_RESET', conditions=dict(method=['PUT'])) # /reset/:movie_id dispatcher.connect('put_reset_movie', '/reset/:movie_id', controller=reset, action='PUT_RESET_MOVIE', conditions=dict(method=['PUT'])) #configuration conf = { 'global': { 'server.socket_host': '127.0.0.1', 'server.socket_port': 8000, }, '/': { 'request.dispatch': dispatcher } } cherrypy.config.update(conf) app = cherrypy.tree.mount(None, config=conf) cherrypy.quickstart(app)
def start_service(): dispatcher = cherrypy.dispatch.RoutesDispatcher() mdb = _movie_database() movieController = MovieController(mdb) userController = UserController(mdb) recommendationController = RecommendationController(mdb) ratingController = RatingController(mdb) resetController = ResetController(mdb) # movie handlers dispatcher.connect('movie_get', '/movies/', controller=movieController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_get_key', '/movies/:key', controller=movieController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('movie_put_key', '/movies/:key', controller=movieController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('movie_post', '/movies/', controller=movieController, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('movie_delete', '/movies/', controller=movieController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('movie_delete_key', '/movies/:key', controller=movieController, action='DELETE', conditions=dict(method=['DELETE'])) # user handlers dispatcher.connect('user_get', '/users/', controller=userController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_get_key', '/users/:key', controller=userController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('user_put_key', '/users/:key', controller=userController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('user_post', '/users/', controller=userController, action='POST', conditions=dict(method=['POST'])) dispatcher.connect('user_delete', '/users/', controller=userController, action='DELETE', conditions=dict(method=['DELETE'])) dispatcher.connect('user_delete_key', '/users/:key', controller=userController, action='DELETE', conditions=dict(method=['DELETE'])) # recommendation handlers dispatcher.connect('recommendation_get_key', '/recommendations/:key', controller=recommendationController, action='GET', conditions=dict(method=['GET'])) dispatcher.connect('recommendation_put_key', '/recommendations/:key', controller=recommendationController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('recommendation_delete', '/recommendations/', controller=recommendationController, action='DELETE', conditions=dict(method=['DELETE'])) # rating handler dispatcher.connect('rating_get_key', '/ratings/:key', controller=ratingController, action='GET', conditions=dict(method=['GET'])) # reset handlers dispatcher.connect('reset_put', '/reset/', controller=resetController, action='PUT', conditions=dict(method=['PUT'])) dispatcher.connect('reset_put_key', '/reset/:key', controller=resetController, action='PUT', conditions=dict(method=['PUT'])) cfg = { 'global': { 'server.socket_host': 'student04.cse.nd.edu', 'server.socket_port': 51067 }, '/': { 'request.dispatch': dispatcher } } cherrypy.config.update(cfg) app = cherrypy.tree.mount(None, config=cfg) cherrypy.quickstart(app)