Esempio n. 1
0
 def post_admin(self, data):
     cid = data.get('cid', None)
     tid = data.get('tid', None)
     if not cid or not tid:
         raise errors.ValidationError('Requires team and challenge.')
     challenge = models.Challenge.query.get(data['cid'])
     team = models.Team.query.get(data['tid'])
     if not challenge or not team:
         raise errors.ValidationError('Requires team and challenge.')
     user = models.User.current()
     app.challenge_log.info(
         'Admin %s <%s> submitting flag for challenge %s <%d>, '
         'team %s <%d>', user.nick, user.email, challenge.name,
         challenge.cid, team.name, team.tid)
     try:
         points = controllers.save_team_answer(challenge, team, None)
     except (errors.IntegrityError, errors.FlushError) as ex:
         app.logger.exception('Unable to save answer for %s/%s: %s',
                              str(data['tid']), str(data['tid']), str(ex))
         models.db.session.rollback()
         raise errors.AccessDeniedError(
             'Unable to save answer for team. See log for details.')
     cache.delete('cats/%d' % tid)
     cache.delete('scoreboard')
     return dict(points=points)
Esempio n. 2
0
 def post_admin(self, data):
     cid = data.get('cid', None)
     tid = data.get('tid', None)
     if not cid or not tid:
         raise errors.ValidationError('Requires team and challenge.')
     challenge = models.Challenge.query.get(data['cid'])
     team = models.Team.query.get(data['tid'])
     if not challenge or not team:
         raise errors.ValidationError('Requires team and challenge.')
     user = models.User.current()
     app.challenge_log.info(
             'Admin %s <%s> submitting flag for challenge %s <%d>, '
             'team %s <%d>',
             user.nick, user.email, challenge.name, challenge.cid,
             team.name, team.tid)
     try:
         points = controllers.save_team_answer(challenge, team, None)
         models.commit()
     except (errors.IntegrityError, errors.FlushError) as ex:
         app.logger.exception(
                 'Unable to save answer for %s/%s: %s',
                 str(data['tid']), str(data['tid']), str(ex))
         models.db.session.rollback()
         raise errors.AccessDeniedError(
             'Unable to save answer for team. See log for details.')
     cache.delete('cats/%d' % tid)
     cache.delete('scoreboard')
     return dict(points=points)