Exemple #1
0
    def __init__(self, name, email, age, info, sex, occupation):
        self.name = name
        self.email = email
        self.age = age
        self.info = info
        self.sex = sex
        self.occupation = occupation

    def __repr__(self):
        return "<Person %s>" % self.name

db.create_all()
db_adapter = SQLAlchemyAdapter(db, User)
user_manager = UserManager(db_adapter, password_validator=password_validator)
user_manager.init_app(app)

@app.route("/ajax/register", methods=["POST"])
def register_user():
    if request.method == "POST":
        name = request.form["nameInput"]
        email = request.form["emailInput"]
        age = request.form["ageInput"]
        info = request.form["textarea"]
        sex = request.form["sex"]
        occupation = request.form["occupationInput"]

        p = Person.query.filter_by(email=email).all()
        if p:
            return "400"
        p = Person.query.filter_by(name=name).all()
Exemple #2
0
def create_app(test_config=None):  # For automated tests
    # Setup Flask and read config from ConfigClass defined above
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    # Load local_settings.py if file exists         # For automated tests
    try: app.config.from_object('local_settings')
    except: pass

    # Load optional test_config                     # For automated tests
    if test_config:
        app.config.update(test_config)

    # Initialize Flask extensions
    babel = Babel(app)  # Initialize Flask-Babel
    mail = Mail(app)  # Initialize Flask-Mail
    db = SQLAlchemy(app)  # Initialize Flask-SQLAlchemy

    @babel.localeselector
    def get_locale():
        translations = [str(translation) for translation in babel.list_translations()]
        return request.accept_languages.best_match(translations)

    # Define the User-Roles pivot table
    user_roles = db.Table('user_roles',
        db.Column('id', db.Integer(), primary_key=True),
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE')))

    # Define Role model
    class Role(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define User model. Make sure to add flask.ext.user UserMixin!!
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column(db.Boolean(), nullable=False, default=False)
        username = db.Column(db.String(50), nullable=False, unique=True)
        email = db.Column(db.String(255), nullable=False, unique=True)
        confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, default='')
        reset_password_token = db.Column(db.String(100), nullable=False, default='')
        # Relationships
        roles = db.relationship('Role', secondary=user_roles, backref=db.backref('users', lazy='dynamic'))

    # Reset all the database tables
    db.create_all()

    # Setup Flask-User
    db_adapter = SQLAlchemyAdapter(db, User)
    user_manager = UserManager(db_adapter, username_validator=username_validator)
    user_manager.init_app(app)

    # Create the default admin user if not exists.
    if not User.query.filter(User.username == ConfigClass.DDNS_ADMIN_USERNAME).first():
        adminuser = User(username=ConfigClass.DDNS_ADMIN_USERNAME, email=ConfigClass.DDNS_ADMIN_EMAIL, active=True,
                password=user_manager.hash_password(ConfigClass.DDNS_ADMIN_PASSWORD))
        adminuser.roles.append(Role(name='admin'))
        db.session.add(adminuser)
        db.session.commit()

    @app.route('/')
    def home_page():
        if current_user.is_authenticated():
            return profile_page()
        return render_template('index.html')

    @app.route('/profile')
    @login_required
    def profile_page():
        return render_template('profile.html')

    @app.route('/dns')
    @login_required
    def update_dns():
        return render_template('dns.html')

    @app.route('/special')
    @roles_required('admin')
    def special_page():
        return render_template('admin.html')

    return app