示例#1
0
 def put(self, user_id):
     if not flask.g.user.uid == user_id and not flask.g.user.admin:
         raise errors.AccessDeniedError('No access to that user.')
     user = models.User.query.get_or_404(user_id)
     data = flask.request.get_json()
     promoting = False
     if utils.is_admin() and 'admin' in data:
         if data['admin'] and not user.admin:
             user.promote()
             promoting = True
         else:
             user.admin = False
     if data.get('password'):
         user.set_password(data['password'])
     if utils.is_admin():
         user.nick = data['nick']
         if not app.config.get('TEAMS', False):
             user.team.name = data['nick']
     try:
         models.commit()
     except AssertionError:
         if promoting:
             raise errors.ValidationError('Error promoting. '
                     'Has player solved challenges?')
         raise
     return user
示例#2
0
    def put(self, user_id):
        if not flask.g.uid == user_id and not flask.g.admin:
            raise errors.AccessDeniedError('No access to that user.')
        user = models.User.query.get_or_404(user_id)
        data = flask.request.get_json()
        if utils.is_admin() and 'admin' in data:
            if data['admin'] and not user.admin:
                try:
                    user.promote()
                except AssertionError:
                    raise errors.ValidationError(
                        'Error promoting. Has player solved challenges?')
            else:
                user.admin = False
        if data.get('password'):
            user.set_password(data['password'])
        if utils.is_admin():
            user.nick = data['nick']
            if not app.config.get('TEAMS') and user.team:
                user.team.name = data['nick']

        try:
            models.commit()
        except AssertionError:
                raise errors.ValidationError(
                        'Error in updating user.  Details are logged.')
        return user
示例#3
0
 def get(self):
     q = models.Challenge.get_joined_query()
     challs = []
     t = models.Team.current()
     for chall in q.all():
         if utils.is_admin() or chall.unlocked_for_team(t):
             challs.append(chall)
         elif chall.teaser:
             challs.append(self._tease_challenge(chall))
     return {'challenges': challs}
示例#4
0
 def get(self):
     q = models.Challenge.get_joined_query()
     challs = []
     t = models.Team.current()
     for chall in q.all():
         if utils.is_admin() or chall.unlocked_for_team(t):
             challs.append(chall)
         elif chall.teaser:
             challs.append(self._tease_challenge(chall))
     return {'challenges': challs}
示例#5
0
 def get(self):
     q = (models.Challenge.query.outerjoin(
         models.Challenge.answers).add_columns(
             models.Challenge.answers.label("solves")))
     challs = []
     t = models.Team.current()
     for chall, solves in q.all():
         chall._solves = solves
         if utils.is_admin() or chall.unlocked_for_team(t):
             challs.append(chall)
         elif chall.teaser:
             challs.append(self._tease_challenge(chall))
     return {'challenges': challs}
示例#6
0
 def post(self):
     data = flask.request.get_json()
     if utils.is_admin():
         return self.post_admin(data)
     return self.post_player(data)
示例#7
0
 def post(self):
     data = flask.request.get_json()
     if utils.is_admin():
         return self.post_admin(data)
     return self.post_player(data)