示例#1
0
def preload():
    user_manager = UserManager(app, db, User)
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )

        user.roles.append(Role(name='admin'))
        db.session.add(user)
        db.session.commit()
    for role in ROLES:
        if not Role.query.filter(Role.name == role).first():
            r = Role(name=role)
            db.session.add(r)
            db.session.commit()
示例#2
0
def init_user_manager(app):
    from flask_user import SQLAlchemyAdapter, UserManager

    from ..core import db
    from ..model import User
    from ..service import userService
    from .. import signals

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

    import hashlib

    def hash_password(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def generate_password_hash(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def verify_password(self, password, user):
        return self.hash_password(password) == user.password

    def login_manager_usercallback(user_id):
        user_id = int(user_id) if isinstance(user_id,
                                             basestring) else int(user_id)
        user_dict = userService.user_by_id(user_id)
        return User(**user_dict)

    user_manager.hash_password = hash_password.__get__(user_manager,
                                                       UserManager)
    user_manager.generate_password_hash = generate_password_hash.__get__(
        user_manager, UserManager)
    user_manager.verify_password = verify_password.__get__(
        user_manager, UserManager)
    user_manager.login_manager.user_callback = login_manager_usercallback
示例#3
0
def create_app(first_time=False):

    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')
    api = Api(app)

    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')
        username = db.Column(db.String(100, collation='NOCASE'),
                             nullable=False,
                             unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')
        first_name = db.Column(db.String(100, collation='NOCASE'),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'),
                              nullable=False,
                              server_default='')
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    db.create_all()

    user_manager = UserManager(app, db, User)

    ## member_page template
    @app.route('/members')
    @login_required
    def member_page():
        return render_template_string("""
            {% extends "flask_user_layout.html" %}
            {% block content %}
                <h2>Members page</h2>
                <p><a href={{ url_for('user.register') }}>Register</a></p>
                <p><a href={{ url_for('user.login') }}>Sign in</a></p>
                <p><a href={{ url_for('home_page') }}>Home page</a> (accessible to anyone)</p>
                <p><a href={{ url_for('member_page') }}>Member page</a> (login required)</p>
                <p><a href={{ url_for('user.logout') }}>Sign out</a></p>
            {% endblock %}
            """)

    ## home_page template
    @app.route('/')
    def home_page():
        return render_template_string("""
            {% extends "flask_user_layout.html" %}
            {% block content %}
                <h2>Home page</h2>
                <p><a href={{ url_for('user.register') }}>Register</a></p>
                <p><a href={{ url_for('user.login') }}>Sign in</a></p>
                <p><a href={{ url_for('home_page') }}>Home page</a> (accessible to anyone)</p>
                <p><a href={{ url_for('member_page') }}>Member page</a> (login required)</p>
                <p><a href={{ url_for('user.logout') }}>Sign out</a></p>
            {% endblock %}
            """)

    if first_time:
        try:
            admin_role = Role(name='Admin')
            user1 = User(username='******',
                         active=True,
                         password=user_manager.hash_password('Password1'))
            user2 = User(username='******',
                         active=True,
                         password=user_manager.hash_password('Password2'))
            user1.roles = [
                admin_role,
            ]
            db.session.add(admin_role)
            db.session.add(user1)
            db.session.add(user2)
            db.session.commit()
        except exc.IntegrityError:
            pass

    ## attaching the url to view
    from views import MovieViewset, AllMoviesViewset

    api.add_resource(MovieViewset, '/movie/<int:movie_id>')
    api.add_resource(AllMoviesViewset, '/allmovies')

    return app
示例#4
0
def create_app():
    """ Flask application factory """
    
    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__+'.ConfigClass')

    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        username = db.Column(db.String(255, collation='NOCASE'), nullable=False, unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.username == 'member').first():
        user = User(
            username='******',
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.username == 'admin').first():
        user = User(
            username='******',
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Home page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    # The Members page is only accessible to authenticated users
    @app.route('/members')
    @login_required    # Use of @login_required decorator
    def member_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Members page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    # The Admin page requires an 'Admin' role.
    @app.route('/admin')
    @roles_required('Admin')    # Use of @roles_required decorator
    def admin_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Admin Page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    return app
        def __init__(self, musteriId, urunId, siparisno, siparisTarihi, odemeId):
            self.musteriId = musteriId
            self.urunId = urunId
            self.siparisno = siparisno
            self.siparisTarihi = siparisTarihi
            self.odemeId = odemeId

    user_manager = UserManager(app, db, Kullanici)
    db.create_all()

	if not Kullanici.query.filter(Kullanici.email == request.form['email']).first():
        kullanici = Kullanici(
            email=request.form['email'],
            tarih=datetime.datetime.utcnow(),
            sifre=user_manager.hash_password(request.form['sifre']),
        )
        

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not Kullanici.query.filter(Kullanici.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )

    @app.route('/')
    def anasayfa():
        return render_template('index.html')
示例#6
0
        def __init__(self, musteriId, urunId, siparisno, siparisTarihi, odemeId):
            self.musteriId = musteriId
            self.urunId = urunId
            self.siparisno = siparisno
            self.siparisTarihi = siparisTarihi
            self.odemeId = odemeId

    user_manager = UserManager(app, db, Kullanici)
    db.create_all()

	if not Kullanici.query.filter(Kullanici.email == request.form['email']).first():
        kullanici = Kullanici(
            email=request.form['email'],
            tarih=datetime.datetime.utcnow(),
            sifre=user_manager.hash_password(request.form['sifre']),
        )
        

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not Kullanici.query.filter(Kullanici.email == '*****@*****.**').first():
        kullanici = Kullanici(
            email='*****@*****.**',
            tarih=datetime.datetime.utcnow(),
            sifre=user_manager.hash_password('admin'),
        )

    @app.route('/')
    def anasayfa():
        return render_template('index.html')
示例#7
0
def init_app(app, test_config=None):  # For automated tests
    # Setup Flask and read config from ConfigClass defined above
    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

    # Reset all the database tables
    db.create_all()

    # Setup Flask-User
    db_adapter = SQLAlchemyAdapter(db,
                                   User,
                                   UserInvitationClass=UserInvitation)
    user_manager = UserManager(db_adapter, app)

    # Create regular 'member' user
    if not User.query.filter(User.username == 'member').first():
        user = User(username='******',
                    email='*****@*****.**',
                    active=True,
                    password=user_manager.hash_password('Password1'),
                    confirmed_at=datetime.datetime.utcnow())
        db.session.add(user)
        db.session.commit()

    # 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():
        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('/user/profile')
    @login_required  # Use of @login_required decorator
    @confirm_email_required
    def user_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.invite') }}">
                {%trans%}Invite User{%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 %}
            """)

    # For testing only
    app.db = db
    app.UserEmailClass = UserEmail

    return app
示例#8
0
def init_user_manager(app):
    from flask_user import SQLAlchemyAdapter, UserManager

    from ..core import db, FromCache
    from ..models import Account
    from .user_login import login
    from .user_register import register
    from .user_forgot_password import forgot_password
    from ..tasks import send_email
    import hashlib
    from flask.ext.wtf import Form
    from wtforms import BooleanField, HiddenField, PasswordField, SubmitField, StringField
    from wtforms import validators, ValidationError

    def hash_password(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def generate_password_hash(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def verify_password(self, password, user):
        return self.hash_password(password) == user.password

    def login_manager_usercallback(account_id):
        account_id = int(account_id) if isinstance(account_id, basestring) else account_id
        account = db.session.query(Account). \
            options(FromCache('model', 'account:%d' % account_id)). \
            filter(Account.id == account_id).first()
        return account

    def password_validator(form, field):
        """ Password must have one lowercase letter, one uppercase letter and one digit."""
        # Convert string to list of characters
        password = list(field.data)
        password_length = len(password)

        # Count lowercase, uppercase and numbers
        lowers = uppers = digits = 0
        for ch in password:
            if ch.islower(): lowers += 1
            if ch.isupper(): uppers += 1
            if ch.isdigit(): digits += 1

        # Password must have one lowercase letter, one uppercase letter and one digit
        is_valid = password_length >= 6 and lowers and uppers and digits
        if not is_valid:
            raise ValidationError(u'密码至少超过6位,其中要求包含一个大写字母,一个小写字母和一个数字')

    class ResetPasswordForm(Form):
        new_password = PasswordField(u'新密码', validators=[validators.Required(u'新密码不能为空')])
        retype_password = PasswordField(u'再次输入新密码', validators=[
            validators.EqualTo('new_password', message=u'两次输入的新密码匹配')])
        next = HiddenField()
        submit = SubmitField(u'修改密码')

        def validate(self):
            # Use feature config to remove unused form fields
            user_manager = current_app.user_manager
            if not user_manager.enable_retype_password:
                delattr(self, 'retype_password')
            # Add custom password validator if needed
            has_been_added = False
            for v in self.new_password.validators:
                if v == user_manager.password_validator:
                    has_been_added = True
            if not has_been_added:
                self.new_password.validators.append(user_manager.password_validator)
            # Validate field-validators
            if not super(ResetPasswordForm, self).validate():
                return False
            # All is well
            return True

    def async_send_email(recipient, subject, html_message, text_message):
        send_email.delay(recipient, subject, html_message, text_message)

    db_adapter = SQLAlchemyAdapter(db, Account)
    user_manager = UserManager(db_adapter, login_view_function=login, register_view_function=register,
                               forgot_password_view_function=forgot_password,
                               reset_password_form=ResetPasswordForm, password_validator=password_validator,
                               send_email_function=async_send_email)
    user_manager.init_app(app)
    user_manager.hash_password = hash_password.__get__(user_manager, UserManager)
    user_manager.generate_password_hash = generate_password_hash.__get__(user_manager, UserManager)
    user_manager.verify_password = verify_password.__get__(user_manager, UserManager)
    user_manager.login_manager.user_callback = login_manager_usercallback
    orig_unauthenticated_view_function = user_manager.unauthenticated_view_function

    def unauthenticated_view_function():
        if request.is_xhr:
            return jsonify({'success': False, 'error_code': errors.user_unauthenticated})
        else:
            return orig_unauthenticated_view_function()

    setattr(user_manager, 'unauthenticated_view_function', unauthenticated_view_function)

    orig_unauthorized_view_function = user_manager.unauthorized_view_function

    def unauthorized_view_function():
        if request.is_xhr:
            return jsonify({'success': False, 'error_code': errors.operation_unauthorized})
        else:
            return orig_unauthorized_view_function()

    setattr(user_manager, 'unauthorized_view_function', unauthorized_view_function)
示例#9
0
文件: tst_app.py 项目: rcharp/Simple
def init_app(app, test_config=None):                   # For automated tests
    # Setup Flask and read config from ConfigClass defined above
    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

    # Reset all the database tables
    db.create_all()

    # Setup Flask-User
    db_adapter = SQLAlchemyAdapter(db,  User, UserInvitationClass=UserInvitation)
    user_manager = UserManager(db_adapter, app)

    # Create regular 'member' user
    if not User.query.filter(User.username=='member').first():
        user = User(username='******', email='*****@*****.**', active=True,
                password=user_manager.hash_password('Password1'), confirmed_at=datetime.datetime.utcnow())
        db.session.add(user)
        db.session.commit()

    # 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():
        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('/user/profile')
    @login_required                                 # Use of @login_required decorator
    @confirm_email_required
    def user_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.invite') }}">
                {%trans%}Invite User{%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 %}
            """)

    # For testing only
    app.db = db
    app.UserEmailClass = UserEmail

    return app
示例#10
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
    mail = Mail(app)                                # Initialize Flask-Mail
    db = SQLAlchemy(app)                            # Initialize Flask-SQLAlchemy
    User, Role, UserRoles, Posts = create_models(db)

    # 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=='admin').first():
        user1 = User(username='******', email='*****@*****.**', active=True,
                password=user_manager.hash_password('password'))
        user1.roles.append(Role(name='admin'))
        db.session.add(user1)
        db.session.commit()

    if len(Posts.query.all()) == 0:
        post = Posts(user_id=3, title='hello world', content='this is a test post to test the query')
        db.session.add(post)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    @login_required
    def home_page():
        # posts = get_posts(db)
        posts = Posts.query.all()
        return render_template('main.html', posts=posts)

    @app.route('/post', methods=['GET', 'POST'])
    def new_post():
        if request.method == 'GET':
            return render_template('post_form.html')
        elif request.method == 'POST':
            form = request.form
            post = Posts(user_id=session['user_id'], title=form['title'], content=form['content'])
            db.session.add(post)
            db.session.commit()

            flash('post successful')
            return redirect(url_for('home_page'))



    # The Special page requires a user with 'special' and 'sauce' roles or with 'special' and 'agent' roles.
    @app.route('/admin')
    @roles_required('admin')   # Use of @roles_required decorator
    def special_page():
        return 'this isn\'t done yet'

    return app
示例#11
0
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__, static_url_path='/static')
    app.config.from_object(__name__+'.ConfigClass')
    # Initialize Flask-BabelEx
    babel = Babel(app)
    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255), nullable=False, unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100), nullable=False, server_default='')
        last_name = db.Column(db.String(100), nullable=False, server_default='')
        gender = db.Column(db.String(100), nullable=False, server_default='')
        birthday = db.Column(db.Date,server_default="1990/12/10")

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))

    class Country(db.Model):
        __tablename__ = 'country'
        abbreviation_fips = db.Column(db.String(5), nullable=False, server_default='',primary_key=True)
        name = db.Column(db.String(100),nullable=False)

    class City(db.Model):
        __tablename__ = 'city'
        id = id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(100), nullable=False)
        country_abbreviation_fips = db.Column(db.String(5), db.ForeignKey('country.abbreviation_fips', ondelete='CASCADE'))

    class Preference(db.Model):
        __tablename__= 'preference'
        id = db.Column(db.Integer(), primary_key=True)
        user_id= db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
        city_id= db.Column(db.Integer, db.ForeignKey('city.id', ondelete='CASCADE'))
        field_id= db.Column(db.Integer, db.ForeignKey('field.id', ondelete='CASCADE'))

    class Field(db.Model):
        __tablename__= 'field'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(100), nullable=False)


    class Position(db.Model):
        __tablename__='position'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(100), nullable=False)
        start_date = db.Column(db.Date, server_default="2019/10/10", nullable = False)
        salary = db.Column(db.Integer(), nullable=False)
        description = db.Column(db.String(100), nullable = False)
        field_id= db.Column(db.Integer, db.ForeignKey('field.id', ondelete='CASCADE'))
        group_id= db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))

    class Experience(db.Model):
        __tablename__ = 'experience'
        id = db.Column(db.Integer, primary_key=True)
        user_id= db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
        description= db.Column(db.String(1000), nullable=True, server_default='Write a short description of your experience.')

    class Education(db.Model):
        __tablename__ = 'education'
        id = db.Column(db.Integer, primary_key=True)
        degree = db.Column(db.Integer, db.ForeignKey('degree.id', ondelete='CASCADE'))
        degree_field = db.Column(db.Integer, db.ForeignKey('degreefield.id', ondelete='CASCADE'))
        user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))

    class UserHasEducation(db.Model):
        __tablename__ = 'user_has_education'
        id = db.Column(db.Integer, primary_key=True)
        user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
        education_id = db.Column(db.Integer, db.ForeignKey('education.id', ondelete='CASCADE'))

    class PI(db.Model):
        __tablename__ = 'pi'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(50), nullable=False)
        surname = db.Column(db.String(50), nullable=False)
        group_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))

    class Institution(db.Model):
        __tablename__ = 'institution'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(100), nullable=False )
        link= db.Column(db.String(100), nullable=False)
        city= db.Column(db.String(50), nullable=False)

    class InstitutionHasGroup(db.Model):
        __tablename__ = 'institution_has_group'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
        institution_id = db.Column(db.Integer, db.ForeignKey('institution.id', ondelete='CASCADE'))

    class Requests(db.Model):
        __tablename__ = 'requests'
        id = db.Column(db.Integer(), primary_key=True)
        applicant_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
        position_id = db.Column(db.Integer(), db.ForeignKey('position.id', ondelete='CASCADE'))
        status = db.Column(db.String(50), nullable=False)

    class Requirement(db.Model):
        __tablename__="requirement"
        id = db.Column(db.Integer(), primary_key=True)
        degree = db.Column(db.Integer(), db.ForeignKey('degree.id', ondelete='CASCADE'))
        degree_field = db.Column(db.Integer(), db.ForeignKey('degreefield.id', ondelete='CASCADE'))
        position_id = db.Column(db.Integer(), db.ForeignKey('position.id', ondelete='CASCADE'))

    class Message(db.Model):
        __tablename__='message'
        id = db.Column(db.Integer(), primary_key=True)
        message = db.Column(db.String(500), nullable=False)
        user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))
        group_id= db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'))

    class Degree(db.Model):
        __tablename__="degree"
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(100), nullable=False )


    class DegreeField(db.Model):
        __tablename__="degreefield"
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(100), nullable=False )



    user_manager = UserManager(app, db, User, RoleClass=Role,UserRolesClass=UserRoles,
                                PositionClass=Position, UserHasEducationClass = UserHasEducation,
                                PIClass = PI, InstitutionClass = Institution,
                                InstitutionHasGroupClass = InstitutionHasGroup ,
                                EducationClass = Education, ExperienceClass= Experience,
                                CityClass=City, CountryClass= Country, RequestsClass=Requests,
                                FieldClass = Field, PreferenceClass = Preference,
                                DegreeClass = Degree,
                                DegreeFieldClass = DegreeField,
                                RequirementClass = Requirement, MessageClass = Message)

    db.create_all()

    # if not Position.query.filter(Position.name == 'Bioinformatics Technician').first():
    #    pos1 = Position(name = "Bioinformatics Technician", salary =1000, start_date="2019/10/10" ,description ="A cool job!")
    #    db.session.add(pos1)
    #    db.session.commit()

    if not DegreeField.query.filter(DegreeField.name == 'Bioinformatics').first():
        degree = DegreeField(name = "None")
        degree1 = DegreeField(name = "Bioinformatics")
        degree2 = DegreeField(name = "Biology")
        degree3 = DegreeField(name = "Computer Science")
        db.session.add(degree)
        db.session.add(degree1)
        db.session.add(degree2)
        db.session.add(degree3)
        db.session.commit()

    if not Degree.query.filter(Degree.name == 'Bachelor').first():
        none_degree = Degree(name = "None")
        bachelor = Degree(name = "Bachelor")
        master = Degree(name = "Master")
        phd = Degree(name = "PhD")
        postdoc = Degree(name = "PostDoc")
        db.session.add(none_degree)
        db.session.add(bachelor)
        db.session.add(master)
        db.session.add(phd)
        db.session.add(postdoc)
        db.session.commit()




    if not Field.query.filter(Field.name == 'Structural Bioinformatics').first():
       field = Field(name = "Structural Bioinformatics")
       field2= Field(name= "Comparative Bioinformatics")
       field3= Field(name= "System Biology")
       field4= Field(name= "Cancer Genomics")
       field5= Field(name= "Evolutionary Genomics")
       field6= Field(name= "Other")
       db.session.add(field)
       db.session.add(field2)
       db.session.add(field3)
       db.session.add(field4)
       db.session.add(field5)
       db.session.add(field6)
       db.session.commit()

    if not City.query.filter(City.name == 'Barcelona').first():
       country = Country(abbreviation_fips = "SP", name ="Spain")
       city = City(name = "Barcelona", country_abbreviation_fips = "SP")
       city2 = City(name = "Madrid", country_abbreviation_fips = "SP")
       city3 = City(name = "Valencia", country_abbreviation_fips = "SP")
       city4 = City(name = "Bilbao", country_abbreviation_fips = "SP")
       city5 = City(name = "Sevilla", country_abbreviation_fips = "SP")
       db.session.add(city)
       db.session.add(city2)
       db.session.add(city3)
       db.session.add(city4)
       db.session.add(city5)
       db.session.add(country)
       db.session.commit()

    #Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
            gender = "F"
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    if not Role.query.filter(Role.name == 'Applicant').first():
        role = Role (name = "Applicant")
        role2 = Role( name ="Group")
        db.session.add(role)
        db.session.add(role2)
        db.session.commit()

    @app.route('/scimatch')
    def home_page():
        role_name ="Guest"
        if current_user is None:
            return render_template("/home_page.html")

        if not current_user.is_authenticated:
                return render_template("/home_page.html")
        else:
                role_id = UserRoles.query.filter_by( user_id = current_user.id).first().role_id
                role_name = Role.query.filter_by( id = role_id).first().name
                if role_name == "Applicant":
                    matches = Position.query.order_by(Position.name).all()
                    return redirect(url_for('user.home_page_applicant'))
                    #return render_template("/home_page_applicant.html",matches=matches, role=role_name)
                elif role_name == "Group":
                    positions = Position.query.filter_by(group_id = current_user.id).all()
                    return redirect(url_for('user.home_page_group'))
                    #return render_template("/home_page_group.html",role=role_name, positions = positions)

    def who():
      return render_template("/who.html")
    app.add_url_rule('/scimatch/who', 'who', who)

    def why():
      return render_template("/why.html")
    app.add_url_rule('/scimatch/why', 'why', why)

    def change_pref():
        dropdown_list = City.query.order_by(City.name).all()
        return render_template("/scimatch/change_pref.html",dropdown_list = dropdown_list)

    def profile_applicant():
        return render_template("/profile_applicant.html")
    app.add_url_rule('/scimatch/profile_applicant', 'profile_applicant', profile_applicant)

    # def chat_applicant():
    #     return render_template("/chat_applicant.html")
    # app.add_url_rule('/scimatch/chat_applicant', 'chat_applicant', chat_applicant)

    return app
示例#12
0
def create_app():
    """ Flask application factory """

    # Flask yaratılmıştır ve uygulama ismi verilmiştir.
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    #Tarih saat ve metin oluşturma işlemleri için Babel Kütüphanesi kullanılmıştır.
    babel = Babel(app)

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

    db = SQLAlchemy(app)

    # User Class oluşturulmuştur.
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')
        email = db.Column(db.String(255, collation='NOCASE'),
                          nullable=False,
                          unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        roles = db.relationship('Role', secondary='user_roles')

    # Rezervasyon Tablosu tanımlanmıştır.
    class Rezervation(db.Model):
        __tablename__ = 'rezervation'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        flight_id = db.Column(db.Integer())
        tarih = db.Column(db.DateTime,
                          index=True,
                          default=datetime.datetime.utcnow())
        name = db.Column(db.String(50))
        last_name = db.Column(db.String(50))
        phone = db.Column(db.Integer())
        number = db.Column(db.Integer())
        ticket = db.Column(db.Integer())
        toplam = db.Column(db.Float())
        asiltutar = db.Column(db.Float())
        bonus = db.Column(db.Float())

    #Flight Tablosu tanımlanmıştır.
    class Flight(db.Model):
        __tablename__ = 'flight'
        id = db.Column(db.Integer(), primary_key=True)
        ucus_id = db.Column(db.Integer())
        departure = db.Column(db.String(25))
        landing = db.Column(db.String(25))
        tarih = db.Column(db.DateTime,
                          index=True,
                          default=datetime.datetime.utcnow())
        users_id = db.Column(db.Integer())
        empty_seat = db.Column(db.Float())
        full_seat = db.Column(db.Float())
        ticket = db.Column(db.Integer())
        bonus = db.Column(db.Float())
        oran = db.Column(db.Float())
        capacity = db.Column(db.Integer())
        pilot_name = db.Column(db.String(25))

    #Sepet Tablosu tanımlanmıştır.
    class Basket(db.Model):
        __tablename__ = 'basket'
        id = db.Column(db.Integer(), primary_key=True)
        timestamp = db.Column(db.DateTime,
                              index=True,
                              default=datetime.datetime.utcnow())
        ucus_id = db.Column(db.Integer())
        users_id = db.Column(db.Integer())
        name = db.Column(db.String(50))
        last_name = db.Column(db.String(50))
        phone = db.Column(db.Integer())
        number = db.Column(db.Integer())
        bonus = db.Column(db.Integer())
        ticket = db.Column(db.Integer())
        toplam = db.Column(db.Float())
        asiltutar = db.Column(db.Float())

    #Role Tablosu tanımlanmıştır.
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # User Roles Tablosu tanımlanmıştır.
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Uygulama veritabanları user manager modülünün içerisine eklenmiştir.
    user_manager = UserManager(app, db, User)

    # Tüm veritabanları oluşturulmuştur.
    db.create_all()
    engine = create_engine('sqlite:///basic_app2.sqlite')
    meta = MetaData(engine, reflect=True)

    #Metadata tablolar değişkenlere aktarılmıştır.

    table_isim2 = meta.tables['rezervation']
    table_isim3 = meta.tables['basket']
    table_isim4 = meta.tables['flight']

    #Kullanıcı Giriş Çıkış İşlemi Yapılmıştır.
    @user_logged_in.connect_via(app)
    def _after_login_hook(sender, user, **extra):
        sender.logger.info('user logged in')

    @user_logged_out.connect_via(app)
    def _after_logout_hook(sender, user, **extra):
        sender.logger.info('user logged out')

    #Memberlar yaratılıp gerekli olan bilgileri verilmiştir.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()
    #Memberlar yaratılıp gerekli olan bilgileri verilmiştir.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()
    #Memberlar yaratılıp gerekli olan bilgileri verilmiştir.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password2'),
        )
        db.session.add(user)
        db.session.commit()
    #Memberlar yaratılıp gerekli olan bilgileri verilmiştir.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password3'),
        )
        db.session.add(user)
        db.session.commit()
    #Memberlar yaratılıp gerekli olan bilgileri verilmiştir.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password4'),
        )
        db.session.add(user)
        db.session.commit()

    #Admin ve Rol ataması yapılmıştır.
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    #Anasayfa HTML
    @app.route('/')
    def home_page():
        return render_template('home.html')

    #Admin  HTML
    @app.route('/admin')
    @roles_required('Admin')
    def admin_page():
        return render_template('admin.html')

    ##Member HTML
    @app.route('/member')
    @login_required
    def member_page():
        return render_template('uye_sayfasi.html')

    #Admin Uçuş Rezerve Etme Kısmıdır.
    @app.route('/rezervation')
    def rezervation_page():
        return render_template('rezervation.html')

    @app.route('/rezervation_sayfasi')
    @roles_required('Admin')
    def rezervation_sayfasi():
        return render_template('rezervation.html')

    #Adminin Uçuş ekleme işlemi burada gerçekleştirilmiştir.
    @app.route('/rezervation_ekle', methods=['POST', 'GET'])
    @roles_required('Admin')
    def rezervation_ekle():
        if request.method == 'POST':
            try:

                ucus_id = request.form['ucus_id']
                departure = request.form['departure']
                landing = request.form['landing']
                empty_seat = request.form['empty_seat']
                full_seat = request.form['full_seat']
                capacity = request.form['capacity']
                pilot_name = request.form['pilot_name']
                ticket = request.form['ticket']

                rezervasyon = Flight(
                    ucus_id=ucus_id,
                    departure=departure,
                    landing=landing,
                    empty_seat=empty_seat,
                    full_seat=full_seat,
                    capacity=capacity,
                    pilot_name=pilot_name,
                    ticket=ticket,
                )
                db.session.add(rezervasyon)
                db.session.commit()

                msg = "UÇUŞ EKLEME İŞLEMİNİZ BAŞARIYLA GERÇEKLEŞMİŞTİR"
            except:
                msg = "UÇUŞ EKLEME SIRASINDA HATA OLUŞTU"
            finally:
                return render_template('rezervasyongoruntule.html', msg=msg)

    #Kullanıcıların Uçuş listeleme işlemi burada gerçekleştirilmiştir.

    @app.route('/rezervasyon_listele')
    def rezervasyon_listele():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        bonusyap = table_isim4.update().where(
            table_isim4.c.bonus == None).values(bonus=(table_isim4.c.ticket) *
                                                3 / 100)
        conn.execute(bonusyap)
        select_st = select([
            table_isim4.c.ucus_id, table_isim4.c.departure,
            table_isim4.c.landing, table_isim4.c.empty_seat,
            table_isim4.c.full_seat, table_isim4.c.capacity,
            table_isim4.c.pilot_name, table_isim4.c.ticket, table_isim4.c.bonus
        ])
        rows = conn.execute(select_st)
        return render_template("rezervasyon_listele.html", rows=rows)

    @app.route('/sepet_sayfasi')
    @login_required
    def sepet_sayfasi():
        return render_template('rezervasyon_listele.html')

    #Sepete ekleme işlemi burada gerçekleşmiştir.
    @app.route('/sepet_ekle', methods=['POST', 'GET'])
    @login_required
    def sepet_ekle():

        if request.method == 'POST':

            try:

                ucus_id = request.form['ucus_id']
                name = request.form['name']
                last_name = request.form['last_name']
                phone = request.form['phone']
                number = request.form['number']
                ticket = request.form['ticket']
                user = current_user.id

                with sql.connect('basic_app2.sqlite') as conn:
                    cur = conn.cursor()
                    cur.execute(
                        "SELECT count(ucus_id) FROM flight WHERE ucus_id=" +
                        request.form['ucus_id'])
                    conn.commit()
                    row = cur.fetchone()
                    msg = ''
                    if row[0] == 0:
                        msg = "Seçtiğiniz Numaraya Ait Uçuş Bulunamadı."
                        alert = 'alert-danger'
                    else:

                        conn.close()
                        alert = 'alert-success'
                        msg = "Sepete ekleme işleminiz başarıyla gerçekleştirildi"
                        sepet = Basket(
                            ucus_id=ucus_id,
                            name=name,
                            last_name=last_name,
                            phone=phone,
                            number=number,
                            users_id=user,
                            ticket=ticket,
                        )

                        db.session.add(sepet)
                        db.session.commit()

                        rez = Rezervation(flight_id=ucus_id,
                                          name=name,
                                          last_name=last_name,
                                          phone=phone,
                                          number=number,
                                          user_id=user,
                                          tarih=datetime.datetime.utcnow(),
                                          ticket=ticket)
                        db.session.add(rez)
                        db.session.commit()

            finally:
                return render_template('sepetgoruntule.html',
                                       msg=msg,
                                       alert=alert)

    #Tarihsiz sepet listeleme işlemi burada yapılmıştır.

    @app.route('/sepet_listele')
    @login_required
    def sepet_listele():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        bonusya = table_isim3.update().where(
            table_isim3.c.bonus == None).values(
                bonus=(table_isim3.c.ticket * table_isim3.c.number) * 3 / 100)
        conn.execute(bonusya)
        ticke = table_isim3.update().where(
            table_isim3.c.ticket == None).values(ticket=table_isim3.c.number *
                                                 table_isim3.c.ticket)
        conn.execute(ticke)
        bilethesab = table_isim3.update().where(
            table_isim3.c.toplam == None).values(toplam=(table_isim3.c.ticket *
                                                         table_isim3.c.number))
        conn.execute(bilethesab)
        asiltutarr = table_isim3.update().where(
            table_isim3.c.asiltutar == None).values(
                asiltutar=(table_isim3.c.toplam) - (table_isim3.c.bonus))
        conn.execute(asiltutarr)
        sepet = select([
            table_isim3.c.users_id, table_isim3.c.ucus_id, table_isim3.c.name,
            table_isim3.c.last_name, table_isim3.c.phone, table_isim3.c.number,
            table_isim3.c.ticket, table_isim3.c.bonus, table_isim3.c.toplam,
            table_isim3.c.asiltutar
        ]).where(table_isim3.c.users_id == user)
        rows = conn.execute(sepet)
        return render_template('sepet_listele.html', rows=rows)

    #Uçuş listeleme işlemi (Kullanıcı tüm detaylarıyla uçuşları görüntülüyor.)
    @app.route('/rez_listele')
    @login_required
    def rez_listele():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        alert = 'alert-success'
        msg = "Bilet alma işleminiz başarıyla gerçekleştirildi."
        bonus = table_isim2.update().where(table_isim2.c.bonus == None).values(
            bonus=(table_isim2.c.ticket * table_isim2.c.number) * 3 / 100)
        conn.execute(bonus)
        bilethesabı = table_isim2.update().where(
            table_isim2.c.toplam == None).values(toplam=(table_isim2.c.ticket *
                                                         table_isim2.c.number))
        conn.execute(bilethesabı)
        asiltut = table_isim2.update().where(
            table_isim2.c.asiltutar == None).values(
                asiltutar=(table_isim2.c.toplam) - (table_isim2.c.bonus))
        conn.execute(asiltut)
        rezliste = select([
            table_isim2.c.user_id, table_isim2.c.tarih, table_isim2.c.name,
            table_isim2.c.last_name, table_isim2.c.phone, table_isim2.c.number,
            table_isim2.c.ticket, table_isim2.c.bonus, table_isim2.c.toplam,
            table_isim2.c.asiltutar
        ]).where(table_isim2.c.user_id == user)
        rows = conn.execute(rezliste)

        return render_template('rezlist.html', rows=rows, msg=msg, alert=alert)

    #Kullanıcı girişi olmadan anasayfada tüm uçuşlar listeleniyor.
    @app.route('/rez2_listele')
    def rez2_listele():

        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        tumucus = select([
            table_isim4.c.ucus_id, table_isim4.c.departure,
            table_isim4.c.landing, table_isim4.c.capacity,
            table_isim4.c.empty_seat, table_isim4.c.full_seat,
            table_isim4.c.pilot_name
        ])
        rows = conn.execute(tumucus)

        return render_template('rezlist1.html', rows=rows)

    #Kullanıcı bazında bonus listeleme işlemi yapılıyor.
    @app.route('/bonuslistele')
    def bonuslistele():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        bonusliste = select([
            table_isim3.c.users_id, table_isim3.c.name,
            table_isim3.c.last_name, table_isim3.c.bonus
        ]).where(table_isim3.c.users_id == user)
        rows = conn.execute(bonusliste)
        return render_template('bonuslistele.html', rows=rows)

    #Admin sepet listeleme işlemi Burada yapılmıştır.
    @app.route('/adminsepetlistele')
    @roles_required('Admin')
    def adminsepetlistele():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        sepetlistele = select([
            table_isim3.c.users_id, table_isim3.c.timestamp,
            table_isim3.c.ucus_id, table_isim3.c.name, table_isim3.c.last_name,
            table_isim3.c.phone, table_isim3.c.number
        ]).where(user == 6)
        rows = conn.execute(sepetlistele)
        return render_template('adminsepetlistele.html', rows=rows)

    #Doluluk oranı hesabını yapılması burada gerçekleştirilmiştir.
    @app.route('/doluluk_orani')
    @login_required
    def doluluk_orani():
        user = current_user.id
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        oranhesabı = table_isim4.update().where(
            table_isim4.c.oran == None).values(
                oran=(table_isim4.c.full_seat / table_isim4.c.capacity) * 100)
        conn.execute(oranhesabı)
        dolulukhesabi = select([
            table_isim4.c.ucus_id, table_isim4.c.capacity,
            table_isim4.c.empty_seat, table_isim4.c.full_seat,
            table_isim4.c.oran
        ]).order_by(desc(table_isim4.c.capacity))
        rows = conn.execute(dolulukhesabi)
        return render_template('dolulukorani.html', rows=rows)

    #Adminin Sepetten Silme İşlemi Gerçekleştirilmiştir.
    @app.route('/adminsepettensil/<ucus_id>')
    def adminsepettensil(ucus_id):
        adminsil = Basket.query.filter_by(ucus_id=ucus_id).first()
        db.session.delete(adminsil)
        db.session.commit()
        return redirect(url_for('sepet_listele'))

    #Kullanıcı tarafından Sepetten silme işlemi gerçekleştirilmiştir.
    @app.route('/sepettensil/<ucus_id>')
    def sepettensil(ucus_id):
        sepetsil = Basket.query.filter_by(ucus_id=ucus_id).first()
        db.session.delete(sepetsil)
        db.session.commit()
        return redirect(url_for('sepet_listele'))

    #Admin Uçuş Silme İşlemi Yapılmıştır.
    @app.route('/rezsill/<ucus_id>')
    @roles_required('Admin')
    def rezsill(ucus_id):
        ucussil = Flight.query.filter_by(ucus_id=ucus_id).first()
        db.session.delete(ucussil)
        db.session.commit()

        return redirect(url_for('rezervasyon_listele'))

    #Admin Rezervasyon Id'si Güncelleme İşlemi Yapabiliyor.
    @app.route('/rezguncelle/<ucus_id>')
    @roles_required('Admin')
    def rezguncelle(ucus_id):
        db_uri = 'sqlite:///basic_app2.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        ucusguncelle = table_isim4.update().where(
            table_isim4.c.id == table_isim4.c.ucus_id).values(
                ucus_id=table_isim4.c.ucus_id + str(1))
        conn.execute(ucusguncelle)
        db.session.commit()
        return redirect(url_for('rezervasyon_listele'))

    #Doluluk Silme İşlemi Admin Tarafından Gerçekleştirlmiştir.
    @app.route('/doluluksil/<capacity>')
    @roles_required('Admin')
    def doluluksil(capacity):
        doluluksilme = Flight.query.filter_by(capacity=capacity).first()
        db.session.delete(doluluksilme)
        db.session.commit()

        return redirect(url_for('doluluk_orani'))

    return app
示例#13
0
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(app)

    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'),
                          nullable=False,
                          unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'),
                              nullable=False,
                              server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template("index.html")

    # The Members page is only accessible to authenticated users
    @app.route('/biblioteca')
    @login_required  # Use of @login_required decorator
    def biblioteca():
        return render_template("biblioteca.html")

    @app.route('/biblioteca2')
    @login_required  # Use of @login_required decorator
    def biblioteca2():
        return render_template("biblioteca2.html")

    # The Admin page requires an 'Admin' role.
    @app.route('/nuevolibro')
    @roles_required('Admin')  # Use of @roles_required decorator
    def admin_new_libro():
        return render_template("nuevolibro.html")

    @app.route('/actualizarlibro')
    @roles_required('Admin')
    def admin_updatelibro():
        return render_template("updatelibro1.html")

    @app.route('/actualizarlibro2')
    @roles_required('Admin')
    def admin_updatelibro2():
        return render_template("updatelibro.html")

    @app.route('/libros', methods=['Post'])
    def create_book():
        titulo = request.form['titulo']
        autor = request.form['autor']
        genero = request.form['genero']
        nacionalidad = request.form['nacionalidad']
        descripcion = request.form['descripcion']
        imagen = request.files['imagen']
        archivo = request.files['archivo']
        fotoautor = request.files['fotoautor']
        nombreimagen = imagen.filename
        nombrearchivo = archivo.filename
        nombrefotoautor = fotoautor.filename
        rutaimagen = os.path.abspath(nombreimagen)
        rutaarchivo = os.path.abspath(nombrearchivo)
        rutafotoautor = os.path.abspath(nombrefotoautor)
        libro = entities.Libro(titulo=titulo,
                               autor=autor,
                               genero=genero,
                               nacionalidad=nacionalidad,
                               descripcion=descripcion,
                               imagen=imagen.read(),
                               archivo=archivo.read(),
                               fotoautor=fotoautor.read(),
                               nombreimagen=nombreimagen,
                               nombrearchivo=nombrearchivo,
                               nombrefotoautor=nombrefotoautor,
                               rutaimagen=rutaimagen,
                               rutaarchivo=rutaarchivo,
                               rutafotoautor=rutafotoautor)
        session = db.Session(engine)
        session.add(libro)
        session.commit()
        return render_template('success.html')

    @app.route('/libros', methods=['PUT'])
    def update_book():
        session = db.Session(engine)
        ID = request.form['key']
        libros = session.query(entities.Libro).filter(entities.Libro.ID == ID)

        content = json.loads(request.form['values'])

        for libro in libros:
            if 'titulo' in content:
                libro.titulo = content['titulo']
            if 'autor' in content:
                libro.autor = content['autor']
            if 'genero' in content:
                libro.genero = content['genero']
            if 'nacionalidad' in content:
                libro.nacionalidad = content['nacionalidad']
            if 'descripcion' in content:
                libro.descripcion = content['descripcion']
            if 'imagen' in content:
                imagen = content['imagen']
                libro.imagen = imagen
                nombreimagen = imagen.filename
                libro.nombreimagen = nombreimagen
                libro.rutaimagen = os.path.abspath(nombreimagen)
            if 'archivo' in content:
                archivo = content['archivo']
                libro.archivo = archivo
                nombrearchivo = archivo.filename
                libro.nombrearchivo = nombrearchivo
                libro.rutaarchivo = os.path.abspath(nombrearchivo)
            if 'fotoautor' in content:
                fotoautor = content['fotoautor']
                libro.fotoautor = fotoautor
                nombrefotoautor = fotoautor.filename
                libro.nombrefotoautor = nombrefotoautor
                libro.rutafotoautor = os.path.abspath(nombrefotoautor)
            session.add(libro)
        session.commit()
        return 'Update exitosa'

    @app.route('/actualizarconput')
    def update_put():
        return render_template('updatePut.html')

    @app.route('/libro/<ID>', methods=['DELETE'])
    def delete_book(ID):
        session = db.Session(engine)
        libros = session.query(entities.Libro).filter(entities.Libro.ID == ID)

        for libro in libros:
            session.delete(libro)
        session.commit()
        return 'User Deleted'

    @app.route('/titulo/<ID>', methods=['GET'])
    @login_required
    def titulo(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].titulo, mimetype='text/txt')

    @app.route('/autor/<ID>', methods=['GET'])
    @login_required
    def autor(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].autor, mimetype='text/txt')

    @app.route('/genero/<ID>', methods=['GET'])
    @login_required
    def genero(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].genero, mimetype='text/txt')

    @app.route('/nacionalidad/<ID>', methods=['GET'])
    @login_required
    def nacionalidad(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].nacionalidad, mimetype='text/txt')

    @app.route('/descripcion/<ID>', methods=['GET'])
    @login_required
    def descripcion(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].descripcion, mimetype='text/txt')

    @app.route('/imagen/<ID>', methods=['GET'])
    @login_required
    def imagen(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].imagen, mimetype='image/png')

    @app.route('/archivo/<ID>', methods=['GET'])
    @login_required
    def archivo(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].archivo, mimetype='application/pdf')

    @app.route('/fotoautor/<ID>', methods=['GET'])
    @login_required
    def fotoautor(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
            break
        return Response(data[0].fotoautor, mimetype='image/png')

    @app.route('/libros', methods=['GET'])
    @login_required
    def libros():
        db_session = db.Session(engine)
        libros = db_session.query(entities.Libro)
        data = []
        for libro in libros:
            data.append(libro)
        return Response(json.dumps(data, cls=connector.AlchemyEncoder),
                        mimetype='application/json')

    @app.route('/mobile_login', methods=["POST"])
    def mobile_login():
        body = request.get_json(silent=True)
        print(body)
        username = body['username']
        password = body['password']
        sessiondb = db.Session(engine)
        user = sessiondb.query(entities.MobileUser).filter(
            and_(entities.MobileUser.username == username,
                 entities.MobileUser.password == password)).first()
        if user != None:
            return Response(json.dumps({
                'response': True,
                'id': user.id
            },
                                       cls=connector.AlchemyEncoder),
                            mimetype='application/json')
        else:
            return Response(json.dumps({'response': False},
                                       cls=connector.AlchemyEncoder),
                            mimetype='application/json')

    @app.route('/mobile_register', methods=['POST'])
    def mobile_register():
        username = request.form['username']
        email = request.form['email']
        password = request.form['password']
        print(username, email, password)

        user = entities.MobileUser(username=username,
                                   email=email,
                                   password=password)
        register = db.Session(engine)
        register.add(user)
        register.commit()

        return "Todo Ok!"

    @app.route('/mobile_libros', methods=['GET'])
    def get_libros():
        db_session = db.Session(engine)
        libros = db_session.query(entities.Libro)
        data = []
        for libro in libros:
            data.append(libro)
        return Response(json.dumps({'data': data},
                                   cls=connector.AlchemyEncoder),
                        mimetype='application/json')

    @app.route('/mobile_libros/<ID>', methods=['GET'])
    def mobile_libros_id(ID):
        db_session = db.Session(engine)
        libros = db_session.query(
            entities.Libro).filter(entities.Libro.ID == ID)
        data = []
        for libro in libros:
            data.append(libro)
        print(data)
        return Response(json.dumps({'data': data},
                                   cls=connector.AlchemyEncoder),
                        mimetype='application/json')

    @app.route('/newUsers', methods=['GET'])
    def newUsers():
        db_session = db.Session(engine)
        users = db_session.query(entities.MobileUser)
        data = []
        for user in users:
            data.append(user)
        return Response(json.dumps({'data': data},
                                   cls=connector.AlchemyEncoder),
                        mimetype='application/json')

    return app
示例#14
0
def create_app():
    """ Flask application factory """

    app = Flask(__name__)
    bcrypt = Bcrypt(app)
    app.config.from_object(__name__ + '.ConfigClass')
    login_manager = LoginManager(app)

    babel = Babel(app)

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

    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'),
                          nullable=False,
                          unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'),
                              nullable=False,
                              server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    class Oteller(db.Model):
        __tablename__ = 'oteller'
        otel_id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
        isim = db.Column(db.String(255))
        adres = db.Column(db.String(255))
        yildiz = db.Column(db.Integer())
        image_url = db.Column(db.String(500))

    class Odalar(db.Model):
        __tablename__ = 'odalar'
        oda_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        fiyat = db.Column(db.Integer())
        kac_kisilik = db.Column(db.Integer())
        otel_id = db.Column(
            db.Integer, db.ForeignKey('oteller.otel_id', ondelete='CASCADE'))
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

    class Rezervasyonlar(db.Model):
        __tablename__ = 'rezervasyonlar'
        rez_id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        oda_id = db.Column(db.Integer,
                           db.ForeignKey('odalar.oda_id', ondelete='CASCADE'))
        baslangic = db.Column(db.String(20))
        bitis = db.Column(db.String(20))
        fiyat = db.Column(db.Integer)
        users_id = db.Column(db.Integer,
                             db.ForeignKey('users.id', ondelete='CASCADE'))

        def serialize(self):
            return {
                "rez_id": self.rez_id,
                "oda_id": self.oda_id,
                "baslangic": self.baslangic,
                "bitis": self.bitis,
                "fiyat": self.fiyat,
                "users_id": self.users_id
            }

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()
    engine = create_engine('sqlite:///basic_app.sqlite')
    meta = MetaData(engine, reflect=True)
    t_oteller = meta.tables['oteller']
    t_odalar = meta.tables['odalar']
    t_rez = meta.tables['rezervasyonlar']

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    rol = ''
    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        rows = engine.execute('SELECT * FROM oteller LIMIT 3')
        global rol
        rol = ''
        if current_user.is_authenticated:
            rol = engine.execute(
                'SELECT r.name From roles r,user_roles ur,roles rol,users u WHERE u.id='
                + str(current_user.id) +
                ' AND ur.user_id=u.id AND ur.role_id=rol.id AND rol.name="' +
                'Admin' + '"').fetchone()
            if rol:
                rol = rol[0]
        return render_template('index.html', oteller=rows, rol=rol)

    @app.route('/anasayfa')
    def anasayfa():
        return redirect('/')

    @app.route('/login')
    def login():
        if current_user.is_authenticated:
            return redirect('/')

        else:
            return render_template('/login/index.html')

    @app.route('/giris_yap', methods=['POST', 'GET'])
    def giris_yap():
        session.pop('sepetim', None)
        sepetim.clear()
        if request.method == 'POST':
            mail = request.form['mail']
            password = request.form['pass']
            con = sql.connect('basic_app.sqlite')
            cur = con.cursor()
            user = User.query.filter_by(email=mail).first()
            msg = "Kullanıcı bulunamadı"
            if user:
                if bcrypt.check_password_hash(user.password, password):
                    user.authenticated = True
                    db.session.add(user)
                    db.session.commit()
                    login_user(user, remember=True)
                    return redirect('/')

            return render_template('./login/index.html',
                                   msg=msg,
                                   hata='alert alert-danger')

    @app.route('/register')
    def register():
        return render_template('/register/index.html')

    @app.route('/kayit', methods=['POST', 'GET'])
    def kayit():
        if request.method == 'POST':
            mail = request.form['mail']
            password = request.form['pass']
            if not User.query.filter(User.email == mail).first():
                user = User(
                    email=mail,
                    email_confirmed_at=datetime.datetime.utcnow(),
                    password=user_manager.hash_password(password),
                )
                role = Role.query.filter_by(name='Agent').one()
                user.roles.append(role)
                db.session.add(user)
                db.session.commit()
                return render_template('/register/index.html',
                                       msg='Kayıt başarıyla eklendi',
                                       hata='alert alert-success')
            else:
                return render_template('/register/index.html',
                                       msg='Bu kişi daha önce kaydolmuş',
                                       hata='alert alert-danger')

    @app.route('/otelekleme')
    @roles_required('Admin')  # Use of @roles_required decorator
    def otelekleme():
        return render_template('otelekleme.html', rol=rol)

    @app.route('/OtelEkle', methods=['POST', 'GET'])
    def OtelEkle():
        otel = Oteller(
            isim=request.form['isim'],
            adres=request.form['adres'],
            yildiz=request.form['yildiz'],
        )
        db.session.add(otel)
        msg = "Otel başarıyla eklendi"
        db.session.commit()
        return render_template('otelekleme.html',
                               mesaj=msg,
                               alert_tur="alert alert-success")

    @app.route('/otellerigetir')
    def otellerigetir():
        oteller = Oteller.query.all()
        global rol

        for otel in oteller:
            con = sql.connect('basic_app.sqlite')
            cur = con.cursor()
            today = strftime("%Y-%m-%d", gmtime())
            print("TODAY :" + today)
            cur.execute(
                "SELECT count(od.oda_id) FROM odalar od JOIN rezervasyonlar r ON r.oda_id=od.oda_id JOIN oteller o ON o.otel_id = od.otel_id WHERE r.baslangic='"
                + str(today) + "' AND o.otel_id =" + str(otel.otel_id) + "")
            con.commit()
            oran = cur.fetchone()
            cur.execute("SELECT count(oda_id) FROM odalar WHERE otel_id=" +
                        str(otel.otel_id) + "")
            con.commit()
            odasayisi = cur.fetchone()
            odasayisi = odasayisi[0]
            sayi = int(oran[0])
            oran2 = int((sayi / odasayisi) * 100)
            otel.oran = oran2
        return render_template('oteller.html', oteller=oteller, rol=rol)

    @app.route('/otelguncelleme', methods=['POST', 'GET'])
    @roles_required('Admin')  # Use of @roles_required decorator
    def otelguncelleme():
        global rol
        con = sql.connect('basic_app.sqlite')
        otel_id = request.form['otel_id']
        return render_template('otelguncelleme.html', otel_id=otel_id, rol=rol)

    @app.route('/otelguncelle', methods=['POST', 'GET'])
    def otelguncelle():
        otel_id = request.form['otel_id']
        isim = request.form['isim']
        adres = request.form['adres']
        yildiz = request.form['yildiz']
        con = sql.connect('basic_app.sqlite')
        cur = con.cursor()
        cur.execute(
            "UPDATE oteller SET isim=(?),adres=(?),yildiz=(?) WHERE otel_id='"
            + str(otel_id) + "'", (isim, adres, yildiz))
        con.commit()
        return render_template('otelguncelleme.html',
                               mesaj="Otel başarıyla güncellendi",
                               alert_tur="alert alert-success",
                               oda=oda)

    @app.route('/otelsil', methods=['POST', 'GET'])
    @roles_required('Admin')  # Use of @roles_required decorator
    def otelsil():

        con = sql.connect('basic_app.sqlite')
        otel_id = request.form['otel_id']
        cur = con.cursor()
        cur.execute('DELETE FROM oteller WHERE otel_id =' + str(otel_id) + '')
        cur.execute('DELETE FROM odalar WHERE otel_id=' + str(otel_id) + '')
        con.commit()

        return redirect('otellerigetir')

    @app.route('/odaekleme')
    @roles_required('Admin')  # Use of @roles_required decorator
    def odaekleme():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        select_st = select([t_oteller.c.isim, t_oteller.c.otel_id])
        otel_isim = conn.execute(select_st)
        return render_template('odaekleme.html', otel_isim=otel_isim)

    @app.route('/OdaEkle', methods=['POST', 'GET'])
    def OdaEkle():
        msg = "Hata oluştu"
        oda = Odalar(fiyat=request.form['fiyat'],
                     otel_id=request.form['otel_id'],
                     kac_kisilik=request.form['kac_kisilik'])
        db.session.add(oda)
        db.session.commit()
        msg = 'Oda eklendi'
        return redirect('odaekleme')

    oda = {}

    @app.route('/odaguncelleme', methods=['POST', 'GET'])
    @roles_required('Admin')  # Use of @roles_required decorator
    def odaguncelleme():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        select_oteller = select([t_oteller.c.isim, t_oteller.c.otel_id])
        otel_isim = conn.execute(select_oteller)
        con = sql.connect('basic_app.sqlite')
        oda_id = request.form['oda_id']
        cur = con.cursor()
        cur.execute('SELECT * FROM odalar WHERE oda_id=' + str(oda_id) + '')
        global oda
        oda = cur.fetchall()
        return render_template('odaguncelleme.html',
                               oda=oda,
                               otel_isim=otel_isim,
                               oda_id=oda_id)

    @app.route('/odasilme', methods=['POST', 'GET'])
    @roles_required('Admin')  # Use of @roles_required decorator
    def odasilme():

        con = sql.connect('basic_app.sqlite')
        oda_id = request.form['oda_id']
        cur = con.cursor()
        cur.execute('DELETE FROM odalar WHERE oda_id =' + str(oda_id) + '')
        cur.execute('DELETE FROM rezervasyonlar WHERE oda_id =' + str(oda_id) +
                    '')
        con.commit()
        return redirect('otellerigetir')

    @app.route('/OdaGuncelle', methods=['POST', 'GET'])
    def OdaGuncelle():
        msg = "Hata oluştu"
        fiyat = request.form['fiyat']
        kac_kisilik = request.form['kac_kisilik']
        oda_id = request.form['oda_id']
        con = sql.connect('basic_app.sqlite')
        cur = con.cursor()
        cur.execute(
            "UPDATE odalar SET fiyat=(?),kac_kisilik=(?) WHERE oda_id='" +
            str(oda_id) + "'", (fiyat, kac_kisilik))
        con.commit()
        return render_template('odaguncelleme.html',
                               msg="Oda başarıyla güncellendi",
                               hata="alert alert-success",
                               oda=oda)

    @app.route('/odalar', methods=['POST', 'GET'])
    def odalar():
        global rol
        con = sql.connect('basic_app.sqlite')
        secilen_id = request.form['secilen_id']
        con.row_factory = sql.Row
        cur = con.cursor()
        cur.execute(
            "SELECT o.isim, od.oda_id, od.kac_kisilik, od.fiyat FROM oteller o INNER JOIN odalar od ON od.otel_id=o.otel_id WHERE o.otel_id ="
            + secilen_id + " ORDER BY od.oda_id ASC")
        odalar = cur.fetchall()
        return render_template('odalar.html', odalar=odalar, rol=rol)

    @app.route('/rezervasyonlarim')
    @login_required
    def rezervasyonlarim():
        global rol
        con = sql.connect('basic_app.sqlite')
        con.row_factory = sql.Row
        cur = con.cursor()
        cur.execute(
            "SELECT r.*,ot.isim, o.kac_kisilik FROM odalar o JOIN rezervasyonlar r ON r.oda_id = o.oda_id JOIN oteller ot ON ot.otel_id = o.otel_id WHERE r.users_id="
            + str(current_user.id) + "")
        rezervasyonlar = cur.fetchall()
        return render_template('rezervasyonlarim.html',
                               rezervasyonlar=rezervasyonlar,
                               rol=rol)

    @app.route('/rezsil', methods=['POST', 'GET'])
    @login_required
    def rezsil():
        con = sql.connect('basic_app.sqlite')
        rez_id = request.form['rez_id']
        cur = con.cursor()
        cur.execute('DELETE FROM rezervasyonlar WHERE rez_id =' + str(rez_id) +
                    '')
        con.commit()
        return redirect('rezervasyonlarim')

    sepetim = []
    fiyat = 0

    @app.route('/sepetal', methods=['POST', 'GET'])
    @login_required
    def sepetal():
        con = sql.connect('basic_app.sqlite')
        con.row_factory = sql.Row
        cur = con.cursor()
        cur.execute("SELECT * FROM Rezervasyonlar WHERE oda_id =" +
                    request.form['oda_id'] + "")
        rezervasyonlar = cur.fetchall()
        baslangicsepet = datetime.datetime.strptime(request.form['baslangic'],
                                                    '%Y-%m-%d')
        bitissepet = datetime.datetime.strptime(request.form['bitis'],
                                                '%Y-%m-%d')
        baslangic = datetime.datetime.strptime(request.form['baslangic'],
                                               '%Y-%m-%d')
        bitis = datetime.datetime.strptime(request.form['bitis'], '%Y-%m-%d')
        global fiyat
        msg = ''
        if baslangic < bitis:
            if len(rezervasyonlar) > 0:
                for rez in rezervasyonlar:
                    baslangic = datetime.datetime.strptime(
                        rez['baslangic'], '%Y-%m-%d')
                    bitis = datetime.datetime.strptime(rez['bitis'],
                                                       '%Y-%m-%d')
                    #baslangicsepet=datetime.datetime.strptime(request.form['baslangic'],'%Y-%m-%d')
                    #bitissepet=datetime.datetime.strptime(request.form['bitis'],'%Y-%m-%d')
                    if not ((baslangic <= baslangicsepet <= bitis) or
                            (baslangic <= bitissepet <= bitis)):
                        user = current_user.id
                        rez = len(sepetim) + 1

                        gunler = bitissepet - baslangicsepet
                        cur.execute('Select * From odalar WHERE oda_id="' +
                                    str(request.form['oda_id']) + '"')
                        records = cur.fetchall()
                        odaucreti = 0
                        for row in records:
                            odaucreti = row[1]
                        fiyat = gunler.days * int(odaucreti)

                        rezervasyon = Rezervasyonlar(
                            rez_id=rez,
                            oda_id=request.form['oda_id'],
                            baslangic=request.form['baslangic'],
                            bitis=request.form['bitis'],
                            users_id=user,
                            fiyat=fiyat)
                        if session.get('sepetim'):
                            sepetim.clear()
                            sepetim.extend(session['sepetim'])
                        sepetim.append(rezervasyon.serialize())
                        session.pop('sepetim', None)
                        session['sepetim'] = sepetim
                    else:
                        return render_template(
                            'sepetigoster.html',
                            mesaj="Oda bu tarihler arasında müsait değildir",
                            alert_tur="alert alert-danger")
            else:
                user = current_user.id
                rez = len(sepetim) + 1
                gunler = bitissepet - baslangicsepet
                cur.execute('Select * From odalar WHERE oda_id="' +
                            str(request.form['oda_id']) + '"')
                records = cur.fetchall()
                odaucreti = 0
                for row in records:
                    odaucreti = row[1]
                fiyat = gunler.days * int(odaucreti)
                rezervasyon = Rezervasyonlar(
                    rez_id=rez,
                    oda_id=request.form['oda_id'],
                    baslangic=request.form['baslangic'],
                    bitis=request.form['bitis'],
                    users_id=user,
                    fiyat=fiyat)
                if session.get('sepetim'):
                    sepetim.clear()
                    sepetim.extend(session['sepetim'])
                sepetim.append(rezervasyon.serialize())
                session.pop('sepetim', None)
                session['sepetim'] = sepetim
        return redirect('sepetigetir')

    @app.route('/sepetigetir')
    @login_required
    def sepetigetir():
        if session.get('sepetim'):
            sepetim.clear()
            sepetim.extend(session['sepetim'])
            return render_template('sepetigoster.html', sepet=sepetim)
        else:
            tur = 'alert alert-danger'
            mesaj = 'Sepette ürün yok.'
            return render_template('sepetigoster.html',
                                   alert_tur=tur,
                                   mesaj=mesaj)

    @app.route('/sepettencikar', methods=['POST', 'GET'])
    def sepettencikar():

        id = request.form['rez_id']
        temp = []
        for sepet in sepetim:
            if int(sepet['rez_id']) != int(id):
                temp.append(sepet)
        sepetim.clear()
        sepetim.extend(temp)
        session.pop('sepetim', None)
        session['sepetim'] = sepetim
        return redirect('sepetigetir')

    @app.route('/sepetibosalt', methods=['POST', 'GET'])
    def sepetibosalt():
        sepetim.clear()
        session.pop('sepetim', None)
        return redirect('/')

    @app.route('/rezervasyonalpage', methods=['POST', 'GET'])
    def rezervasyonalpage():
        user = current_user.id
        msg = ''
        for sepet in sepetim:
            con = sql.connect('basic_app.sqlite')
            con.row_factory = sql.Row
            cur = con.cursor()
            cur.execute("SELECT * FROM Rezervasyonlar WHERE oda_id =" +
                        sepet['oda_id'] + "")
            rezervasyonlar = cur.fetchall()
            if len(rezervasyonlar) > 0:
                for rez in rezervasyonlar:
                    baslangic = datetime.datetime.strptime(
                        rez['baslangic'], '%Y-%m-%d')
                    bitis = datetime.datetime.strptime(rez['bitis'],
                                                       '%Y-%m-%d')
                    baslangicsepet = datetime.datetime.strptime(
                        sepet['baslangic'], '%Y-%m-%d')
                    bitissepet = datetime.datetime.strptime(
                        sepet['bitis'], '%Y-%m-%d')
                    if not ((baslangic <= baslangicsepet <= bitis) or
                            (baslangic <= bitissepet <= bitis)):
                        rezervasyon = Rezervasyonlar(
                            oda_id=sepet['oda_id'],
                            baslangic=sepet['baslangic'],
                            bitis=sepet['bitis'],
                            users_id=user,
                            fiyat=sepet['fiyat'])
                        db.session.add(rezervasyon)
                        db.session.commit()
            else:
                rezervasyon = Rezervasyonlar(oda_id=sepet['oda_id'],
                                             baslangic=sepet['baslangic'],
                                             bitis=sepet['bitis'],
                                             fiyat=sepet['fiyat'],
                                             users_id=user)
                db.session.add(rezervasyon)
                db.session.commit()
        return redirect('sepetibosalt')

    return app
示例#15
0
文件: auth.py 项目: dhso/micro_home
def setup(db, app):
    # Define the User data model. Make sure to add flask.ext.user UserMixin!!
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
    
        # User authentication information
        username = db.Column(db.String(50), nullable=False, unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')
        reset_password_token = db.Column(db.String(100), nullable=False, server_default='')
    
        # User email information
        email = db.Column(db.String(255), nullable=False, unique=True)
        confirmed_at = db.Column(db.DateTime())
    
        # User information
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='0')
        first_name = db.Column(db.String(100), nullable=False, server_default='')
        last_name = db.Column(db.String(100), nullable=False, server_default='')
    
        # Relationships
        roles = db.relationship('Role', secondary='user_roles',
                backref=db.backref('users', lazy='dynamic'))
    
    # Define the Role data model
    class Role(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)
    
    # Define the UserRoles data model
    class UserRoles(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE'))

    # 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=='admin').first():
        user_admin = User(username='******', email='*****@*****.**', active=True, password=user_manager.hash_password('admin'))
        user_admin.roles.append(Role(name='admin'))
        user_admin.roles.append(Role(name='secret'))
        db.session.add(user_admin)
        db.session.commit()
示例#16
0
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    db = SQLAlchemy(app)

    class Kullanici(db.Model):
    	__tablename__ = 'Kullanici'
    	id = db.Column(db.Integer, primary_key=True)
    	email = db.Column(db.String(80), unique=True)
    	sifre = db.Column(db.String(80))
    	rolId = db.Column(db.Integer, db.ForeignKey('rol.rolId', ondelete='CASCADE'))
    	active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')
		

    	def __init__(self, email, sifre):
            self.email = email
            self.sifre = sifre
            self.rolId = 0

    class Roller(db.Model):
        __tablename__ = 'rol'
        rolId = db.Column(db.Integer, primary_key=True)
        rolisim = db.Column(db.String(80))

    class urunler(db.Model):
        __tablename__ = 'urunler'
        urun_id = db.Column(db.Integer, primary_key=True)
        kategori_id = db.Column(db.Integer(), db.ForeignKey('kategori.kategoriId', ondelete='CASCADE'))
        urunresmi = db.Column(db.String(80))
        urunFiyati = db.Column(db.Integer)
        markaId = db.Column(db.Integer(), db.ForeignKey('markalar.markaId', ondelete='CASCADE'))

        def __init__(self, kategori_id, urun_ozellikleri, urun_fiyati):
            self.kategori_id = kategori_id
            self.urun_ozellikleri = urun_ozellikleri
            self.urun_fiyati = urun_fiyati

    class kategori(db.Model):
        __tablename__ = 'kategori'
        kategoriId = db.Column(db.Integer, primary_key=True)
        kategori_adi = db.Column(db.String(80))

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

    class markalar(db.Model):
        __tablename__ = 'markalar'
        markaId = db.Column(db.Integer, primary_key=True)
        markaadi = db.Column(db.String(80))
        marka_modeli = db.Column(db.String(80))

        def __init__(self, markaadi, marka_modeli):
            self.markaadi = markaadi
            self.marka_modeli = marka_modeli

    class musteri(db.Model):
        __tablename__ = 'musteri'
        musteriId = db.Column(db.Integer, primary_key=True)
        musteriadi = db.Column(db.String(80))
        musterisoyadi = db.Column(db.String(80))
        mail = db.Column(db.String(80), unique=True)
        telefon = db.Column(db.Integer)
        sifre = db.Column(db.String(80))
        il = db.Column(db.String(80))
        ilce = db.Column(db.String(80))
        kullaniciId = db.Column(db.Integer(), db.ForeignKey('Kullanici.id', ondelete='CASCADE'))

        def __init__(self, musteriadi, musterisoyadi, mail, telefon, sifre, il, ilce, kullaniciId):
            self.musteriadi = musteriadi
            self.musterisoyadi = musterisoyadi
            self.mail = mail
            self.telefon = telefon
            self.sifre = sifre
            self.il = il
            self.ilce = ilce
            self.kullaniciId = kullaniciId

    class siparis(db.Model):
        __tablename__ = 'siparis'
        siparisId = db.Column(db.Integer, primary_key=True)
        musteriId = db.Column(db.Integer(), db.ForeignKey('musteri.musteriId', ondelete='CASCADE'))
        urunId = db.Column(db.Integer(), db.ForeignKey('urunler.urun_id', ondelete='CASCADE'))
        siparisno = db.Column(db.Integer)
        siparisTarihi = db.Column(db.Integer)
        odemeId = db.Column(db.Integer())

        def __init__(self, musteriId, urunId, siparisno, siparisTarihi, odemeId):
            self.musteriId = musteriId
            self.urunId = urunId
            self.siparisno = siparisno
            self.siparisTarihi = siparisTarihi
            self.odemeId = odemeId

    user_manager = UserManager(app, db, Kullanici)
    db.create_all()

	if not Kullanici.query.filter(Kullanici.email == request.form['email']).first():
        kullanici = Kullanici(
            email=request.form['email'],
            tarih=datetime.datetime.utcnow(),
            sifre=user_manager.hash_password(request.form['sifre']),
        )
        

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not Kullanici.query.filter(Kullanici.email == '*****@*****.**').first():
        kullanici = Kullanici(
            email='*****@*****.**',
            tarih=datetime.datetime.utcnow(),
            sifre=user_manager.hash_password('admin'),
        )

    @app.route('/')
    def anasayfa():
        return render_template('index.html')

    @app.route('/kayit', methods=['GET', 'POST'])
    def kayit():
        if request.method == 'POST':
            mail = request.form['email']
            parola = request.form['sifre']
            yeniKullanici = Kullanici(email=mail, sifre=parola)
            db.session.add(yeniKullanici)
            db.session.commit()
            if yeniKullanici is not None:
                mesaj = "Kayıt Başarıyla Sağlanmıştır."
                return render_template("index.html", mesaj=mesaj)
        else:
            return render_template('kayit.html')

    @app.route('/uye', methods=['GET', 'POST'])
    def uye():
        return render_template("uyeGirisi.html")

    @app.route('/giris', methods=['GET', 'POST'])
    def giris():
		session['giris_yap']=False
		if request.method=='GET':
			if(session['giris_yap']==True):
				return redirect(url_for('index'))
			else:
				return render_template('uyeGirisi.html')
        else:
示例#17
0
def init_user_manager(app, login_view, forgot_password_view=None):

    if forgot_password_view is None:
        forgot_password_view = forgot_password

    def hash_password(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def generate_password_hash(self, password):
        _md5 = hashlib.md5()
        _md5.update(password)
        return _md5.hexdigest()

    def verify_password(self, password, user):
        auth_method = getattr(request, 'auth_method', None)
        if auth_method == 'basic':
            return self.hash_password(password) == user.password
        else:
            return False

    def login_manager_usercallback(account_id):
        account_id = int(account_id) if isinstance(account_id,
                                                   basestring) else account_id
        return Account.from_cache_by_id(account_id)

    def password_validator(form, field):
        """ Password must have one lowercase letter, one uppercase letter and one digit."""
        # Convert string to list of characters
        password = list(field.data)
        password_length = len(password)

        # Count lowercase, uppercase and numbers
        lowers = uppers = digits = 0
        for ch in password:
            if ch.islower(): lowers += 1
            if ch.isupper(): uppers += 1
            if ch.isdigit(): digits += 1

        # Password must have one lowercase letter, one uppercase letter and one digit
        is_valid = password_length >= 6 and lowers and uppers and digits
        if not is_valid:
            raise ValidationError(u'密码至少超过6位,其中要求包含一个大写字母,一个小写字母和一个数字')

    class ResetPasswordForm(Form):
        new_password = PasswordField(
            u'新密码', validators=[validators.DataRequired(u'新密码不能为空')])
        retype_password = PasswordField(u'再次输入新密码',
                                        validators=[
                                            validators.EqualTo(
                                                'new_password',
                                                message=u'两次输入的新密码匹配')
                                        ])
        next = HiddenField()
        submit = SubmitField(u'修改密码')

        def validate(self):
            # Use feature config to remove unused form fields
            user_manager = current_app.user_manager
            if not user_manager.enable_retype_password:
                delattr(self, 'retype_password')
            # Add custom password validator if needed
            has_been_added = False
            for v in self.new_password.validators:
                if v == user_manager.password_validator:
                    has_been_added = True
            if not has_been_added:
                self.new_password.validators.append(
                    user_manager.password_validator)
            # Validate field-validators
            if not super(ResetPasswordForm, self).validate():
                return False
            # All is well
            return True

    from .tasks import send_email

    def async_send_email(recipient, subject, html_message, text_message):
        send_email.delay(recipient, subject, html_message, text_message)

    db_adapter = SQLAlchemyAdapter(db, Account, UserAuthClass=AccountBasicAuth)
    user_manager = UserManager(
        db_adapter,
        login_view_function=login_view,
        forgot_password_view_function=forgot_password_view,
        reset_password_form=ResetPasswordForm,
        password_validator=password_validator,
        send_email_function=async_send_email)
    user_manager.init_app(app)
    user_manager.hash_password = hash_password.__get__(user_manager,
                                                       UserManager)
    user_manager.generate_password_hash = generate_password_hash.__get__(
        user_manager, UserManager)
    user_manager.verify_password = verify_password.__get__(
        user_manager, UserManager)
    user_manager.login_manager.user_callback = login_manager_usercallback
    orig_unauthenticated_view_function = user_manager.unauthenticated_view_function

    def unauthenticated_view_function():
        if request.is_xhr:
            return jsonify({
                'success': False,
                'error_code': errors.user_unauthenticated
            })
        else:
            return orig_unauthenticated_view_function()

    setattr(user_manager, 'unauthenticated_view_function',
            unauthenticated_view_function)

    orig_unauthorized_view_function = user_manager.unauthorized_view_function

    def unauthorized_view_function():
        if request.is_xhr:
            return jsonify({
                'success': False,
                'error_code': errors.operation_unauthorized
            })
        else:
            return orig_unauthorized_view_function()

    setattr(user_manager, 'unauthorized_view_function',
            unauthorized_view_function)
示例#18
0
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(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)
    # @babel.localeselector
    #def get_locale():
    #   if request.args.get('lang'):
    #       session['lang'] = request.args.get('lang')
    #       return session.get('lang', 'tr')

    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!

    class User(db.Model, UserMixin):
        def allowed(self, access_level):
            return self.access >= access_level

        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'),
                          nullable=False,
                          unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'),
                              nullable=False,
                              server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model

    class Gonderi(db.Model):
        __tablename__ = 'gonderiler'
        id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        baslik = db.Column(db.String(40))
        baslikk = db.Column(db.String(40))
        govde = db.Column(db.String(140))
        timestamp = db.Column(db.DateTime,
                              index=True,
                              default=datetime.datetime.utcnow())
        user_id = db.Column(db.Integer,
                            db.ForeignKey('users.id', ondelete='CASCADE'))

    class Otel(db.Model):
        __tablename__ = 'Otel'
        id = db.Column(db.Integer, autoincrement=True, primary_key=True)
        otel = db.Column(db.String(40))
        otelpuan = db.Column(db.String(40))
        otelf = db.Column(db.String(40))

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

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    class Sepet:
        urunler = {}

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()
    engine = create_engine('sqlite:///basic_app.sqlite')
    meta = MetaData(engine, reflect=True)
    table = meta.tables['gonderiler']
    table_otel = meta.tables['Otel']

    @user_logged_in.connect_via(app)
    def _after_login_hook(sender, user, **extra):
        sender.logger.info('user logged in')
        global sepet
        sepet = Sepet()

    @user_logged_out.connect_via(app)
    def _after_logout_hook(sender, user, **extra):
        sender.logger.info('user logged out')
        #global sepet
        #del sepet

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template('anasayfa.html')

    @app.route(
        '/sepet_islemleri', methods=['POST', 'GET']
    )  # /otel_ekle rotasını oluşturuyoruz,post ve get metotlarını kullanacağımızı belirtiyoruz.
    @login_required  # Kullanıcı girişi gerekli tanımlamasını yapıyoruz.
    def sepet_islemleri():
        global sepet  #sepet değişkenini tanımlıyoruz.
        sepet = Sepet()  #sepet değişkenimizi Sepet() Class'ına eşitliyoruz.
        db_uri = 'sqlite:///basic_app.sqlite'  # SQLITE Bağlantımız.
        engine = create_engine(db_uri)  #db_uri çalıştırıyoruz.
        conn = engine.connect()  # Bağlantıyı açıyoruz.

        if request.method == 'POST':  # If bloku ile çağırılan metodun metodunun 'POST' olma durumunu kontrol ediyoruz.
            try:
                oid = request.form[
                    'otelID']  #Bağlantılı html sayfasından name='otelID' olan içeriği oid değişkenine atıyoruz.
                qry = db.session.query(Otel).filter(Otel.id == oid).all(
                )  # qry isimli sorgu oluşturuyoruz ve bu sorguda Otel tablosunun 'otelid'si oid değişkenimize eşit olanı çekiyoruz.
                sepet.urunler[
                    oid] = qry  # 1-1 indexe oid 1-2 indexe qry sorgumuzu atıyoruz
            except:  # Olası hatalar için except bloku.
                msg = "Otel ekleme işlemi sırasında hata oluştu"
        return render_template(
            '/sepeti_gor.html', sepet_ici=sepet.urunler
        )  # 'sepeti_gor.html' template'ini sepet_ici=sepet.urunler atamasıyla geri döndürüyoruz.

    @app.route('/admin_page')
    @roles_required('Admin')  #Use of @roles_required decorator
    def admin_page():
        return render_template('anasayfa-admin.html')

    #------------------------------------------------------------------#
    @app.route('/otel_sayfasi')  # /otel_sayasi roasını oluşturuyoruz.
    @roles_required('Admin')  # 'Admin' rolü gerekli tanımlamasını yapıyoruz.
    def otel_sayfasi():
        return render_template(
            'otel-ekle.html'
        )  # 'otel-ekle.html' template'ini geri döndürüyoruz.

    @app.route(
        '/otel_ekle', methods=['POST', 'GET']
    )  # /otel_ekle rotasını oluşturuyoruz,post ve get metotlarını kullanacağımızı belirtiyoruz.
    @roles_required('Admin')  # 'Admin' rolü gerekli tanımlamasını yapıyoruz.
    def otel_ekle():
        if request.method == 'POST':  # If bloku ile çağırılan metodun metodunun 'POST' olma durumunu kontrol ediyoruz.
            try:
                otel = request.form[
                    'otel']  #Bağlantılı html sayfasından name='otel' olan içeriği otel değişkenine atıyoruz.
                otelPu = request.form[
                    'otelP']  #Bağlantılı html sayfasından name='otelP' olan içeriği otelPu değişkenine atıyoruz.
                otelFi = request.form[
                    'otelF']  #Bağlantılı html sayfasından name='otelF' olan içeriği otelFi değişkenine atıyoruz.

                otelE = Otel(  # otelE değişkeninde 'Otel' tablosunun otel,otelpuan,otelf alanlarına çektiğimiz verileri giriyoruz.
                    otel=otel,
                    otelpuan=otelPu,
                    otelf=otelFi)
                db.session.add(
                    otelE)  #otelE değişkenini veritabanımıza ekliyoruz.
                db.session.commit()
                msg = "Otel başarı ile eklendi"
            except:  # Olası hatalar için except bloku.
                msg = "Otel ekleme işlemi sırasında hata oluştu"

            finally:  # Her iki koşulda da çalışacak blok.
                return render_template("otel-ekle.html", msg=msg)

    @app.route('/otel_listele')
    def otel_listele():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        selectt = db.select([
            table_otel.c.id, table_otel.c.otel, table_otel.c.otelpuan,
            table_otel.c.otelf
        ])
        rows = conn.execute(selectt)
        return render_template("otel_listele.html", rows=rows)

    @app.route('/otel_listele_admin')
    def otel_listele_admin():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        selectt = db.select([
            table_otel.c.id, table_otel.c.otel, table_otel.c.otelpuan,
            table_otel.c.otelf
        ])
        rows = conn.execute(selectt)
        return render_template("otel_listele_admin.html", rows=rows)

    @app.route('/otel_sil', methods=['POST', 'GET'])
    @roles_required('Admin')
    def otel_sil():
        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        selectt = db.select([
            table_otel.c.id, table_otel.c.otel, table_otel.c.otelpuan,
            table_otel.c.otelf
        ])
        rows = conn.execute(selectt)
        if request.method == 'POST':
            try:
                otelid = request.form['otelID']
                del_st = table_otel.delete().where(table_otel.c.id == otelid)
                res = conn.execute(del_st)
                sel_st = table_otel.select()
                msg = "otel başarı ile silindi"
            except:
                msg = "otel silme işlemi sırasında hata oluştu"
            finally:
                return redirect(url_for('otel_sil'))
        return render_template("otel_sil.html", rows=rows)

    @app.route('/otel_sil_hepsi', methods=['POST', 'GET'])
    @roles_required('Admin')
    def otel_sil_hepsi():

        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        selectt = db.select([
            table_otel.c.id, table_otel.c.otel, table_otel.c.otelpuan,
            table_otel.c.otelf
        ])
        rows = conn.execute(selectt)
        if request.method == 'POST':
            try:
                del_st = table_otel.delete()
                res = conn.execute(del_st)
                msg = "otel başarı ile silindi"
            except:
                msg = "otel silme işlemi sırasında hata oluştu"
            finally:
                return redirect(url_for('otel_sil'))
        return render_template("otel_sil.html", rows=rows)

    @app.route('/otel_guncelle', methods=['POST', 'GET'])
    @roles_required('Admin')
    def otel_guncelle():

        db_uri = 'sqlite:///basic_app.sqlite'
        engine = create_engine(db_uri)
        conn = engine.connect()
        selectt = db.select([
            table_otel.c.id, table_otel.c.otel, table_otel.c.otelpuan,
            table_otel.c.otelf
        ])
        rows = conn.execute(selectt)
        if request.method == 'POST':
            try:
                oid = request.form['id']
                otelY = request.form['otelY']
                otelFiyat = request.form['otelYF']
                otelPuan = request.form['otelYP']
                upt_st = update(table_otel).where(
                    table_otel.c.id == oid).values(otel=otelY,
                                                   otelf=otelFiyat,
                                                   otelpuan=otelPuan)
                res = conn.execute(upt_st)
                msg = "otel başarı ile güncellendi"
            except:
                msg = "otel güncelleme işlemi sırasında hata oluştu"
            finally:
                return redirect('otel_guncelle')
        return render_template("otel_guncelle.html", rows=rows)

    return app
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(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)
    # @babel.localeselector
    #def get_locale():
    #   if request.args.get('lang'):
    #       session['lang'] = request.args.get('lang')
    #       return session.get('lang', 'tr')

    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'),
                          nullable=False,
                          unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'),
                              nullable=False,
                              server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()
示例#20
0
app = Flask(__name__)
app.config.from_object('spelinkyapp.config')

babel = Babel(app)
csrf = CsrfProtect(app)
mail = Mail(app)
admin = Admin(app)

api_manager = APIManager(app, flask_sqlalchemy_db=db)

db.init_app(app)
with app.app_context():
    db.create_all()
    db_adapter = SQLAlchemyAdapter(db, User)
    user_manager = UserManager(db_adapter, app)
    if not User.query.filter_by(username='******').first():
        user1 = User(username='******', email='*****@*****.**', active=True,
                     password=user_manager.hash_password('password'))
        db.session.add(user1)
        db.session.commit()

admin.add_view(ModelView(Link, db.session))


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

from spelinkyapp import views
views.generate_apis(api_manager)
示例#21
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
    mail = Mail(app)                                # Initialize Flask-Mail
    db = SQLAlchemy(app)                            # Initialize Flask-SQLAlchemy

    # Define User model. Make sure to add flask.ext.user UserMixin!!
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        user_profile_id = db.Column(db.Integer(), db.ForeignKey('user_profile.id', ondelete='CASCADE'))

        # User authentication information
        username = db.Column(db.String(50), nullable=False, unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')
        reset_password_token = db.Column(db.String(100), nullable=False, server_default='')
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='0')

        # User email information
        email = db.Column(db.String(255), nullable=False, unique=True)
        confirmed_at = db.Column(db.DateTime())

        # Relationships
        user_profile = db.relationship('UserProfile', uselist=False, foreign_keys=[user_profile_id])

    class UserProfile(db.Model):
        id = db.Column(db.Integer, primary_key=True)

        # User information
        first_name = db.Column(db.String(50), nullable=False, default='')
        last_name = db.Column(db.String(50), nullable=False, default='')

        # Relationships
        roles = db.relationship('Role', secondary='user_roles',
                backref=db.backref('users', lazy='dynamic'))

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

    # Define UserRoles model
    class UserRoles(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        user_profile_id = db.Column(db.Integer(), db.ForeignKey('user_profile.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE'))

    # Reset all the database tables
    db.create_all()

    # Setup Flask-User
    db_adapter = SQLAlchemyAdapter(db,  User, UserProfileClass=UserProfile)
    user_manager = UserManager(db_adapter, app)

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

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
                <h2>Home page</h2>
                <p>This page can be accessed by anyone.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    # The Members page is only accessible to authenticated users
    @app.route('/members')
    @login_required                                 # Use of @login_required decorator
    def members_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
                <h2>Members page</h2>
                <p>This page can only be accessed by authenticated users.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    # The Special page requires a user with 'special' and 'sauce' roles or with 'special' and 'agent' roles.
    @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>Special Page</h2>
                <p>This page can only be accessed by user007.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    return app
示例#22
0
# Password hashing
from flask_bcrypt import Bcrypt
bcrypt = Bcrypt(app)

app.config.from_object('config')
db = SQLAlchemy(app)

from app import views, models

# LoginManager parts
import os
from flask.ext.login import LoginManager
from config import basedir


# Setup Flask-User
from flask_user import login_required, UserManager, UserMixin, SQLAlchemyAdapter
from app.models import User, Role, Abstract

db_adapter = SQLAlchemyAdapter(db, User)        # Register the User model
user_manager = UserManager(db_adapter, app)     # Initialize Flask-User

from datetime import date
today = date.today()

if not User.query.filter(User.email=='*****@*****.**').first():
    u = User(email='*****@*****.**', affiliation='University of Oxford', first_name='Romesh',last_name='Abeysuriya',active=True,password=user_manager.hash_password('Asdf11'),confirmed_at=today,is_admin=True)
    u.roles.append(Role(name='admin'))
    db.session.add(u)
    db.session.commit()
示例#23
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
    mail = Mail(app)  # Initialize Flask-Mail
    db = SQLAlchemy(app)  # Initialize Flask-SQLAlchemy

    # Define the User data model. Make sure to add flask.ext.user UserMixin!!
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)

        # User authentication information
        username = db.Column(db.String(50), nullable=False, unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')
        reset_password_token = db.Column(db.String(100),
                                         nullable=False,
                                         server_default='')

        # User email information
        email = db.Column(db.String(255), nullable=False, unique=True)
        confirmed_at = db.Column(db.DateTime())

        # User information
        is_enabled = db.Column(db.Boolean(),
                               nullable=False,
                               server_default='0')
        first_name = db.Column(db.String(100),
                               nullable=False,
                               server_default='')
        last_name = db.Column(db.String(100),
                              nullable=False,
                              server_default='')

        # Relationships
        roles = db.relationship('Role',
                                secondary='user_roles',
                                backref=db.backref('users', lazy='dynamic'))

        def is_active(self):
            return self.is_enabled

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

    # Define the UserRoles data model
    class UserRoles(db.Model):
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('user.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('role.id', ondelete='CASCADE'))

    # 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='*****@*****.**',
                     is_enabled=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 Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
                <h2>Home page</h2>
                <p>This page can be accessed by anyone.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    # The Members page is only accessible to authenticated users
    @app.route('/members')
    @login_required  # Use of @login_required decorator
    def members_page():
        return render_template_string("""
            {% extends "base.html" %}
            {% block content %}
                <h2>Members page</h2>
                <p>This page can only be accessed by authenticated users.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    # The Special page requires a user with 'special' and 'sauce' roles or with 'special' and 'agent' roles.
    @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>Special Page</h2>
                <p>This page can only be accessed by user007.</p><br/>
                <p><a href={{ url_for('home_page') }}>Home page</a> (anyone)</p>
                <p><a href={{ url_for('members_page') }}>Members page</a> (login required)</p>
                <p><a href={{ url_for('special_page') }}>Special page</a> (login with username 'user007' and password 'Password1')</p>
            {% endblock %}
            """)

    return app
示例#24
0
# Setup Flask-User
from flask_user import login_required, UserManager, UserMixin, SQLAlchemyAdapter
from app.models import User, Role, Abstract

db_adapter = SQLAlchemyAdapter(db, User)  # Register the User model
user_manager = UserManager(db_adapter, app)  # Initialize Flask-User

from datetime import date
today = date.today()

names = [
    'Siobhan Seale', 'Marcel Seegmiller', 'Lita Alessi', 'Wiley Spight',
    'Minerva Rettig', 'Iluminada Lipari', 'Moses Pidgeon', 'Tisa Dedeaux',
    'Francisco Kurland', 'Tammara Sinner', 'Charles Strong', 'Zena Morfin',
    'Marlin Finklea', 'Josefine Kilbane', 'Sina Hunter', 'Karren Dunkley',
    'Shea Cutter', 'Eugenie Persinger', 'Velia Heaton'
]
for n in names:
    ns = n.split()
    u = User(email='*****@*****.**' % (ns[0], ns[1]),
             affiliation='University of Oxford',
             first_name=ns[0],
             last_name=ns[1],
             active=True,
             password=user_manager.hash_password('a'),
             confirmed_at=today,
             is_admin=False)
    db.session.add(u)
    db.session.commit()
示例#25
0
def create_app():
    """ Flask application factory """

    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__ + '.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(app)

    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active',
                           db.Boolean(),
                           nullable=False,
                           server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        username = db.Column(db.String(255, collation='NOCASE'),
                             nullable=False,
                             unique=True)
        password = db.Column(db.String(255), nullable=False, server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')
        transactions = db.relationship('Transactions',
                                       backref=backref('users', uselist=False))

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(),
                            db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(),
                            db.ForeignKey('roles.id', ondelete='CASCADE'))

    class Transactions(db.Model):
        __tablename__ = 'transactions'
        id = db.Column(db.Integer(), primary_key=True)
        company = db.Column(db.String(100, collation='NOCASE'),
                            nullable=False,
                            server_default='')
        amount = db.Column(db.Integer())
        status = db.Column(db.Integer())
        user_id = db.Column(db.Integer,
                            db.ForeignKey('users.id'),
                            nullable=False)

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create 'user' user with user role, append two associated transaction records
    if not User.query.filter(User.username == 'user').first():
        user = User(
            username='******',
            password=user_manager.hash_password('Password1'),
        )

        user.transactions.append(
            Transactions(company='Apple', amount=10, status=0))
        user.transactions.append(
            Transactions(company='Apple', amount=20, status=0))
        db.session.add(user)
        db.session.commit()

    # Create 'admin' user with 'Admin' role
    if not User.query.filter(User.username == 'admin').first():
        user = User(
            username='******',
            password=user_manager.hash_password('admin'),
        )
        user.roles.append(Role(name='Admin'))
        db.session.add(user)
        db.session.commit()

    # Create 'comp' user with 'comp' role
    if not User.query.filter(User.username == 'comp').first():
        user = User(
            username='******',
            password=user_manager.hash_password('comp'),
        )
        user.roles.append(Role(name='Compliance'))
        db.session.add(user)
        db.session.commit()

    # Create 'user_test' user with 'user' role
    if not User.query.filter(User.username == 'user_test').first():
        user = User(
            username='******',
            password=user_manager.hash_password('user_test'),
        )
        user.roles.append(Role(name='User'))
        db.session.add(user)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():

        return render_template('home_page.html')

    # The user page requires an 'user' role.
    @app.route('/user')
    @roles_required('User')
    def user_page():
        user_id = current_user.id

        pending = Transactions.query.filter(Transactions.user_id == user_id,
                                            Transactions.status == 0).all()
        approved = Transactions.query.filter(Transactions.user_id == user_id,
                                             Transactions.status == 1).all()
        rejected = Transactions.query.filter(Transactions.user_id == user_id,
                                             Transactions.status == 2).all()

        return render_template('user_page.html',
                               pending=pending,
                               approved=approved,
                               rejected=rejected)

    #user submits transaction record
    @app.route('/add_trans', methods=['POST'])
    def add_trans():
        company = request.form['company']
        num_shares = request.form['num_shares']

        user = User.query.filter(User.id == current_user.id).first()
        user.transactions.append(
            Transactions(company=company, amount=num_shares, status=0))
        db.session.commit()

        flash("Transaction Submitted!")

        return redirect(url_for('user_page'))

    # The compliance page requires an 'compliance' role.
    @app.route('/compliance')
    @roles_required('Compliance')
    def member_page():
        pending = Transactions.query.filter(Transactions.status == 0).all()
        approved = Transactions.query.filter(Transactions.status == 1).all()
        rejected = Transactions.query.filter(Transactions.status == 2).all()

        return render_template('compliance_page.html',
                               pending=pending,
                               approved=approved,
                               rejected=rejected)

    #compliance can reject/approve transactions, reload page after submitting decision
    @app.route('/decide_trans', methods=['POST'])
    def decide_trans():
        trans_id = request.form['trans_id']
        decision = 1 if request.form['submit_button'] == "Approve" else 2

        trans = Transactions.query.filter(Transactions.id == trans_id).first()
        trans.status = decision
        db.session.commit()

        pending = Transactions.query.filter(Transactions.status == 0).all()
        approved = Transactions.query.filter(Transactions.status == 1).all()
        rejected = Transactions.query.filter(Transactions.status == 2).all()

        return render_template('compliance_page.html',
                               pending=pending,
                               approved=approved,
                               rejected=rejected)

    # The Admin page requires an 'Admin' role.
    @app.route('/admin')
    @roles_required('Admin')
    def admin_page():
        return render_template('admin_page.html')

    # admin can add new user/compliance, show 'user exists' if username has duplicates
    @app.route('/add_new', methods=['POST'])
    def add_new():
        role = request.form['role']
        username = request.form['username']
        password = request.form['password']

        if not User.query.filter(User.username == username).first():
            user = User(
                username=username,
                password=user_manager.hash_password(password),
            )
            stored_role = Role.query.filter(Role.name == role).first()

            user.roles.append(stored_role)
            db.session.add(user)
            db.session.commit()
            return render_template_string(role)
        else:
            return render_template_string('user exists')

    return app
示例#26
0
def create_app():
    """ Flask application factory """
    
    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__+'.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(app)

    # Initialize Flask-SQLAlchemy
    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'), nullable=False, unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()

    # The Home page is accessible to anyone
    @app.route('/')
    def home_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Home page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    # The Members page is only accessible to authenticated users
    @app.route('/members')
    @login_required    # Use of @login_required decorator
    def member_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Members page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    # The Admin page requires an 'Admin' role.
    @app.route('/admin')
    @roles_required('Admin')    # Use of @roles_required decorator
    def admin_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Admin Page{%endtrans%}</h2>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Register{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Sign in{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Home Page{%endtrans%}</a> (accessible to anyone)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Member Page{%endtrans%}</a> (login_required: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin Page{%endtrans%}</a> (role_required: [email protected] / Password1')</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Sign out{%endtrans%}</a></p>
                {% endblock %}
                """)

    return app
def create_app():
    
    
    # Create Flask app load app.config
    app = Flask(__name__)
    app.config.from_object(__name__+'.ConfigClass')

    # Initialize Flask-BabelEx
    babel = Babel(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)
    # @babel.localeselector
    #def get_locale():
    #   if request.args.get('lang'):
    #       session['lang'] = request.args.get('lang')
    #       return session.get('lang', 'tr')

    db = SQLAlchemy(app)

    # Define the User data-model.
    # NB: Make sure to add flask_user UserMixin !!!
    class User(db.Model, UserMixin):
        __tablename__ = 'users'
        id = db.Column(db.Integer, primary_key=True)
        active = db.Column('is_active', db.Boolean(), nullable=False, server_default='1')

        # User authentication information. The collation='NOCASE' is required
        # to search case insensitively when USER_IFIND_MODE is 'nocase_collation'.
        email = db.Column(db.String(255, collation='NOCASE'), nullable=False, unique=True)
        email_confirmed_at = db.Column(db.DateTime())
        password = db.Column(db.String(255), nullable=False, server_default='')

        # User information
        first_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')
        last_name = db.Column(db.String(100, collation='NOCASE'), nullable=False, server_default='')

        # Define the relationship to Role via UserRoles
        roles = db.relationship('Role', secondary='user_roles')

    # Define the Role data-model
    class Role(db.Model):
        __tablename__ = 'roles'
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(50), unique=True)

    # Define the UserRoles association table
    class UserRoles(db.Model):
        __tablename__ = 'user_roles'
        id = db.Column(db.Integer(), primary_key=True)
        user_id = db.Column(db.Integer(), db.ForeignKey('users.id', ondelete='CASCADE'))
        role_id = db.Column(db.Integer(), db.ForeignKey('roles.id', ondelete='CASCADE'))

    # Setup Flask-User and specify the User data-model
    user_manager = UserManager(app, db, User)

    # Create all database tables
    db.create_all()

    # Create '*****@*****.**' user with no roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        db.session.add(user)
        db.session.commit()

    # Create '*****@*****.**' user with 'Admin' and 'Agent' roles
    if not User.query.filter(User.email == '*****@*****.**').first():
        user = User(
            email='*****@*****.**',
            email_confirmed_at=datetime.datetime.utcnow(),
            password=user_manager.hash_password('Password1'),
        )
        user.roles.append(Role(name='Admin'))
        user.roles.append(Role(name='Agent'))
        db.session.add(user)
        db.session.commit()


    @app.route('/')
    def home_page():
        return render_template_string("""
                    {% extends "flask_user_layout.html" %}
                    {% block content %}
                        <h2>{%trans%}Ana sayfa{%endtrans%}</h2>
                        <h1>{%trans%}Bu web sitesinin anasayfasıdır{%endtrans%}</h1>
                        <p><a href={{ url_for('user.register') }}>{%trans%}Kayıt ol{%endtrans%}</a></p>
                        <p><a href={{ url_for('user.login') }}>{%trans%}Giriş Yap{%endtrans%}</a></p>
                        <p><a href={{ url_for('home_page') }}>{%trans%}Ana sayfa{%endtrans%}</a> (Herkes erişebilir)</p>
                        <p><a href={{ url_for('member_page') }}>{%trans%}Üye sayfası{%endtrans%}</a> (Giriş gerekli: [email protected] / Password1)</p>
                        <p><a href={{ url_for('admin_page') }}>{%trans%}Admin sayfası{%endtrans%}</a> (Rol gerekli: [email protected] / Password1)</p>
                        <p><a href={{ url_for('user.logout') }}>{%trans%}Çıkış{%endtrans%}</a></p>
                    {% endblock %}
                    """)

        # The Members page is only accessible to authenticated users
    @app.route('/members')
    @login_required    # Use of @login_required decorator
    def member_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Üyeler sayfası {%endtrans%}</h2>
                    <h1>{%trans%}Sisteme giriş yapanlar bu sayfayı görüntüleyebilir{%endtrans%}</h1>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Kayıt ol{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Giriş Yap{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Ana sayfa{%endtrans%}</a> (Herkes erişebilir)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Üye sayfası{%endtrans%}</a> (Giriş gerekli: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin sayfası{%endtrans%}</a> (Rol gerekli: [email protected] / Password1)</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Çıkış{%endtrans%}</a></p>
                {% endblock %}
                """)

    # The Admin page requires an 'Admin' role.
    @app.route('/admin')
    @roles_required('Admin') #Use of @roles_required decorator
    def admin_page():
        return render_template_string("""
                {% extends "flask_user_layout.html" %}
                {% block content %}
                    <h2>{%trans%}Admin Sayfası{%endtrans%}</h2>
                    <h1>{%trans%}Bu yalnızca adminlerin giriş yapabildiği bir sayfadır{%endtrans%}</h1>
                    <p><a href={{ url_for('user.register') }}>{%trans%}Kayıt ol{%endtrans%}</a></p>
                    <p><a href={{ url_for('user.login') }}>{%trans%}Giriş Yap{%endtrans%}</a></p>
                    <p><a href={{ url_for('home_page') }}>{%trans%}Ana sayfa{%endtrans%}</a> (Herkes erişebilir)</p>
                    <p><a href={{ url_for('member_page') }}>{%trans%}Üye sayfası{%endtrans%}</a> (Giriş gerekli: [email protected] / Password1)</p>
                    <p><a href={{ url_for('admin_page') }}>{%trans%}Admin sayfası{%endtrans%}</a> (Rol gerekli: [email protected] / Password1)</p>
                    <p><a href={{ url_for('user.logout') }}>{%trans%}Çıkış{%endtrans%}</a></p>
                {% endblock %}
                """)

    return app
示例#28
0
db_adapter = SQLAlchemyAdapter(db, User, UserInvitationClass=UserInvitation)
user_manager = UserManager(db_adapter, app)


@user_registered.connect_via(app)
def after_registered_hook(sender, user, user_invite):
    sender.logger.info("USER REGISTERED")

@user_sent_invitation.connect_via(app)
def after_invitation_hook(sender, **extra):
    sender.logger.info("USER SENT INVITATION")

# Create user admin default
if not User.query.filter(User.username==os.getenv('ADMIN_USER')).first():
        user1 = User(username=os.getenv('ADMIN_USER'), email=os.getenv('ADMIN_EMAIL'), is_enabled=True,
                password=user_manager.hash_password(os.getenv('ADMIN_PASSWORD')))
        user1.roles.append(Role(name='admin'))
        db.session.add(user1)
        db.session.commit()

# This part above is based on the flask-user example under BSD license

# Blueprint
admin = Blueprint('admin', __name__, template_folder='./templates', static_folder="./static", static_url_path="/static")

""" 
## Add addons
from ..addon_1 import addon_1 as addon_1_blueprint

def register_sub_blueprint_admin(app, url_prefix_parent="/admin"):
    app.register_blueprint(data_task_blueprint, url_prefix=url_prefix_parent+"/data_task")
示例#29
0
dropzone = Dropzone(app)

# Setup Flask-User and specify the User dataset-model
user_manager = UserManager(app, db, User)

# Create all database tables
db.create_all()

# Create '*****@*****.**' user with no roles
if not User.query.filter(User.email == '*****@*****.**').first():
    user = User(
        username='******',
        email='*****@*****.**',
        email_confirmed_at=datetime.datetime.utcnow(),
        password=user_manager.hash_password('Password1'),
    )
    db.session.add(user)
    db.session.commit()

# Create '*****@*****.**' user with 'Admin' and 'Agent' roles
if not User.query.filter(User.email == '*****@*****.**').first():
    user = User(
        username='******',
        email='*****@*****.**',
        email_confirmed_at=datetime.datetime.utcnow(),
        password=user_manager.hash_password('Password1'),
    )
    user.roles.append(Role(name='Admin'))
    user.roles.append(Role(name='Agent'))
    db.session.add(user)
示例#30
0
文件: routes.py 项目: Zichis/loanapp
from loan.functions import modify_home_ownership, modify_purpose, modify_term, modify_time_of_employment

user_manager = UserManager(app, db, User)
db_manager = DBManager(app,
                       db,
                       User,
                       UserEmailClass=None,
                       UserInvitationClass=None,
                       RoleClass=Role)

db.create_all()

if len(User.query.all()) < 1:
    user = User(username='******',
                email='*****@*****.**',
                password=user_manager.hash_password('asdfghjkl'),
                active=True)

    user.roles.append(Role(name='Admin'))

    db.session.add(user)
    db.session.commit()

    profile = Profile(firstname='Peter',
                      middlename='Mike',
                      lastname='Ahueze',
                      gender='male',
                      nationality='Nigerian',
                      user_id=user.id)

    db.session.add(profile)