def post(self):
     username = self.get_current_user()
     
     if username is None:
         self.result("error", "Access denied.")
         return
         
     user = User.get_user(username)
             
     if user.permission_level < constants.PERMISSION_LEVEL_USER:
         self.result("error", "Access denied.")
         return
     
     try:
         displayname = strip_tags(self.get_argument("displayname"))
         email = strip_tags(self.get_argument("email"))
         showemail = bool(self.get_argument("showemail", False))
     except:
         self.result("error", "Invalid arguments. Check that all fields are filled out correctly.")
         return
     
     session = SessionFactory()
     try:
         user.displayname = displayname
         user.email = email
         user.showemail = showemail
         session.add(user)
         session.commit()
         self.result("success", "Settings saved successfully.", user)
     finally:
         session.close()
 def post(self):
     username = self.get_current_user()
     
     if username is None:
         self.result("error", "Access denied.")
         return
         
     user = User.get_user(username)
             
     if user.permission_level < constants.PERMISSION_LEVEL_ADMIN:
         self.result("error", "Access denied.")
         return
     
     try:
         username = self.get_argument("username")
         displayname = self.get_argument("displayname")
         email = self.get_argument("email", None) or None
     except:
         self.result("error", "Invalid arguments. Check that all fields are filled out correctly.")
         return
     
     session = SessionFactory()
     try:
         create_user(session, username, displayname, email)
         session.commit()
         
         self.result("success", "User added successfully.")
         
     finally:
         session.close()
 def put(self, socket_connection, message, object_data):
     target_id = object_data[u'id']
     target_username = object_data[u'username']
     target_permission_level = int(object_data[u'permissions'])
         
     session = SessionFactory()
     try:
         if target_id is not None:
             user = session.query(User).filter(User.id==int(target_id)).one()
             user.username = target_username
             user.permission_level = target_permission_level
         else:
             user = User(target_username, target_permission_level)
         
         session.add(user)
         session.commit()
         
         self.on_update(user)
     finally:
         session.close()
         
     result_message = {'type': self.message_type,
                       'response': self.object_to_json(user),
                       'deferredId': message['deferredId'],
                      }
     
     socket_connection.write_message(json.dumps(result_message))
    def post(self):
        username = self.get_current_user()
        
        if username is None:
            self.result("error", "Access denied.")
            return
            
        user = User.get_user(username)
                
        if user.permission_level < constants.PERMISSION_LEVEL_USER:
            self.result("error", "Access denied.")
            return
        
        try:
            user1_id = int(self.get_argument("userSelect1"))
            user2_id = int(self.get_argument("userSelect2"))
            # date_time = self.get_argument("date") + " " + self.get_argument("time")
            
            games = []
            for gnum in range(1):
                game = (int(self.get_argument("score_g{}_p0".format(gnum))), int(self.get_argument("score_g{}_p1".format(gnum))))
                games.append(game)
        except:
            self.result("error", "Invalid arguments. Check that all fields are filled out correctly.")
            return
        
        if user1_id == user2_id:
            self.result("error", "Opponents must be different users.")
            return
        
        session = SessionFactory()
        try:
            user1 = session.query(User).filter(User.id == user1_id).one()
            user2 = session.query(User).filter(User.id == user2_id).one()
            
            # d = datetime.datetime.strptime(date_time, "%Y-%m-%d T%H:%M:%S")
            seconds = int(time.time()) #int(d.strftime('%s'))

            # filter out any games which have negative or all-zero scores
            games = filter(lambda g: all(map(lambda s: s >= 0, g)) and any(map(lambda s: s > 0, g)), games)
            
            if len(games) < 1:
                self.result("error", "A match consists of one or more games.")
                return
            current_score = (get_most_recent_ratings(user1.id).get('exposure',0), get_most_recent_ratings(user2.id).get('exposure',0))
            match = create_match(session, user1, user2, seconds, games)
            session.commit()
            new_score = (get_most_recent_ratings(user1.id).get('exposure',0), get_most_recent_ratings(user2.id).get('exposure',0))

            msg = "Match recorded successfully.<br><br>"\
            "Points Changes:<br>" \
            '%s: %0.3f<br>' \
            '%s: %0.3f' % (user1.displayname, new_score[0]-current_score[0], user2.displayname, new_score[1]-current_score[1])

            self.result("success", msg)
            
        finally:
            session.close()
 def delete(self, socket_connection, message, object_id):
     session = SessionFactory()
     try:
         assignment = session.query(User).filter(User.id==object_id).delete()
         session.commit()
     finally:
         session.close()
         
     self.on_delete(object_id)
 def post(self):
     username = self.get_current_user()
     
     if username is None:
         self.result("error", "Access denied.")
         return
         
     user = User.get_user(username)
             
     if user.permission_level < constants.PERMISSION_LEVEL_USER:
         self.result("error", "Access denied.")
         return
     
     try:
         user1_id = int(self.get_argument("userSelect1"))
         user2_id = int(self.get_argument("userSelect2"))
         date_time = self.get_argument("date") + " " + self.get_argument("time")
         
         games = []
         for gnum in range(3):
             game = (int(self.get_argument("score_g{}_p0".format(gnum))), int(self.get_argument("score_g{}_p1".format(gnum))))
             games.append(game)
     except:
         self.result("error", "Invalid arguments. Check that all fields are filled out correctly.")
         return
     
     if user1_id == user2_id:
         self.result("error", "Opponents must be different users.")
         return
     
     session = SessionFactory()
     try:
         user1 = session.query(User).filter(User.id == user1_id).one()
         user2 = session.query(User).filter(User.id == user2_id).one()
         
         d = datetime.datetime.strptime(date_time, "%Y-%m-%d T%H:%M:%S")
         seconds = int(d.strftime('%s'))
         
         # filter out any games which have negative or all-zero scores
         games = filter(lambda g: all(map(lambda s: s >= 0, g)) and any(map(lambda s: s > 0, g)), games)
         
         if len(games) < 2:
             self.result("error", "A match consists of two or more games.")
             return
             
         match = create_match(session, user1, user2, seconds, games)
         session.commit()
         
         self.result("success", "Match recorded successfully.")
         
     finally:
         session.close()
 def post(self):
     session = SessionFactory()
     try:
         max_match_id = session.query(sqlalchemy.func.max(Match.id)).one()[0]
         match = session.query(Match).filter(Match.id==max_match_id).all()
         games = session.query(Game).filter(Game.match_id==max_match_id).all()
         partipations = session.query(Participation).filter(Participation.match_id==max_match_id).all()
         true_skill = session.query(TrueSkillCache).filter(TrueSkillCache.match_id==max_match_id).all()
         scores = []
         for game in games:
             scores += session.query(Score).filter(Score.game_id==game.id).all()
         for row in match + games + partipations + true_skill + scores:
             session.delete(row)
         session.commit()
         self.result("success", "Match #%s removed." % max_match_id)
     finally:
         session.close()
#!/usr/bin/python

import os
import sys

system_directory = os.path.dirname(os.path.abspath(__file__))

sys.path.append(system_directory + "/imports")

username = sys.argv[1]
permission_level = int(sys.argv[2])

from database.User import User
from database.SessionFactory import SessionFactory

session = SessionFactory()
try:
    user = User.get_user(username)
    user.permission_level = permission_level
    session.add(user)
    session.commit()
    print "Successfully set permission level for user '{}' to {}.".format(user.username, user.permission_level)
finally:
    session.close()