def home(): try: if is_devserver() or g.logged_in: return redirect('/house/', code=302) return landing() except AttributeError: return landing()
def register_email(): if g.logged_in and not g.user.email_confirmed and request.method == 'POST': code = g.user.make_email_confirmation_code() # This is mostly because Python's requests libary doesn't work in # App Engine's SDK, so we can't test emails on dev. if is_devserver(): flash('DEBUG MODE: Your confirmation code is %s' % code.url()) else: send_confirmation_email(g.user, code) flash('A confirmation email has been sent to your email at %s.' % g.user.email) return render_template('register/confirm_email_sent.html') user_id = request.args.get('id') confirm_code = request.args.get('code') if user_id and confirm_code: code = db.session.query(EmailConfirmationCode).get( (confirm_code, user_id)) if not code or code.invalid(): return render_template('register/email_confirmation_invalid.html') code.user.email_confirmed = True code.used = True db.session.commit() # Note that users do not have to be logged in to confirm an email address. return render_template('register/email_confirmed.html')
def image_url(self): if is_devserver(): subpath = ("img" + os.sep + "pets" + os.sep + self.species.canon_name + os.sep + self.coat_name + ".png") image_path = (os.path.join(go_up_path(4, (__file__)), "static", subpath)) if os.path.isfile(image_path): return url_for("static", filename=subpath) + "?v=" + str(get_static_version_id()) return (app.config['IMAGE_BUCKET_ROOT'] + "/pets/" + self.species.canon_name + "/" + self.coat_name + ".png?v=" + str(get_static_version_id()))
def purge(absolutely_sure_about_this=False): """Removes existing models from the database.""" with app.app_context(): if is_devserver() or absolutely_sure_about_this: db.drop_all() db.session.commit() db.session.flush() db.create_all() else: raise Exception("Get out of here.")
def send_email(to, subject, text, html=None): # AppEngine SDK doesn't work with requests... if is_devserver(): return None return requests.post("https://api.mailgun.net/v3/mg.saylua.com/messages", auth=("api", app.config.get('MAILGUN_API_KEY')), data={ "from": app.config.get('AUTOSEND_EMAIL'), "to": to, "subject": subject, "text": text, "html": html })
def recover_login(): form = RecoveryForm(request.form) if form.validate_on_submit(): user = login_check.user code = user.make_password_reset_code() if is_devserver(): flash('DEBUG MODE: Your reset code is %s' % code.url()) else: url = app.config.get('MAIN_URL_ROOT') + code.url() send_email(user.email, 'Saylua Password Reset', text=render_template('email/reset_password.txt', name=user.name, url=url), html=render_template('email/reset_password.html', name=user.name, url=url)) flash('Recovery email sent! Check the email address on file for the next step.') return render_template('login/recover.html', form=form)
def setup(): with app.app_context(): db.create_all() # Turn dungeon schemas into models for model in provision_dungeon_schema(): db.session.add(model) db.session.commit() # Add placeholders if on the dev server if is_devserver(): print("Adding Initial Admin User") for item in generate_admin_user(): db.session.add(item) print("Adding Placeholder Users") for item in generate_users(): db.session.add(item) print("Adding Placeholder Boards") for item in generate_boards(): db.session.add(item) print("Adding Placeholder Threads") for item in generate_threads(): db.session.add(item) print("Adding Placeholder Posts") for item in generate_posts(): db.session.add(item) print("Adding Placeholder Items") for item in generate_items(): db.session.add(item) print("Adding Placeholder Pets, Coats, and Species") for pet_coat_species in generate_pets(): db.session.add(pet_coat_species) db.session.commit() print("Database Setup Complete")
def decorated_function(*args, **kwargs): if is_devserver(): return f(*args, **kwargs) return render_template('404.html'), 404
from os.path import join from flask import send_from_directory, render_template from flask_wtf.csrf import CSRFProtect from flask_sqlalchemy import SQLAlchemy from saylua.utils import is_devserver from google.appengine.api import app_identity app = SayluaApp(__name__) app.config.from_pyfile('config/secure.py') app.config.from_pyfile('config/settings.py') if app_identity.get_application_id() == "saylua-staging": app.config.from_pyfile('config/secure_staging.py') if is_devserver(): app.config.from_pyfile('config/local_settings.py') db = SQLAlchemy(app) csrf = CSRFProtect(app) import context_processors import request_hooks import routing import template_filters import wrappers # Populate app with blueprints enabled_modules = [ 'admin', 'adventure', 'arcade', 'avatar', 'characters', 'commerce', 'forums', 'general', 'house', 'items', 'messages', 'museum', 'pets',