def test_get_game(self): """ Ensure we can get an existing game. """ event = Event() event.event_day = "1820-10-25" event.event_time = "14:39" event.game_id = 1 event.location = "Tom's" event.gamer_id = 1 event.save() # Make sure request is authenticated self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) # Initiate request and store response response = self.client.get(f"/events/{event.id}") # Parse the JSON in the response body json_response = json.loads(response.content) # Assert that the game was retrieved self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the values are correct self.assertEqual(json_response["event_day"], "1820-10-25") self.assertEqual(json_response["event_time"], "14:39:00") self.assertEqual(json_response["location"], "Tom's")
def test_get_event(self): """ Ensure we can get an existing game. """ # Seed the database with a game event = Event() event.event_time = "2020-08-28T14:51:39.989Z" event.location = "Shelbyville" event.game_id = 1 event.gamer_id = 1 event.save() # Make sure request is authenticated self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) # Initiate request and store response response = self.client.get(f"/events/{event.id}") # Parse the JSON in the response body json_response = json.loads(response.content) # Assert that the game was retrieved self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the values are correct # self.assertEqual(json_response["event_time"], "2020-08-28T14:51:39.989Z") self.assertEqual(json_response["game"]["id"], 1) self.assertEqual(json_response["gamer"]["id"], 1) self.assertEqual(json_response["location"], "Shelbyville")
def test_get_event(self): """ Ensure we can get an existing event. """ # Seed the database with an event event = Event() event.event_time = "2020-08-29T13:24:27.172Z" event.game_id = 1 event.location = "Nashville, TN" event.scheduler_id = 1 event.save() # Make sure request is authenticated self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) # Initiate request and store response response = self.client.get(f"/events/{event.id}") # Parse the JSON in the response body json_response = json.loads(response.content) # Assert that the event was retrieved self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the values are correct self.assertEqual(json_response["event_time"], "2020-08-29T13:24:27.172000Z") self.assertEqual(json_response["game"]["id"], 1) self.assertEqual(json_response["location"], "Nashville, TN") self.assertEqual(json_response["scheduler"]["user"]["id"], 1)
def test_change_event(self): """ Ensure we can change an existing event """ event = Event() event.event_time = "2020-08-29T13:24:27.172Z" event.game_id = 1 event.location = "Nashville, TN" event.scheduler_id = 1 event.save() # Define new properties for game data = { "time": "2020-08-29T13:24:27.172000Z", "gameId": 1, "location": "Columbus, GA", "scheduler": 1 } self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.put(f"/events/{event.id}", data, format="json") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET Event again to verify changes response = self.client.get(f"/events/{event.id}") json_response = json.loads(response.content) self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the properties are correct self.assertEqual(json_response["event_time"], "2020-08-29T13:24:27.172000Z") self.assertEqual(json_response["game"]["id"], 1) self.assertEqual(json_response["location"], "Columbus, GA") self.assertEqual(json_response["scheduler"]["user"]["id"], 1)
def test_change_event(self): """ Ensure we can get an existing game. """ # Seed the database with a game event = Event() event.event_time = "2020-08-28T14:51:39.989Z" event.location = "Shelbyville" event.game_id = 1 event.gamer_id = 1 event.save() data = { "event_time": "2020-08-28T14:51:39.989Z", "gameId": 1, "gamerId": 1, "location": "Shelbyville" } self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.put(f"/events/{event.id}", data, format="json") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET GAME AGAIN TO VERIFY CHANGES response = self.client.get(f"/events/{event.id}") json_response = json.loads(response.content) self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the properties are correct self.assertEqual(json_response["event_time"], "2020-08-28T14:51:39.989Z") self.assertEqual(json_response["game"]["id"], 1) self.assertEqual(json_response["gamer"]["id"], 1) self.assertEqual(json_response["location"], "Shelbyville")
def test_change_event(self): """ Ensure we can change an existing game. """ event = Event() event.event_time = "2021-02-12 12:47:00" event.location = "Sorry" event.scheduler_id = 1 event.game_id = 1 event.save() # DEFINE NEW PROPERTIES FOR GAME data = { "event_time": "2021-03-12 12:47:00", "location": "your moms house", "gameId": 1, "gamerId": 1 } self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.put(f"/events/{event.id}", data, format="json") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET GAME AGAIN TO VERIFY CHANGES response = self.client.get(f"/events/{event.id}") json_response = json.loads(response.content) self.assertEqual(response.status_code, status.HTTP_200_OK) # Assert that the properties are correct self.assertEqual(json_response["location"], "your moms house") self.assertEqual(json_response["event_time"], "2021-03-12T12:47:00Z") self.assertEqual(json_response["game"]["id"], 1) self.assertEqual(json_response["scheduler"]["id"], 1)
def test_get_event(self): event = Event() event.game_id = 1 event.scheduler_id = 1 event.location = "The moon" event.event_time = "2021-02-05 17:00:00" event.save() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.get(f"/events/{event.id}") json_response = json.loads(response.content) self.assertEqual(json_response["location"], "The moon")
def create(self, request): event = Event() scheduler = Gamer.objects.get(user=request.auth.user) game = Game.objects.get(pk=request.data["gameId"]) event.event_time = request.data["eventTime"] event.game = game event.scheduler = scheduler event.location = ["location"] try: event.save() serializer = EventSerializer(event, context={'request': request}) return Response(serializer.data, status=status.HTTP_201_CREATED) except ValidationError as ex: return Response({"reason": ex.message}, status=status.HTTP_400_BAD_REQUEST)
def test_delete_game(self): """ Ensure we can delete an existing game. """ event = Event() event.event_time = "2020-08-29T13:24:27.172Z" event.game_id = 1 event.location = "Nashville, TN" event.scheduler_id = 1 event.save() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.delete(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET again to verify 404 response = self.client.get(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def update(self, request, pk=None): """Handle PUT requests for an event Returns: Response -- Empty body with 204 status code """ event = Event() event.event_time = request.data["event_time"] event.location = request.data["location"] game = Game.objects.get(pk=request.data["gameId"]) event.game = game gamer = Gamer.objects.get(pk=request.data["gamerId"]) event.gamer = gamer event.save() return Response({}, status=status.HTTP_204_NO_CONTENT)
def test_delete_event(self): """ Ensure we can delete an existing game. """ event = Event() event.event_time = "2020-08-28T14:51:39.989Z" event.location = "Shelbyville" event.game_id = 1 event.gamer_id = 1 event.save() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.delete(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET event AGAIN TO VERIFY 404 response response = self.client.get(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_delete_event(self): """ Ensure we can delete an existing event. """ event = Event() event.event_time = "2021-03-02 13:46:38.058841" event.location = "My house" event.game_id = 1 event.scheduler_id = 1 event.save() self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token) response = self.client.delete(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) # GET event AGAIN TO VERIFY 404 response response = self.client.get(f"/events/{event.id}") self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def create(self, request): """Handle POST operations for events Returns: Response -- JSON serialized event instance """ gamer = Gamer.objects.get(user=request.auth.user) event = Event() event.event_time = request.data["event_time"] event.location = request.data["location"] event.scheduler = gamer game = Game.objects.get(pk=request.data["gameId"]) event.game = game try: event.save() serializer = EventSerializer(event, context={'request': request}) return Response(serializer.data) except ValidationError as ex: return Response({"reason": ex.message}, status=status.HTTP_400_BAD_REQUEST)
def userevent_list(request): """Function to build an HTML report of games by user""" if request.method == 'GET': # Connect to project database with sqlite3.connect(Connection.db_path) as conn: conn.row_factory = sqlite3.Row db_cursor = conn.cursor() # Query for all events, with related user info. db_cursor.execute(""" SELECT eg.id, u.first_name || ' ' || u.last_name AS full_name, u.id user_id, eg.event_id, e.location, e.time, e.day, e.id event_id_number, g.title FROM levelupapi_eventgamer eg JOIN levelupapi_event e ON e.id = eg.event_id JOIN levelupapi_gamer gr ON gr.id = eg.gamer_id JOIN levelupapi_game g ON g.id = e.game_id JOIN auth_user u ON u.id = gr.user_id """) dataset = db_cursor.fetchall() events_by_user = {} for row in dataset: # Crete a Event instance and set its properties event = Event() event.id = row["event_id_number"] event.day = row["day"] event.time = row["time"] event.location = row["location"] event.title = row["title"] # Store the user's id uid = row["user_id"] # If the user's id is already a key in the dictionary... if uid in events_by_user: # Add the current event to the `events` list for it events_by_user[uid]['events'].append(event) else: # Otherwise, create the key and dictionary value events_by_user[uid] = {} events_by_user[uid]["user_id"] = uid events_by_user[uid]["full_name"] = row["full_name"] events_by_user[uid]["events"] = [event] # Get only the values from the dictionary and create a list from them list_of_users_with_events = events_by_user.values() # Specify the Django template and provide data context template = 'users/list_with_events.html' context = {'userevents_list': list_of_users_with_events} return render(request, template, context)