def select_aps(): aps = json.loads(request.form['selected_aps']) message = request.form['selected_message'] aps = [int(ap.replace("ap_", '')) for ap in aps] sess = DbSession().get_session() ap_equips = sess.query(Equipment).filter(Equipment.ID.in_(aps)).all() num_customers = sum([len(ap.get_children()) for ap in ap_equips]) return render_template("customer_select.html", num_customers=num_customers, aps=ap_equips, message=message, logged_in=True, debug=app.debug)
def has_valid_credentials(username, passw): db_sess = DbSession().get_session() user = get_user(db_sess, username) if user and passlib_ctx.verify(passw, user.Password): user.Timestamp = time.time() db_sess.commit() return True return False
def has_valid_credentials(username, passw): db_sess = DbSession().get_session() user = get_user(db_sess, username) if user and passlib_ctx.verify(passw, user.Password): user.Timestamp = time.time() db_sess.commit() return True return False
def calc(): sess = DbSession().get_session() user = get_user(sess, session["username"]) sess.commit() #wrights = sess.query(Wright).filter(Wright.OwnerId == User.Id).all() #jobs = sess.query(Job).filter(Job.OwnerId == User.Id).all() if "next_tab" in session: current_tab = session["next_tab"] del session["next_tab"] else: current_tab = 0 return render_template("calc.html", user=user, current_tab=current_tab)
def allcall(): sess = DbSession().get_session() aps = sess.query(AccessPoint).all() sites = {} for ap in aps: nl_id = ap.equipment.equipment_ex.network_location.NetworkLocationID if nl_id not in sites: sites[nl_id] = [] sites[nl_id].append(ap) default_order = sites.keys() default_order.sort(key=lambda x: sites[x][0].equipment.equipment_ex.network_location.Name) default_order = [(default_order[i], i%2) for i in range(len(default_order))] return render_template("allcall.html", sites=sites, site_order=default_order, logged_in=True, debug=app.debug)
def pass_time(): sess = DbSession().get_session() user = get_user(sess, session["username"]) time_to_pass = int(request.form["value"]) if time_to_pass < 0: return redirect(url_for("calc")) while True: job_completed = False free_wrights = [wright for wright in user.wrights if not wright.currentJob] available_jobs = [job for job in user.jobs if not job.wright and job.TimeCost != 0] available_jobs = sorted(available_jobs, key=lambda job: -job.Priority) if len(free_wrights) == len(user.wrights) and len(available_jobs) == 0: break for wright in free_wrights: if len(available_jobs) > 0: wright.currentJob = available_jobs.pop(0) sess.commit() print free_wrights, available_jobs time_step = min([job.TimeCost for job in user.jobs if job.wright] + [time_to_pass]) time_to_pass -= time_step print time_step print [job.TimeCost for job in user.jobs if job.wright] for wright in user.wrights: if wright.currentJob: wright.currentJob.TimeCost -= time_step if wright.currentJob.TimeCost == 0: wright.currentJob = None job_completed = True sess.commit() if time_to_pass <= 0 and not job_completed: break session["next_tab"] = 0 return redirect(url_for("calc")) app.secret_key = os.urandom(128) if __name__ == "__main__": if "PRODUCTION" in os.environ and bool(os.environ["PRODUCTION"]): print("Environment: Production") else: print("Environment: Development") app.debug = True app.secret_key = '\xe5\x1e\xe8\xc7h\xccr\x9c7\xee|dN\x85\x8c{-4<\xa5\xe5\x03\xc7?\x16\xc3\x181+\xab\xf3q' app.run()
def valid_session(): """Returns True only if there is currently a valid username in the session""" db_sess = DbSession().get_session() if "username" in session: user = get_user(db_sess, session["username"]) if user and user.Timestamp + (60 * 60 * 24 * 7) > time.time(): return True return False
def exec_allcall(): sess = DbSession().get_session() message = request.form['selected_message'] customers = json.loads(request.form['selected_custs']) customers = [int(customer.replace("cust_", '')) for customer in customers] customers = sess.query(Customer).filter(Customer.CustomerID.in_(customers)).all() phone_numbers = [customer.get_first_number() for customer in customers if customer.get_first_number()] def cust_iter(): for number in phone_numbers: yield str(number) outs = "Message: %s, To call: <br>" % message print(outs + ",".join(cust_iter())) return render_template("completed.html", logged_in=True, debug=app.debug)
def rm_job(): sess = DbSession().get_session() user = get_user(sess, session["username"]) job = sess.query(Job).filter(Job.Id == request.form["id"]).first() if job.TimeCost != 0: user.GoldPool += job.GoldCost user.XpPool += job.XpCost sess.delete(job) sess.commit() return jsonify({"status":1})
def add_job(): sess = DbSession().get_session() user = get_user(sess, session["username"]) post = request.form quantity = extract_field(post, 'qty_adj', 1) for job_num in range(quantity): new_job = Job() new_job.OwnerId = user.Id if not new_job.populate(post): return jsonify({"status":0, "error":"Double check fields. Integers only please."}) if job_num > 0: new_job.Name += " %d" % (job_num+1) if job_num == 0: if user.GoldPool < (new_job.GoldCost*quantity): return jsonify({"status":0, "error":"Insufficient Gold. Gold remaining: %d. Needed: %d." % (user.GoldPool, new_job.GoldCost*quantity)}) if user.XpPool < (new_job.XpCost*quantity): return jsonify({"status":0, "error":"Insufficient Experience. Experience remaining: %d. Needed: %d." % (user.XpPool, new_job.XpCost*quantity)}) user.GoldPool -= new_job.GoldCost user.XpPool -= new_job.XpCost sess.add(new_job) sess.commit() session["next_tab"] = 2 return jsonify({"status":1})
def add_wright(): sess = DbSession().get_session() new_wright = Wright() #user = sess.query(User).filter(User.Username == session["username"]) user = get_user(sess, session["username"]) new_wright.OwnerId = user.Id new_wright.Name = request.form["wright_name"] sess.add(new_wright) sess.commit() session["next_tab"] = 2 return redirect(url_for("calc"))
def modify_resources(): sess = DbSession().get_session() user = get_user(sess, session["username"]) op = request.form["action"] if op == "add_gold": user.GoldPool += int(request.form["value"]) sess.commit() return jsonify({"status":1, "value":str(user.GoldPool)}) elif op == "add_exp": user.XpPool += int(request.form["value"]) sess.commit() return jsonify({"status":1, "value":str(user.XpPool)}) else: return jsonify({"status":0})
def create_acct(): if request.method == "POST": username, pw1, pw2 = request.form["username"], request.form["password1"], request.form["password2"] if pw1 != pw2: return render_template("login.html", create_style="active", error="Passwords do not match. Please try again.") sess = DbSession().get_session() new_user = create_user(User, username, pw1) new_user.XpPool = 0 new_user.GoldPool = 0 sess.add(new_user) sess.commit() flash("Account %s created!" % (username)) return redirect(url_for("login")) else: return render_template("create_acct.html", create_style="active")
def pass_time(): sess = DbSession().get_session() user = get_user(sess, session["username"]) time_to_pass = int(request.form["value"]) if time_to_pass < 0: return redirect(url_for("calc")) while True: job_completed = False free_wrights = [wright for wright in user.wrights if not wright.currentJob] available_jobs = [job for job in user.jobs if not job.wright and job.TimeCost != 0] available_jobs = sorted(available_jobs, key=lambda job: -job.Priority) if len(free_wrights) == len(user.wrights) and len(available_jobs) == 0: break for wright in free_wrights: if len(available_jobs) > 0: wright.currentJob = available_jobs.pop(0) sess.commit() print free_wrights, available_jobs time_step = min([job.TimeCost for job in user.jobs if job.wright] + [time_to_pass]) time_to_pass -= time_step print time_step print [job.TimeCost for job in user.jobs if job.wright] for wright in user.wrights: if wright.currentJob: wright.currentJob.TimeCost -= time_step if wright.currentJob.TimeCost == 0: wright.currentJob = None job_completed = True sess.commit() if time_to_pass <= 0 and not job_completed: break session["next_tab"] = 0 return redirect(url_for("calc"))
def del_wright(): sess = DbSession().get_session() wright = sess.query(Wright).filter(Wright.Id == request.form["id"]).first() sess.delete(wright) sess.commit() return jsonify({"status":1})
#!/usr/bin/pythonCoreAuthenticator from sqlalchemy import Column, Integer, String, Text from sqlalchemy.ext.declarative import declarative_base from CoreAuth import AbstractUser from DbSession import DbSession #import math #from sqlalchemy.orm import relationship Base = declarative_base() class User(Base, AbstractUser): __tablename__ = "User" Id = Column(Integer, primary_key=True) Username = Column(String(32), index=True) Password = Column(Text) Timestamp = Column(Integer) def get_username(self): return self.Username def get_password(self): return self.Password def get_timestamp(self): return self.Timestamp if __name__ == "__main__": sess = DbSession() sess.build_tables(Base)