Exemple #1
0
def image_help():
    embed = request.args.get('embed', '')

    http_server_url = external_url_for('index')
    server_url_idx = http_server_url.find(':') + 1
    server_url = http_server_url[server_url_idx:]

    help_image_attrs = ImageAttrs('test_images/cathedral.jpg')
    logo_image_attrs = ImageAttrs('test_images/quru110.png')
    logo_pad_image_attrs = ImageAttrs('test_images/quru470.png')

    available_formats = image_engine.get_image_formats()
    available_formats.sort()
    available_templates = image_engine.get_template_names()
    available_templates.sort()
    available_iccs = {}
    icc_types = image_engine.get_icc_profile_colorspaces()
    for cspace in icc_types:
        available_iccs[cspace] = image_engine.get_icc_profile_names(cspace)
        available_iccs[cspace].sort()

    default_settings_html = render_template(
        'inc_default_settings.html',
        formats=available_formats,
        templates=available_templates,
        iccs=available_iccs
    )

    response = make_response(render_template(
        'image_help.html',
        embed=embed,
        subs={
            '//images.example.com/': server_url,
            'cathedral.jpg': help_image_attrs.filename(with_path=False),
            'buildings': help_image_attrs.folder_path(),
            'quru.png': logo_image_attrs.filename(with_path=False),
            'quru-padded.png': logo_pad_image_attrs.filename(with_path=False),
            'logos': logo_image_attrs.folder_path(),
            'View this page from within QIS to see the'
            ' default image settings for your server.': default_settings_html
        }
    ))
    response.cache_control.public = True
    response.cache_control.max_age = 3600
    return response
Exemple #2
0
def folder_browse():
    from_path = request.args.get('path', '')
    show_files = request.args.get('show_files', '')
    embed = request.args.get('embed', '')
    msg = request.args.get('msg', '')
    if from_path == '':
        from_path = os.path.sep

    db_session = data_engine.db_get_session()
    db_committed = False
    try:
        # This also checks for path existence
        folder_list = get_directory_listing(from_path, True)

        # Auto-populate the folders database
        db_folder = auto_sync_folder(
            from_path,
            data_engine,
            task_engine,
            _db_session=db_session
        )
        db_session.commit()
        db_committed = True

        # Should never happen
        if db_folder is None:
            raise DoesNotExistError(from_path)

        # Require view permission or file admin
        permissions_engine.ensure_folder_permitted(
            db_folder,
            FolderPermission.ACCESS_VIEW,
            get_session_user()
        )

        return render_template(
            'folder_list.html',
            formats=image_engine.get_image_formats(),
            embed=embed,
            msg=msg,
            name=filepath_filename(from_path),
            path=from_path,
            pathsep=os.path.sep,
            parent_path=filepath_parent(from_path),
            folder_list=folder_list,
            show_files=show_files,
            db_info=db_folder,
            db_parent_info=db_folder.parent,
            STATUS_ACTIVE=Folder.STATUS_ACTIVE
        )
    except Exception as e:
        log_security_error(e, request)
        if app.config['DEBUG']:
            raise
        return render_template(
            'folder_list.html',
            embed=embed,
            msg=msg,
            name=filepath_filename(from_path),
            path=from_path,
            err_msg='This folder cannot be viewed: ' + str(e)
        )
    finally:
        try:
            if not db_committed:
                db_session.rollback()
        finally:
            db_session.close()
Exemple #3
0
def browse():
    from_path = request.args.get('path', '')
    if from_path == '':
        from_path = os.path.sep

    # #2475 Default this in case of error in get_directory_listing()
    directory_info = DirectoryInfo(from_path)

    db_session = data_engine.db_get_session()
    db_committed = False
    try:
        directory_info = get_directory_listing(from_path, True)

        # Auto-populate the folders database
        db_folder = auto_sync_folder(
            from_path,
            data_engine,
            task_engine,
            _db_session=db_session
        )
        db_session.commit()
        db_committed = True

        if db_folder is not None:
            # Require view permission or file admin
            permissions_engine.ensure_folder_permitted(
                db_folder,
                FolderPermission.ACCESS_VIEW,
                get_session_user()
            )

        # Remember last path for the Browse and Upload menus
        if directory_info.exists() and db_folder:
            session['last_browse_path'] = from_path

        return render_template(
            'list.html',
            formats=image_engine.get_image_formats(),
            pathsep=os.path.sep,
            timezone=get_timezone_code(),
            directory_info=directory_info,
            folder_name=filepath_filename(from_path),
            db_info=db_folder,
            db_parent_info=db_folder.parent if db_folder else None,
            STATUS_ACTIVE=Folder.STATUS_ACTIVE
        )
    except Exception as e:
        log_security_error(e, request)
        if app.config['DEBUG']:
            raise
        return render_template(
            'list.html',
            directory_info=directory_info,
            err_msg='This folder cannot be viewed: ' + str(e)
        )
    finally:
        try:
            if not db_committed:
                db_session.rollback()
        finally:
            db_session.close()