Beispiel #1
0
                 "Error sending match video updates: {}".format(
                     exception))
             logging.error(traceback.format_exc())
 '''
 If we have an unplayed match during an event within a day, send out a schedule update notification
 '''
 for event in unplayed_match_events:
     try:
         logging.info("Sending schedule updates for: {}".format(
             event.key_name))
         NotificationHelper.send_schedule_update(event)
     except Exception, exception:
         logging.error("Eror sending schedule updates for: {}".format(
             event.key_name))
     try:
         TBANSHelper.event_schedule(event)
     except Exception, exception:
         logging.error("Eror sending schedule updates for: {}".format(
             event.key_name))
         logging.error(traceback.format_exc())
     try:
         # When an event gets a new schedule, we should schedule `match_upcoming` notifications for the first matches for the event
         TBANSHelper.schedule_upcoming_matches(event)
     except Exception, exception:
         logging.error("Eror scheduling match_upcoming for: {}".format(
             event.key_name))
         logging.error(traceback.format_exc())
 '''
 Enqueue firebase push
 '''
 affected_stats_event_keys = set()
    def post(self):
        self._require_admin()

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

        notification_type = self.request.get('type')
        if notification_type == "alliance_selection":
            event_key = self.request.get('event_key')
            event = Event.get_by_id(event_key)
            if not event:
                self.template_values.update({
                    'error': 'No event for key {}'.format(event_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.alliance_selection(event, user_id)
        elif notification_type == "awards":
            event_key = self.request.get('event_key')
            event = Event.get_by_id(event_key)
            if not event:
                self.template_values.update({
                    'error': 'No event for key {}'.format(event_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.awards(event, user_id)
        elif notification_type == "event_level":
            match_key = self.request.get('match_key')
            match = Match.get_by_id(match_key)
            if not match:
                self.template_values.update({
                    'error': 'No match for key {}'.format(match_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.event_level(match, user_id)
        elif notification_type == "event_schedule":
            event_key = self.request.get('event_key')
            event = Event.get_by_id(event_key)
            if not event:
                self.template_values.update({
                    'error': 'No event for key {}'.format(event_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.event_schedule(event, user_id)
        elif notification_type == "match_score":
            match_key = self.request.get('match_key')
            match = Match.get_by_id(match_key)
            if not match:
                self.template_values.update({
                    'error': 'No match for key {}'.format(match_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.match_score(match, user_id)
        elif notification_type == "match_upcoming":
            match_key = self.request.get('match_key')
            match = Match.get_by_id(match_key)
            if not match:
                self.template_values.update({
                    'error': 'No match for key {}'.format(match_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.match_upcoming(match, user_id)
        elif notification_type == "match_video":
            match_key = self.request.get('match_key')
            match = Match.get_by_id(match_key)
            if not match:
                self.template_values.update({
                    'error': 'No match for key {}'.format(match_key)
                })
                return self.redirect('/admin/tbans')

            TBANSHelper.match_video(match, user_id)
        elif notification_type == "ping":
            clients = MobileClient.clients([user_id])
            for client in clients:
                TBANSHelper.ping(client)

        return self.redirect('/admin/tbans')