示例#1
0
def testapp(request):
    app = create_app('impression.settings.TestConfig')
    client = app.test_client()

    db.app = app
    db.create_all()

    if getattr(request.module, "create_user", True):
        admin = User(username="******", password="******")
        admin.insert()
        my_role = Role(name='admin')
        my_role.insert()
        admin.add_roles('admin')

        non_admin = User(username="******", password="******")
        non_admin.insert()

        safe_commit()

    def teardown():
        db.session.remove()
        db.drop_all()

    request.addfinalizer(teardown)

    return client
示例#2
0
def sample_data():
    """
    Creates a set of sample data
    """
    from impression.models import Role
    user = User(username="******", password="******")

    my_role = Role(name='admin')
    my_role.add_abilities('create_users', 'delete_users')

    user.add_roles('admin', 'superadmin')

    db.session.add(user)
    db.session.add(my_role)
    db.session.commit()
示例#3
0
def setup():
    import shlex
    import subprocess
    user_count = User.count()
    # print(user_count)
    if user_count > 0:
        # We already have a user. No running setup.
        return redirect(url_for('.index'))

    if request.method == 'POST':
        payload = get_payload(request)
        if payload.get('email') and payload.get('password'):

            user = User(username=payload.get('email'),
                        password=payload.get('password'),
                        firstname=payload.get('firstname'),
                        lastname=payload.get('lastname'))

            my_role = Role(name='admin')
            my_role.add_abilities('create_users', 'delete_users', 'create_content',
                                  'delete_content', 'upload_files', 'delete_files',
                                  'change_settings')

            user.add_roles('admin', 'superadmin')

            login_user(user)

            args = shlex.split("alembic history")
            p = subprocess.Popen(args, stdout=subprocess.PIPE)
            output, error = p.communicate()
            data = output.split('\n')
            latest_alembic = None
            for row in data:
                if "(head)" in row:
                    cols = row.split(" ")
                    latest_alembic = cols[2].strip()

            if latest_alembic:
                print("Stamping with latest Alembic revision: %s" %
                      latest_alembic)
                args = shlex.split("alembic stamp %s" % latest_alembic)
                subprocess.Popen(args, stdout=subprocess.PIPE)

            from impression.upgrade import THEMES, SYNTAX_THEMES
            # Create some system settings
            Setting(name='blog-title', vartype='str', system=True).insert()
            Setting(name='blog-copyright', vartype='str', system=True).insert()
            Setting(name='blog-theme', vartype='str',
                    system=True, value='impression').insert()
            Setting(name='posts-per-page', vartype='int',
                    system=True, value=4).insert()
            Setting(name='bootstrap-theme', vartype='str', system=True,
                    value='sandstone', allowed=json.dumps(THEMES)).insert()
            Setting(name='syntax-highlighting-theme', vartype='str', system=True,
                    value='monokai.css', allowed=json.dumps(SYNTAX_THEMES)).insert()
            Setting(name='custom-front-page',
                    vartype='str', system=True).insert()
            Setting(name='allowed-extensions', vartype='list', system=True,
                    value="['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'tiff']").insert()
            Setting(name='upload-directory', vartype='str', system=True, value='uploads/').insert()
            Setting(name='max-file-size', vartype='int',
                    system=True, value=16777216).insert()
            safe_commit()
            flash("Initial Setup Complete", "success")
            return redirect(url_for('admin_controller.admin_settings'))

    return render('setup.html')