def complete_opendata_admin_registration(cls, user, first_name, last_name, password, mobile=""): """ Saves the Agency Admin account details. """ user = user.get() user.first_name = first_name user.last_name = last_name user.name = " ".join([first_name, last_name]) user.mobile_number = mobile user.password = hp(user.current_email, password) user.previous_passwords = [hp(user.current_email, password)] user.role = "OPENDATAADMIN" user.status = "APPROVED" user.put() # if send: # content = { # "token": user.confirmation_token, # "uid": str(user.key.id()) # } # send_email( # receiver_name="OPEN DATA ADMIN", # receiver_email=user.current_email, # subject="Open Data Admin Invitation", # content=content, # email_type="invite_opendata_admin") return user
def __init__(self, name): db = pyodbc.connect( r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};' r'DBQ=./BaseStatus.accdb;') cursor = db.cursor() cursor.execute("select * from BaseStat where EnName = '" + name + "'") param_lst = list(cursor)[0] self.name = name self.level = 50 self.HP = functions.hp(param_lst[2], 85, self.level) self.totalHP = self.HP self.Attack = functions.other_state(param_lst[3], 85, self.level, 1) self.Defense = functions.other_state(param_lst[4], 85, self.level, 1) self.SpAttack = functions.other_state(param_lst[5], 85, self.level, 1) self.SpDefence = functions.other_state(param_lst[6], 85, self.level, 1) self.Speed = functions.other_state(param_lst[7], 85, self.level, 1) self.FrontPic = "asset\\image\\pokemon\\" + name + ".png" self.BackPIc = "asset\\image\\pokemon\\" + name + "_b.png" self.critical = 0 self.accuracy = 1.0 self.evasion = 1.0 self.atk_mod = 0 self.def_mod = 0 self.spatk_mod = 0 self.spdef_mod = 0 self.spd_mod = 0 self.stat = "None" self.type = param_lst[8] self.acc_mod = 0 self.eva_mod = 0 cursor.execute("select Move from Moves1 where EnName = '" + self.name + "'") available_moves = list(cursor)[0][0].split(", ") shuffle(available_moves) self.move_lst = [ Move(available_moves[0]), Move(available_moves[1]), Move(available_moves[2]), Move(available_moves[3]) ] cursor.close() db.close()
def post(self): """ Handles the /login endpoint. Logs in users. """ if self.POST("email") and self.POST("password"): url = "/login" redirect = None email = self.POST("email").strip().lower() query = User.query() query = query.filter(User.current_email == email) user = query.get() if self.POST("redirect"): redirect = urllib.quote(self.POST("redirect")) url += "?redirect=" + str(redirect) if not user: error = "Invalid email or password." error_message(self, error) self.redirect(url) return if user.hashed_password: if not user.verify_password(self.POST("password")): error = "Invalid email or password." error_message(self, error) self.redirect(url) return else: password = hp(email=email, password=self.POST("password")) if user.password != password: error = "Invalid email or password." error_message(self, error) self.redirect(url) return else: user.hashed_password = user.hash_password( self.POST("password")) user.put() if user.status == "PENDING": error = "Your account has not been verified. " error += "Please verify your account by opening the " error += "verification email we sent you. " error_message(self, error) self.redirect(url) return if user.status == "DISABLED": error = "Your account has been disabled. " error += "Please contact the Geostore Admin." error_message(self, error) self.redirect(url) return if user.role in ["AGENCYADMIN", "USER"]: if user.status == "VERIFIED": error = "Your account is still pending approval. " error += "Once your account is approved, you will be able " error += "to login. You will receive an email once your " error += "account is approved." error_message(self, error) self.redirect(url) return if user.status == "DISAPPROVED": error = "Your account has been disapproved. " error += "Please contact the Geostore Admin." error_message(self, error) self.redirect(url) return user.csrf_token = generate_token() session = SessionHandler(user) session.login() code = session.generate_login_code() if self.POST("redirect"): self.redirect(urllib.unquote(str(self.POST("redirect")))) else: self.redirect("/dashboard") return error = "Please enter your email and password." error_message(self, error) self.redirect("/login")
def create_new_user( cls, first_name, last_name, password, email, role="USER", department="", agency="", region="", operating_unit="", uacs="", middle_name="", mobile="", designation="", salutation="", send=True, ): """ Creates a new user. """ user = cls() user.salutation = salutation user.first_name = first_name user.last_name = last_name user.middle_name = middle_name or "" user.name = " ".join([first_name, middle_name or "", last_name]) user.mobile_number = mobile user.original_email = email user.current_email = email user.email_list = [email] user.password = hp(email, password) user.previous_passwords = [hp(email, password)] # user.department = department # user.position = position user.confirmation_token = generate_token() if uacs: user.permissions = ["->".join(["UACS_ID", uacs])] if role: user.role = role.upper() if designation: user.designation = designation.upper() user.department = department user.agency = agency user.region = region user.operating_unit = operating_unit user.uacs = uacs user.put() if send: content = {"token": user.confirmation_token, "uid": str(user.key.id())} send_email( receiver_name=user.first_name, receiver_email=user.current_email, subject="Email Verfication", content=content, email_type="verify", ) return user