Beispiel #1
0
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')
Beispiel #3
0
 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.")
Beispiel #5
0
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
                         })
Beispiel #6
0
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")
Beispiel #8
0
 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',