def add_user(contest_id, first_name, last_name, username, password, ip_address, email, hidden): with SessionGen(commit=True) as session: contest = Contest.get_from_id(contest_id, session) user = User(first_name=first_name, last_name=last_name, username=username, password=password, email=email, ip=ip_address, hidden=hidden, contest=contest) session.add(user)
def _on_auth(self, user_t): if not user_t: raise tornado.web.HTTPError(500, "Twitter auth failed") username = user_t["username"] user = self.sql_session.query(User)\ .filter(User.auth_type == "Twitter")\ .filter(User.contest == self.contest)\ .filter(User.username == username).first() if user is None: user = User(user_t["name"], "", username, auth_type="Twitter", contest=self.contest) self.sql_session.add(user) self.sql_session.commit() self.try_user_login(user)
def import_contest(self, path): """Import a contest into the system, returning a dictionary that can be passed to Contest.import_from_dict(). """ params, tasks, users = self.get_params_for_contest(path) for i, task in enumerate(tasks): task_params = self.get_params_for_task(os.path.join(path, task), num=i) params["tasks"].append(task_params) if self.user_number is None: for user in users: user_params = self.get_params_for_user(user) params["users"].append(user_params) else: logger.info("Generating %s random users." % self.user_number) for i in xrange(self.user_number): params["users"].append( User("User %d" % (i), "user%03d" % (i)).export_to_dict()) return params
def _on_login(self, user_t): if not user_t: raise tornado.web.HTTPError(500, "Facebook auth failed") username = user_t["id"] user = self.sql_session.query(User)\ .filter(User.auth_type == "Facebook")\ .filter(User.contest == self.contest)\ .filter(User.username == username).first() if user is None: user = User(user_t["first_name"], user_t["last_name"], username, auth_type="Facebook", contest=self.contest) self.sql_session.add(user) self.sql_session.commit() self.try_user_login(user)
def _on_auth(self, user_t): if not user_t: raise tornado.web.HTTPError(500, "Google auth failed") username = user_t["email"] user = self.sql_session.query(User)\ .filter(User.auth_type == "Google")\ .filter(User.contest == self.contest)\ .filter(User.username == username).first() filtered_user = filter_ascii(username) if user is None: user = User(user_t["first_name"], user_t["last_name"], username, email=user_t["email"], auth_type="Google", contest=self.contest) self.sql_session.add(user) self.sql_session.commit() self.try_user_login(user)