Exemple #1
0
def create_app(config=None, debug=True):
    app = create_base_app(config, debug)
    app.config[
        'SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost/flask_social_test'

    db = SQLAlchemy(app)

    roles_users = db.Table(
        'roles_users',
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))

    class Role(db.Model, RoleMixin):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(80), unique=True)
        description = db.Column(db.String(255))

    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        email = db.Column(db.String(255), unique=True)
        password = db.Column(db.String(120))
        active = db.Column(db.Boolean())
        roles = db.relationship('Role',
                                secondary=roles_users,
                                backref=db.backref('users', lazy='dynamic'))
        connections = db.relationship('Connection',
                                      backref=db.backref('user',
                                                         lazy='joined'))

    class Connection(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
        provider_id = db.Column(db.String(255))
        provider_user_id = db.Column(db.String(255))
        access_token = db.Column(db.String(255))
        secret = db.Column(db.String(255))
        display_name = db.Column(db.String(255))
        profile_url = db.Column(db.String(512))
        image_url = db.Column(db.String(512))
        rank = db.Column(db.Integer)

    app.security = Security(app, SQLAlchemyUserDatastore(db, User, Role))
    app.social = Social(app, SQLAlchemyConnectionDatastore(db, Connection))

    @app.before_first_request
    def before_first_request():
        db.drop_all()
        db.create_all()
        populate_data()
        pass

    return app
Exemple #2
0
def create_app(config, **kwargs):
    app = create_base_app(config)

    #app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost/flask_security_test'
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'

    db = SQLAlchemy(app)

    roles_users = db.Table(
        'roles_users',
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))

    class Role(db.Model, RoleMixin):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(80), unique=True)
        description = db.Column(db.String(255))

    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        email = db.Column(db.String(255), unique=True)
        password = db.Column(db.String(255))
        last_login_at = db.Column(db.DateTime())
        current_login_at = db.Column(db.DateTime())
        last_login_ip = db.Column(db.String(100))
        current_login_ip = db.Column(db.String(100))
        login_count = db.Column(db.Integer)
        active = db.Column(db.Boolean())
        confirmed_at = db.Column(db.DateTime())
        roles = db.relationship('Role',
                                secondary=roles_users,
                                backref=db.backref('users', lazy='dynamic'))

    @app.before_first_request
    def before_first_request():
        db.drop_all()
        db.create_all()
        populate_data(app.config.get('USER_COUNT', None))

    app.security = Security(app,
                            datastore=SQLAlchemyUserDatastore(db, User, Role),
                            **kwargs)

    add_context_processors(app.security)

    return app
Exemple #3
0
from sqlalchemy import and_, or_
from sqlalchemy.ext.hybrid import hybrid_property

def _date_to_datetime(date):
    '''Convert a date object to a datetime object

    The time is set to 00:00:00
    '''
    midnight = datetime.time(0, 0, 0)
    return datetime.datetime.combine(date, midnight)


db = SQLAlchemy(app)

roles_users = db.Table('members_roles_users',
        db.Column('user_id', db.Integer(), db.ForeignKey('members.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('members_roles.id')))


class Role(db.Model, RoleMixin):
    """Define the Role database table"""
    __tablename__ = 'members_roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    def __repr__(self):
        return self.name


class User(db.Model, UserMixin):
Exemple #4
0
import hashlib
from sqlalchemy import event
from scan.log import logging
from datetime import datetime
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import UserMixin, RoleMixin
from scan import settings

log = logging.getLogger(__name__)
db = SQLAlchemy()

STRING_MAX = 255

roles_users = db.Table(
    'roles_users', db.Model.metadata,
    db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(STRING_MAX), unique=True)
    description = db.Column(db.String(STRING_MAX))

    def __repr__(self):
        return "<Role(name='%s')>" % (self.name)


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(STRING_MAX))
Exemple #5
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
    db = SQLAlchemy(app)  # Initialize Flask-SQLAlchemy
    mail = Mail(app)  # Initialize Flask-Mail

    # 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=True, unique=True)
        email = db.Column(db.String(255), nullable=True, 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, app)

    # Create 'user007' user with 'secret' and 'agent' roles
    if not User.query.filter(User.username == 'user007').first():
        user1 = User(username='******',
                     email='*****@*****.**',
                     active=True,
                     password=user_manager.hash_password('Password1'))
        user1.roles.append(Role(name='secret'))
        user1.roles.append(Role(name='agent'))
        db.session.add(user1)
        db.session.commit()

    # The '/' page is accessible to anyone
    @app.route('/')
    def home_page():
        # if current_user.is_authenticated():
        #     return profile_page()
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
            <h2>{%trans%}Home Page{%endtrans%}</h2>
            <p><a href="{{ url_for('user.login') }}">{%trans%}Sign in{%endtrans%}</a></p>
            {% endblock %}
            """)

    # The '/profile' page requires a logged-in user
    @app.route('/profile')
    @login_required  # Use of @login_required decorator
    def profile_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
            <h2>{%trans%}Profile Page{%endtrans%}</h2>
            <p> {%trans%}Hello{%endtrans%}
                {{ current_user.username or current_user.email }},</p>
            <p> <a href="{{ url_for('user.change_username') }}">
                {%trans%}Change username{%endtrans%}</a></p>
            <p> <a href="{{ url_for('user.change_password') }}">
                {%trans%}Change password{%endtrans%}</a></p>
            <p> <a href="{{ url_for('user.logout') }}?next={{ url_for('user.login') }}">
                {%trans%}Sign out{%endtrans%}</a></p>
            {% endblock %}
            """)

    # The '/special' page requires a user that has the 'special' AND ('sauce' OR 'agent') role.
    @app.route('/special')
    @roles_required('secret',
                    ['sauce', 'agent'])  # Use of @roles_required decorator
    def special_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
            <h2>{%trans%}Special Page{%endtrans%}</h2>
            {% endblock %}
            """)

    return app
Exemple #6
0
import json

from sqlalchemy import MetaData, Table, Column, String, Integer
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import Security, SQLAlchemyUserDatastore, \
    UserMixin, RoleMixin, login_required

DB = SQLAlchemy()

## User and roles

roles_users = DB.Table(
    'roles_users',
    DB.Column('users_id', DB.Integer(), DB.ForeignKey('users.id')),
    DB.Column('roles_id', DB.Integer(), DB.ForeignKey('roles.id')))


class Roles(DB.Model, RoleMixin):
    id = DB.Column(DB.Integer(), primary_key=True)
    name = DB.Column(DB.String(80), unique=True)
    description = DB.Column(DB.String(255))


class Users(DB.Model, UserMixin):
    id = DB.Column(DB.Integer, primary_key=True)
    email = DB.Column(DB.String(255), unique=True)
    password = DB.Column(DB.String(255))
    active = DB.Column(DB.Boolean())
    confirmed_at = DB.Column(DB.DateTime())
Exemple #7
0
app.config['VENMO_CLIENT_ID'] = 1454
app.config['VENMO_SECRET'] = "CFELT3xea29gtWFk7ujfTcDh8bMTzJZ8"

COLUMN_BLACKLIST = ["password", "venmo_key"]

# Create database connection object
db = SQLAlchemy(app)

def asdict(obj):
    return dict((col.name, getattr(obj, col.name))
                for col in class_mapper(obj.__class__).mapped_table.c
                    if col.name not in COLUMN_BLACKLIST)

# Define models
roles_users = db.Table('roles_users',
        db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))

class SpecialRegisterForm(RegisterForm):
    name = TextField('Full Name')

class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))
admin_role = None

friends = db.Table('friends',
        db.Column('f1_id', db.Integer(), db.ForeignKey('user.id')),
        db.Column('f2_id', db.Integer(), db.ForeignKey('user.id')))
Exemple #8
0
import json
from datetime import datetime, time
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import UserMixin, RoleMixin
from sqlalchemy.orm import backref
import flux

db = SQLAlchemy()

### Add models here

roles_users = db.Table('roles_users',
                       db.Column('user_id', db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE')),
                       db.Column('role_id', db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE')))


class Pin(db.Model):
    __table_args__ = (db.UniqueConstraint('beam_id', 'user_id', name='uix_pin'), )

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    beam_id = db.Column(db.Integer, db.ForeignKey('beam.id'), index=True)


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
Exemple #9
0
import json
from flask import current_app
from flask.ext.security import UserMixin, RoleMixin
import os
import werkzeug
from flask.ext.sqlalchemy import SQLAlchemy
from datetime import datetime
from marion_biblio.wos_reader import open_wos_tab, make_pytable
from marion_biblio.wos_reader_query import run_query
from marion_biblio import csv_queries, progressivegenerators
import csv

db = SQLAlchemy()

roles_users = db.Table(
    'roles_users', db.Column('id_user', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('id_role', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(64), unique=True)
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(128), index=True, unique=True)
    password = db.Column(db.String(255))
Exemple #10
0

class Roles(object):
    USER = {'name': 'USER', 'description': u'normal user'}

    ADMIN = {'name': 'ADMIN', 'description': u'admin user'}

    SUPER_ADMIN = {
        'name': 'SUPER_ADMIN',
        'description': u'super user that can do anything'
    }


user_role = db.Table(
    'user_role',
    db.Column('user_id', db.Integer(),
              db.ForeignKey('user.id', ondelete="CASCADE")),
    db.Column('role_id', db.Integer(),
              db.ForeignKey('role.id', ondelete="CASCADE")))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(NORMAL_STRING_LENGTH), unique=True)
    description = db.Column(db.Unicode(NORMAL_STRING_LENGTH))


class User(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    password = db.Column(db.String(NORMAL_STRING_LENGTH))
    name = db.Column(db.Unicode(NORMAL_STRING_LENGTH))
Exemple #11
0
@app.before_first_request
def add_ga_tracking_code():
    g.ga_tracking_code = os.environ['GA_TRACKING_CODE']


@manager.command
def run():
    app.run(debug=True)


youtube_api_key = os.environ['ytokkey']

subscription = db.Table(
    'subscription',
    db.Column('stream_id', db.Integer(), db.ForeignKey('stream.id')),
    db.Column('subscriber_id', db.Integer(), db.ForeignKey('subscriber.id')))


class Stream(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    type = db.Column(db.String(50))
    scheduled_start_time = db.Column(db.DateTime())
    status = db.Column(
        db.Enum('upcoming', 'live', 'completed', name='stream_status'))
    title = db.Column(db.String(100))
    subscribers = db.relationship('Subscriber',
                                  secondary=subscription,
                                  backref=db.backref('streams',
                                                     lazy='dynamic'))
    # reddit_thread = db.Column(db.String(255))
Exemple #12
0
from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin, login_required

app = Flask(__name__)
app.config["DEBUG"] = True
app.config["SECRET_KEY"] = "super-secret"
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite://"

db = SQLAlchemy(app)

roles_users = db.Table(
    "roles_users", db.Column("user_id", db.Integer(),
                             db.ForeignKey("user.id")),
    db.Column("role_id", db.Integer(), db.ForeignKey("role.id")))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship("Role",
                            secondary=roles_users,
    picture_data = Column(LargeBinary)
    thumbnail = Column(LargeBinary)
    user = Column(String(50), nullable=False, default='')

    dataset_id = Column(
        'ext_dataset_id',
        ForeignKey('datasets.id'),
        primary_key=True,
    )


roles_users = db.Table(
    'roles_users',
    db.Column('registered_users_user', db.String(50),
              db.ForeignKey('registered_users.user')),
    db.Column('role_id', db.Integer(), db.ForeignKey('roles.id')),
)


class RegisteredUser(Base, UserMixin):
    __tablename__ = 'registered_users'

    id = Column('user', String(50), primary_key=True)
    name = Column(String(255))
    institution = Column(String(45))
    abbrev = Column(String(10))
    MS = Column(String(255))
    email = Column(String(255))
    qualification = Column(String(255))
    account_date = Column(String(16), nullable=False)
    show_assessment = Column(Integer, nullable=False, default=1)
Exemple #14
0
)

celery = make_celery(app)

Bootstrap(app)
Bower(app)

mail = Mail(app)

# Create database connection object
db = SQLAlchemy(app)

# Define models
roles_users = db.Table(
    "roles_users",
    db.Column("user_id", db.Integer(), db.ForeignKey("user.id")),
    db.Column("role_id", db.Integer(), db.ForeignKey("role.id")),
)

courses_users = db.Table(
    "courses_users",
    db.Column("user_id", db.Integer(), db.ForeignKey("user.id")),
    db.Column("course_id", db.Integer(), db.ForeignKey("course.id")),
)


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))
Exemple #15
0
    USER_ENABLE_CONFIRM_EMAIL = False

))

babel = Babel(app)
mail = Mail(app)
db = SQLAlchemy(app)

@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')))

class TutorialPage(db.Model):
    id = db.Column(db.Integer(), primary_key=True)
    cat_id = db.Column(db.Integer(), nullable=False)
    cat_title = db.Column(db.String(), nullable=False)
    title = db.Column(db.String(), nullable=False)
    text = db.Column(db.String(), nullable=False)

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

class User(db.Model, UserMixin):
Exemple #16
0
from sqlalchemy.orm import sessionmaker, relationship, backref

db_url = '{dialect}://{user}:{passwd}@{host}:{port}/{dbname}'.format(
    dialect=config.get('lawdb', 'dialect'),
    user=config.get('lawdb', 'username'),
    passwd=config.get('lawdb', 'password'),
    host=config.get('lawdb', 'host'),
    port=config.get('lawdb', 'port'),
    dbname=config.get('lawdb', 'dbname'),
)

# We'll bind the app later
db = SQLAlchemy()

roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())
Exemple #17
0
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import UserMixin, RoleMixin
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy import distinct
db = SQLAlchemy()

### Add models here

roles_users = db.Table(
    'roles_users',
    db.Column('user_id', db.Integer(),
              db.ForeignKey('user.id', ondelete='CASCADE')),
    db.Column('role_id', db.Integer(),
              db.ForeignKey('role.id', ondelete='CASCADE')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

    def to_dict(self):
        return {
            'id': self.id,
            'type': 'user',
            'attributes': {
                'name': self.name,
                'description': self.description
            }
        }
Exemple #18
0
# coding: utf-8

from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import RoleMixin, UserMixin

db = SQLAlchemy()

roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer(),
                             db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('role.id')))


class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(100), unique=True)
    description = db.Column(db.String(255))

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return u"Role(name='{0}')".format(self.name)


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(255))
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active = db.Column(db.Boolean())