def create_insta_suggestion(account_key_id, team_num, year, insta_url): SuggestionCreator.createTeamMediaSuggestion( author_account_key=ndb.Key(Account, account_key_id), media_url=insta_url, team_key="frc{}".format(team_num), year_str=str(year), default_preferred=True)
def createTeamMediaSuggestion(self): user_bundle = UserBundle() team = Team.query().fetch(1)[0] SuggestionCreator.createTeamMediaSuggestion( author_account_key=user_bundle.account.key, media_url=self.YOUTUBE_URL, team_key=team.key_name, year_str="2016")
def testBadUrl(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://foo.com/blah", "frc1124", "2016") self.assertEqual(status, 'bad_url')
def suggest_team_media(self, request): current_user = endpoints.get_current_user() if current_user is None: return BaseResponse(code=401, message="Unauthorized to make suggestions") user_id = PushHelper.user_email_to_id(current_user.email()) # For now, only allow team media suggestions if request.reference_type != "team": # Trying to suggest a media for an invalid model type return BaseResponse(code=400, message="Bad model type") # Need to split deletehash out into its own private dict. Don't want that to be exposed via API... private_details_json = None if request.details_json: incoming_details = json.loads(request.details_json) private_details = None if 'deletehash' in incoming_details: private_details = {'deletehash': incoming_details.pop('deletehash')} private_details_json = json.dumps(private_details) if private_details else None status = SuggestionCreator.createTeamMediaSuggestion( author_account_key=ndb.Key(Account, user_id), media_url=request.media_url, team_key=request.reference_key, year_str=str(request.year), private_details_json=private_details_json) if status != 'bad_url': if status == 'success': return BaseResponse(code=200, message="Suggestion added") else: return BaseResponse(code=304, message="Suggestion already exists") else: return BaseResponse(code=400, message="Bad suggestion url")
def _render(self, team_key, year): if int(year) not in list(TeamParticipationQuery(team_key).fetch()): self.abort(404) if 'media_url' in self.request.POST: status, suggestion = SuggestionCreator.createTeamMediaSuggestion( author_account_key=self.auth_owner_key, media_url=self.request.POST["media_url"], team_key=team_key, year_str=year) if status == 'success': message = { "success": True } else: message = { "success": False, "message": status } else: message = { "success": False, "message": "missing media_url" } return json.dumps(message, ensure_ascii=True, indent=2, sort_keys=True)
def createSuggestion(self): status = SuggestionCreator.createTeamMediaSuggestion(self.account.key, 'http://imgur.com/foobar', 'frc1124', 2016) self.assertEqual(status[0], 'success') return Suggestion.query().fetch(keys_only=True)[0].id()
def testBadUrl(self): status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://foo.com/blah", "frc1124", "2016") self.assertEqual(status, 'bad_url')
def createDesignSuggestion(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, 'https://grabcad.com/library/2016-148-robowranglers-1', 'frc1124', '2016') self.assertEqual(status[0], 'success') return Suggestion.render_media_key_name( '2016', 'team', 'frc1124', 'grabcad', '2016-148-robowranglers-1')
def testMediaExists(self): media_id = Media.render_key_name(MediaType.IMGUR, 'ruRAxDm') Media.get_or_insert(media_id, media_type_enum=MediaType.IMGUR, foreign_key='ruRAxDm', references=[ndb.Key(Team, 'frc1124')]).put() status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'media_exists')
def testDuplicateSuggestion(self): suggestion_id = Suggestion.render_media_key_name( '2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') Suggestion(id=suggestion_id, author=self.account.key, review_state=Suggestion.REVIEW_PENDING, target_key="2012cmp", target_model="event").put() status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'suggestion_exists')
def post(self): self._require_registration() team_key = self.request.get("team_key") status, suggestion = SuggestionCreator.createTeamMediaSuggestion( author_account_key=self.user_bundle.account.key, media_url=self.request.get("media_url"), team_key=team_key, year_str=None, is_social=True) self.redirect('/suggest/team/social_media?team_key=%s&status=%s' % (team_key, status))
def post(self): self._require_login() team_key = self.request.get("team_key") year_str = self.request.get("year") status = SuggestionCreator.createTeamMediaSuggestion( author_account_key=self.user_bundle.account.key, media_url=self.request.get("media_url"), team_key=team_key, year_str=year_str) self.redirect('/suggest/team/media?team_key=%s&year=%s&status=%s' % (team_key, year_str, status))
def testMediaExists(self): media_id = Media.render_key_name(MediaType.IMGUR, 'ruRAxDm') Media.get_or_insert( media_id, media_type_enum=MediaType.IMGUR, foreign_key='ruRAxDm', references=[ndb.Key(Team, 'frc1124')]).put() status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'media_exists')
def testCleanUrl(self): status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, " http://imgur.com/ruRAxDm?foo=bar#meow ", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name( '2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') suggestion = Suggestion.get_by_id(suggestion_id) self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media')
def testDuplicateSuggestion(self): suggestion_id = Suggestion.render_media_key_name('2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') Suggestion( id=suggestion_id, author=self.account.key, review_state=Suggestion.REVIEW_PENDING, target_key="2012cmp", target_model="event").put() status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'suggestion_exists')
def testCleanUrl(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, " http://imgur.com/ruRAxDm?foo=bar#meow ", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name('2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') suggestion = Suggestion.get_by_id(suggestion_id) self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media')
def testCreateSuggestion(self): status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name( '2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') suggestion = Suggestion.get_by_id(suggestion_id) expected_dict = MediaParser.partial_media_dict_from_url( "http://imgur.com/ruRAxDm") self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media') self.assertDictContainsSubset(expected_dict, suggestion.contents)
def post(self): self._require_registration() team_key = self.request.get("team_key") year_str = self.request.get("year") status, suggestion = SuggestionCreator.createTeamMediaSuggestion( author_account_key=self.user_bundle.account.key, media_url=self.request.get("media_url"), team_key=team_key, year_str=year_str) if status == 'success' and suggestion.contents.get('media_type') == MediaType.GRABCAD: # Send an update to the frcdesigns slack slack_sitevar = Sitevar.get_or_insert('slack.hookurls') if slack_sitevar: slack_url = slack_sitevar.contents.get('tbablog', '') if slack_url: model_details = json.loads(suggestion.contents['details_json']) message_body = "{0} ({1}) has suggested a CAD model for team <https://thebluealliance.com/team/{2}/{3}|{2} in {3}>.".format( self.user_bundle.account.display_name, self.user_bundle.account.email, team_key[3:], year_str) image_attachment = { "footer": "<https://www.thebluealliance.com/suggest/cad/review|See all suggestions> on The Blue Alliance", "fallback": "CAD model", "title": model_details['model_name'], "title_link": "https://grabcad.com/library/{}".format(suggestion.contents['foreign_key']), "image_url": model_details['model_image'].replace('card.jpg', 'large.png'), "fields": [ { "title": "Accept", "value": "<https://www.thebluealliance.com/suggest/cad/review?action=accept&id={}|Click Here>".format(suggestion.key.id()), "short": True, }, { "title": "Reject", "value": "<https://www.thebluealliance.com/suggest/cad/review?action=reject&id={}|Click Here>".format(suggestion.key.id()), "short": True, } ], } SuggestionNotifier.send_slack_alert(slack_url, message_body, [image_attachment]) self.redirect('/suggest/team/media?team_key=%s&year=%s&status=%s' % (team_key, year_str, status))
def testCreateSuggestionWithUrlParams(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "https://www.youtube.com/watch?v=VP992UKFbko", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name('2016', 'team', 'frc1124', 'youtube', 'VP992UKFbko') suggestion = Suggestion.get_by_id(suggestion_id) expected_dict = MediaParser.partial_media_dict_from_url("https://www.youtube.com/watch?v=VP992UKFbko") self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media') self.assertDictContainsSubset(expected_dict, suggestion.contents)
def testCreateSuggestionWithUrlParams(self): status, _ = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "https://www.youtube.com/watch?v=VP992UKFbko", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name( '2016', 'team', 'frc1124', 'youtube', 'VP992UKFbko') suggestion = Suggestion.get_by_id(suggestion_id) expected_dict = MediaParser.partial_media_dict_from_url( "https://www.youtube.com/watch?v=VP992UKFbko") self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media') self.assertDictContainsSubset(expected_dict, suggestion.contents)
def testCreateSuggestion(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, "http://imgur.com/ruRAxDm", "frc1124", "2016") self.assertEqual(status, 'success') # Ensure the Suggestion gets created suggestion_id = Suggestion.render_media_key_name('2016', 'team', 'frc1124', 'imgur', 'ruRAxDm') suggestion = Suggestion.get_by_id(suggestion_id) expected_dict = MediaParser.partial_media_dict_from_url("http://imgur.com/ruRAxDm") self.assertIsNotNone(suggestion) self.assertEqual(suggestion.review_state, Suggestion.REVIEW_PENDING) self.assertEqual(suggestion.author, self.account.key) self.assertEqual(suggestion.target_model, 'media') self.assertDictContainsSubset(expected_dict, suggestion.contents)
def createSocialMediaSuggestion(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, 'http://twitter.com/frc1124', 'frc1124', None, None, True) self.assertEqual(status[0], 'success') return Suggestion.query().fetch(keys_only=True)[0].id()
def createMediaSuggestion(self): status = SuggestionCreator.createTeamMediaSuggestion( self.account.key, 'http://imgur.com/foobar', 'frc1124', self.now.year) self.assertEqual(status[0], 'success') return Suggestion.query().fetch(keys_only=True)[0].id()
def post(self): self._require_registration() team_key = self.request.get("team_key") year_str = self.request.get("year") status, suggestion = SuggestionCreator.createTeamMediaSuggestion( author_account_key=self.user_bundle.account.key, media_url=self.request.get("media_url"), team_key=team_key, year_str=year_str) if status == 'success' and suggestion.contents.get( 'media_type') == MediaType.GRABCAD: # Send an update to the frcdesigns slack slack_sitevar = Sitevar.get_or_insert('slack.hookurls') if slack_sitevar: slack_url = slack_sitevar.contents.get('tbablog', '') if slack_url: model_details = json.loads( suggestion.contents['details_json']) message_body = "{0} ({1}) has suggested a CAD model for team <https://www.thebluealliance.com/team/{2}/{3}|{2} in {3}>.".format( self.user_bundle.account.display_name, self.user_bundle.account.email, team_key[3:], year_str) image_attachment = { "footer": "<https://www.thebluealliance.com/suggest/cad/review|See all suggestions> on The Blue Alliance", "fallback": "CAD model", "title": model_details['model_name'], "title_link": "https://grabcad.com/library/{}".format( suggestion.contents['foreign_key']), "image_url": model_details['model_image'].replace( 'card.jpg', 'large.png'), "fields": [{ "title": "Accept", "value": "<https://www.thebluealliance.com/suggest/cad/review?action=accept&id={}|Click Here>" .format(suggestion.key.id()), "short": True, }, { "title": "Reject", "value": "<https://www.thebluealliance.com/suggest/cad/review?action=reject&id={}|Click Here>" .format(suggestion.key.id()), "short": True, }], } OutgoingNotificationHelper.send_slack_alert( slack_url, message_body, [image_attachment]) self.redirect('/suggest/team/media?team_key=%s&year=%s&status=%s' % (team_key, year_str, status))