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
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()
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()