def createTeamMediaSuggestion(cls, author_account_key, media_url, team_key, year_str): """Create a Team Media Suggestion. Returns status (success, exists, bad_url)""" media_dict = MediaParser.partial_media_dict_from_url(media_url) if media_dict is not None: existing_media = Media.get_by_id(Media.render_key_name(media_dict['media_type_enum'], media_dict['foreign_key'])) if existing_media is None or team_key not in [reference.id() for reference in existing_media.references]: foreign_type = Media.SLUG_NAMES[media_dict['media_type_enum']] suggestion_id = Suggestion.render_key_name(year_str, 'team', team_key, foreign_type, media_dict['foreign_key']) suggestion = Suggestion.get_by_id(suggestion_id) if not suggestion or suggestion.review_state != Suggestion.REVIEW_PENDING: media_dict['year'] = int(year_str) media_dict['reference_type'] = 'team' media_dict['reference_key'] = team_key suggestion = Suggestion( id=suggestion_id, author=author_account_key, target_model="media", ) suggestion.contents = media_dict suggestion.put() return 'success' else: return 'suggestion_exists' else: return 'media_exists' else: return 'bad_url'
def post(self): self._require_login() match_key = self.request.get("match_key") match_future = Match.get_by_id_async(self.request.get("match_key")) youtube_url = self.request.get("youtube_url") youtube_id = None regex1 = re.match(r".*youtu\.be\/(.*)", youtube_url) if regex1 is not None: youtube_id = regex1.group(1) else: regex2 = re.match(r".*v=([a-zA-Z0-9_-]*)", youtube_url) if regex2 is not None: youtube_id = regex2.group(1) if youtube_id is not None: if youtube_id not in match_future.get_result().youtube_videos: year = match_key[:4] suggestion_id = Suggestion.render_key_name(year, 'match', match_key, 'youtube', youtube_id) suggestion = Suggestion.get_by_id(suggestion_id) if not suggestion or suggestion.review_state != Suggestion.REVIEW_PENDING: suggestion = Suggestion( id=suggestion_id, author=self.user_bundle.account.key, target_key=match_key, target_model="match", ) suggestion.contents = {"youtube_videos": [youtube_id]} suggestion.put() status = 'success' else: status = 'suggestion_exists' else: status = 'video_exists' else: status = 'bad_url' self.redirect('/suggest/match/video?match_key={}&status={}'.format(match_key, status))