コード例 #1
0
    def post(self, team_number):
        self._require_login()
        self._require_registration()

        current_user_id = self.user_bundle.account.key.id()
        team_key = 'frc{}'.format(team_number)

        if self.request.get('favorite'):
            favorite = Favorite(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.TEAM,
                model_key=team_key
            )
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, team_key, ModelType.TEAM)

        subs = self.request.get_all('notification_types')
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.TEAM,
                model_key=team_key,
                notification_types=[int(s) for s in subs]
            )
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, team_key, ModelType.TEAM)

        self.redirect('/account/mytba?status=team_updated#my-teams')
コード例 #2
0
    def post(self, team_number):
        self._require_registration()

        current_user_id = self.user_bundle.account.key.id()
        team_key = 'frc{}'.format(team_number)

        if self.request.get('favorite'):
            favorite = Favorite(parent=ndb.Key(Account, current_user_id),
                                user_id=current_user_id,
                                model_type=ModelType.TEAM,
                                model_key=team_key)
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, team_key,
                                        ModelType.TEAM)

        subs = self.request.get_all('notification_types')
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.TEAM,
                model_key=team_key,
                notification_types=[int(s) for s in subs])
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, team_key,
                                            ModelType.TEAM)

        self.redirect('/account/mytba?status=team_updated#my-teams')
コード例 #3
0
    def post(self, match_key):
        self._require_login()
        self._require_registration()

        current_user_id = self.user_bundle.account.key.id()
        match = Match.get_by_id(match_key)

        if self.request.get('favorite'):
            favorite = Favorite(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.MATCH,
                model_key=match_key
            )
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, match_key, ModelType.MATCH)

        subs = self.request.get_all('notification_types')
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.MATCH,
                model_key=match_key,
                notification_types=[int(s) for s in subs]
            )
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, match_key, ModelType.MATCH)

        self.redirect('/account/mytba?status=match_updated#my-matches')
コード例 #4
0
    def post(self, event_key):
        self._require_login('/account/register')
        self._require_registration('/account/register')

        current_user_id = self.user_bundle.account.key.id()

        if self.request.get('favorite'):
            favorite = Favorite(parent=ndb.Key(Account, current_user_id),
                                user_id=current_user_id,
                                model_type=ModelType.EVENT,
                                model_key=event_key)
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, event_key)

        subs = self.request.get_all('notification_types')
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.EVENT,
                model_key=event_key,
                notification_types=[int(s) for s in subs])
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, event_key)

        self.redirect('/account/mytba?status=event_updated#my-events')
コード例 #5
0
    def post(self, match_key):
        self._require_registration()

        current_user_id = self.user_bundle.account.key.id()
        match = Match.get_by_id(match_key)

        if self.request.get('favorite'):
            favorite = Favorite(parent=ndb.Key(Account, current_user_id),
                                user_id=current_user_id,
                                model_type=ModelType.MATCH,
                                model_key=match_key)
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, match_key,
                                        ModelType.MATCH)

        subs = self.request.get_all('notification_types')
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.MATCH,
                model_key=match_key,
                notification_types=[int(s) for s in subs])
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, match_key,
                                            ModelType.MATCH)

        self.redirect('/account/mytba?status=match_updated#my-matches')
コード例 #6
0
    def post(self, event_key):
        self._require_registration()

        current_user_id = self.user_bundle.account.key.id()

        if self.request.get("favorite"):
            favorite = Favorite(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.EVENT,
                model_key=event_key,
            )
            MyTBAHelper.add_favorite(favorite)
        else:
            MyTBAHelper.remove_favorite(current_user_id, event_key, ModelType.EVENT)

        subs = self.request.get_all("notification_types")
        if subs:
            subscription = Subscription(
                parent=ndb.Key(Account, current_user_id),
                user_id=current_user_id,
                model_type=ModelType.EVENT,
                model_key=event_key,
                notification_types=[int(s) for s in subs],
            )
            MyTBAHelper.add_subscription(subscription)
        else:
            MyTBAHelper.remove_subscription(current_user_id, event_key, ModelType.EVENT)

        self.redirect("/account/mytba?status=event_updated#my-events")
コード例 #7
0
    def post(self):
        if not self.user_bundle.user:
            self.response.set_status(401)
            return

        model_type = int(self.request.get("model_type"))
        model_key = self.request.get("model_key")
        user_id = self.user_bundle.user.user_id()

        fav = Favorite(parent=ndb.Key(Account, user_id), user_id=user_id, model_key=model_key, model_type=model_type)
        MyTBAHelper.add_favorite(fav)
コード例 #8
0
    def post(self):
        if not self.user_bundle.user:
            self.response.set_status(401)
            return

        model_type = int(self.request.get("model_type"))
        model_key = self.request.get("model_key")
        user_id = self.user_bundle.user.user_id()

        fav = Favorite(parent=ndb.Key(Account, user_id),
                       user_id=user_id,
                       model_key=model_key,
                       model_type=model_type)
        MyTBAHelper.add_favorite(fav)
コード例 #9
0
 def test_add_favorite_304(self):
     favorite = Favorite(
         parent=ndb.Key(Account, 'user_id'),
         user_id='user_id',
         model_key='frc7332',
         model_type=ModelType.TEAM)
     favorite.put()
     # Favorite already exists - return a 304
     with patch.object(NotificationHelper, 'send_favorite_update') as mock_send_favorite_update:
         self.assertEqual(MyTBAHelper.add_favorite(favorite), 304)
         mock_send_favorite_update.assert_not_called()
コード例 #10
0
 def test_add_favorite_200_sending_device_key(self):
     favorite = Favorite(
         parent=ndb.Key(Account, 'user_id'),
         user_id='user_id',
         model_key='frc7332',
         model_type=ModelType.TEAM)
     # Favorite does not already exist - return a 200 and put
     with patch.object(NotificationHelper, 'send_favorite_update') as mock_send_favorite_update, \
          patch.object(favorite, 'put') as mock_put:
             self.assertEqual(MyTBAHelper.add_favorite(favorite, 'sending_device_key'), 200)
             mock_put.assert_called_once()
             mock_send_favorite_update.assert_called_once_with('user_id', 'sending_device_key')
コード例 #11
0
    def update_model_preferences(self, request):
        user_id = get_current_user_id(self.headers)
        if user_id is None:
            return BaseResponse(
                code=401, message="Unauthorized to update model preferences")
        model_key = request.model_key
        model_type = request.model_type
        output = {}
        code = 0

        if request.favorite:
            fav = Favorite(parent=ndb.Key(Account, user_id),
                           user_id=user_id,
                           model_key=model_key,
                           model_type=model_type)
            result = MyTBAHelper.add_favorite(fav, request.device_key)
            if result == 200:
                output['favorite'] = {"code": 200, "message": "Favorite added"}
                code += 100
            elif result == 304:
                output['favorite'] = {
                    "code": 304,
                    "message": "Favorite already exists"
                }
                code += 304
            else:
                output['favorite'] = {
                    "code": 500,
                    "message": "Unknown error adding favorite"
                }
                code += 500
        else:
            result = MyTBAHelper.remove_favorite(user_id, model_key,
                                                 model_type,
                                                 request.device_key)
            if result == 200:
                output['favorite'] = {
                    "code": 200,
                    "message": "Favorite deleted"
                }
                code += 100
            elif result == 404:
                output['favorite'] = {
                    "code": 404,
                    "message": "Favorite not found"
                }
                code += 404
            else:
                output['favorite'] = {
                    "code": 500,
                    "message": "Unknown error removing favorite"
                }
                code += 500

        if request.notifications:
            sub = Subscription(
                parent=ndb.Key(Account, user_id),
                user_id=user_id,
                model_key=model_key,
                model_type=request.model_type,
                notification_types=PushHelper.notification_enums_from_string(
                    request.notifications))
            result = MyTBAHelper.add_subscription(sub, request.device_key)
            if result == 200:
                output['subscription'] = {
                    "code": 200,
                    "message": "Subscription updated"
                }
                code += 100
            elif result == 304:
                output['subscription'] = {
                    "code": 304,
                    "message": "Subscription already exists"
                }
                code += 304
            else:
                output['subscription'] = {
                    "code": 500,
                    "message": "Unknown error adding favorite"
                }
                code += 500
        else:
            result = MyTBAHelper.remove_subscription(user_id, model_key,
                                                     model_type,
                                                     request.device_key)
            if result == 200:
                output['subscription'] = {
                    "code": 200,
                    "message": "Subscription removed"
                }
                code += 100
            elif result == 404:
                output['subscription'] = {
                    "code": 404,
                    "message": "Subscription not found"
                }
                code += 404
            else:
                output['subscription'] = {
                    "code": 500,
                    "message": "Unknown error removing subscription"
                }
                code += 500

        return BaseResponse(code=code, message=json.dumps(output))
コード例 #12
0
    def update_model_preferences(self, request):
        current_user = endpoints.get_current_user()
        if current_user is None:
            return BaseResponse(code=401, message="Unauthorized to update model preferences")
        user_id = PushHelper.user_email_to_id(current_user.email())
        model_key = request.model_key
        output = {}
        code = 0

        if request.favorite:
            fav = Favorite(
                parent=ndb.Key(Account, user_id),
                user_id=user_id,
                model_key=model_key,
                model_type=request.model_type
            )
            result = MyTBAHelper.add_favorite(fav, request.device_key)
            if result == 200:
                output['favorite'] = {"code":    200,
                                      "message": "Favorite added"}
                code += 100
            elif result == 304:
                output['favorite'] = {"code":    304,
                                      "message": "Favorite already exists"}
                code += 304
            else:
                output['favorite'] = {"code":    500,
                                      "message": "Unknown error adding favorite"}
                code += 500
        else:
            result = MyTBAHelper.remove_favorite(user_id, model_key, request.device_key)
            if result == 200:
                output['favorite'] = {"code":    200,
                                      "message": "Favorite deleted"}
                code += 100
            elif result == 404:
                output['favorite'] = {"code":    404,
                                      "message": "Favorite not found"}
                code += 404
            else:
                output['favorite'] = {"code":    500,
                                      "message": "Unknown error removing favorite"}
                code += 500

        if request.notifications:
            sub = Subscription(
                parent=ndb.Key(Account, user_id),
                user_id=user_id,
                model_key=model_key,
                model_type=request.model_type,
                notification_types=PushHelper.notification_enums_from_string(request.notifications)
            )
            result = MyTBAHelper.add_subscription(sub, request.device_key)
            if result == 200:
                output['subscription'] = {"code":    200,
                                          "message": "Subscription updated"}
                code += 100
            elif result == 304:
                output['subscription'] = {"code":    304,
                                          "message": "Subscription already exists"}
                code += 304
            else:
                output['subscription'] = {"code":    500,
                                          "message": "Unknown error adding favorite"}
                code += 500
        else:
            result = MyTBAHelper.remove_subscription(user_id, model_key, request.device_key)
            if result == 200:
                output['subscription'] = {"code":    200,
                                          "message": "Subscription removed"}
                code += 100
            elif result == 404:
                output['subscription'] = {"code":    404,
                                          "message": "Subscription not found"}
                code += 404
            else:
                output['subscription'] = {"code":    500,
                                          "message": "Unknown error removing subscription"}
                code += 500

        return BaseResponse(code=code, message=json.dumps(output))