def pic_gallery(): alerts = generateAlerts() user_data = sec.getUserSession() imageGallery = db.getImageDetails() cfg.debug(imageGallery,True) return render_template(cfg.gallery_page, title="Minecraft Gallery", u=user_data, i=imageGallery, a=alerts)
def home(): rule = request.url_rule sec.generateAppKeys() if 'logout' in rule.rule: sec.clearSession() user_data = user.clearUserData() sec.setSessionVar(sec.user_data_key, user_data) if sec.getSessionVar(sec.user_data_key) == False: user_data = user.clearUserData() sec.setSessionVar(sec.user_data_key, user_data) user_data = sec.getUserSession() cfg.debug(f">>>>>>USERDATA {user_data}",True) alerts = generateAlerts() server_data = getMCServerData() projects = getProjectData() return render_template(cfg.dashboard_page, title="Dashboard", a=alerts, u=user_data, s=server_data,p=projects)
def loginAction(): if sec.isLoggedIn(): pass else: if request.method == "POST": email = request.form['email'] password = request.form['password'] data = (email, password) user_data= db.check_user(data) cfg.debug(user_data, True) sec.setSessionVar(sec.user_data_key,user_data) return redirect("/")
def getProjectData(): # todo change desc to be based on percent commplete sql = "SELECT name, percentComplete, desc from projectAreasTracking order by percentComplete ASC" conn = create_connection(cfg.DB) cur = conn.cursor() cur.execute(sql, ) projectList = cur.fetchall() projects = [] cfg.debug(projectList, DEBUG) for project in projectList: # if project[1] == 100: # percent = "Completed" # else: style = project[2] percent = f"{project[1] }%" p = { "name": project[0], "done": percent, 'style': style} projects.append(p) return projects
def profile_page(uid=""): rule = request.url_rule.rule user_data= sec.getUserSession() alerts = generateAlerts() if request.method == 'POST' and "update" in rule: # get formdata s cfg.debug("UPDATING PROFILE ",True) pwd = request.form['new_pwd'] name = request.form['mcUsername'] if request.form['orig_mc'] != name or pwd != "": sql = "UPDATE members set minecraftName = ? , pic = ?" if pwd.strip() != "": sql = sql + f", password = {pwd}" sql = sql + " where memberId = " + request.form['uid'] pic = f"https://minotar.net/helm/{name}/50.png" data = (name, pic) cfg.debug(sql,True) cfg.debug(data,True) conn = create_connection(cfg.DB) cur = conn.cursor() cur.execute(sql,data) conn.commit() conn.close() user_data['mcUsername'] = name user_data['pic'] = pic sec.setSessionVar(sec.user_data_key,user_data) return render_template(cfg.profile_page, a=alerts, u=user_data) if uid == "" or user_data['loggedIn'] == False or uid != user_data['mcUsername']: cfg.debug(f"REDIRECTING FROM MEMBERS UPADTE uid: {uid} loggedIn: {user_data['loggedIn']} id: {user_data['id']}",True) return redirect("/") # display normal profile page return render_template(cfg.profile_page, a=alerts, u=user_data)
def getMCServerData(): cfg.debug(f"getMCServerData", DEBUG) # get mc server info mcServer = "minecraft.tas.qld.edu.au" conn = create_connection(cfg.DB) sql = "SELECT MAX(maxPing), date from ping" cfg.debug(sql, DEBUG) cur = conn.cursor() cur.execute(sql) maxPing = cur.fetchone()[0] sql = "SELECT COUNT(name) FROM members" cur.execute(sql) count = cur.fetchone()[0] try: server = MinecraftServer(mcServer) status = server.status() latency = status.latency playersOnLine = status.players.online playersMax = status.players.max query = server.query() playersList = query.players.names cfg.debug(f"Playerlist: {playersList}", DEBUG) now = datetime.datetime.now() # get max ping from db. if latency > maxPing: sql = f"INSERT INTO ping (maxPing, date) VALUES ({status.latency}, '{now}')" cfg.debug(sql , DEBUG) cur.execute(sql ) conn.commit() maxPing = f"{latency} ms" percent = math.floor(playersOnLine / playersMax * 100) except Exception as e: cfg.debug(f"MC error {e}", True) playersList = [] playersOnLine = 0 playersMax = 20 percent = 0 latency = "OFFLINE" count = 0 # listOfPlayers = "THIS WILL BE A LIST OF ALL PLAYERS" serverData = { "ip": mcServer, "latency": f"{latency} ms", "playersList": playersList, "playerCount": playersOnLine, "playersMax": playersMax, "percent": percent, "maxPing": f"{maxPing} ms", "docLink": latestDoc, "discord": discordInvite, "members": count } cfg.debug(f"mc server data: {serverData} ", True) return serverData
def contact(): alerts = generateAlerts() user_data = sec.getUserSession() cfg.debug(f"Alerts: {alerts}", True) return render_template(cfg.contact_page, title="Contact us", u=user_data, a=alerts)