API Reference¶
Connection¶
This module handles the OAuth2 authentication process and maintains the session (/token) information that is required to communicate with the OSF API
It is also responsible for constructing the correct API calls/uris as specified by the OSF for the various types of information that can be requested.
Note
A lot of the functions that are available here have equivalents in the ConnectionManager class. It is recommended to use those functions instead as they are executed asynchronously and are used throughout the rest of the application.
-
QOpenScienceFramework.connection.
api_call
(command, *args)[source]¶ generates and api endpoint. If arguments are required to build the endpoint , they can be specified as extra arguments.
Parameters: command : {‘logged_in_user’, ‘projects’, ‘project_repos’, ‘repo_files’, ‘file_info’}
The key of the endpoint to look up in the api_calls dictionary
Extra arguments passed to this function will be integrated into the API call at specified positions (marked by {}). The formats of the calls are as follows:
logged_in_user: "users/me/"
projects: "users/me/nodes/"
project_repos: "nodes/{}/files/"
repo_files: "nodes/{}/files/{}/"
file_info: "files/{}/"
*args : various (optional)
Optional extra data which is needed to construct the correct api endpoint uri. Check the OSF API documentation for a list of variables that each type of call expects.
Returns: string : The complete uri for the api endpoint.
-
QOpenScienceFramework.connection.
check_for_active_session
()[source]¶ Checks if a session object has been created and raises a RuntimeError otherwise.
-
QOpenScienceFramework.connection.
create_session
()[source]¶ Creates/resets and OAuth 2 session, with the specified data.
-
QOpenScienceFramework.connection.
direct_api_call
(*args, **kwargs)[source]¶ Performs a direct api call. Can be used as the api call is already constructed.
Parameters: api_call: str
The api call to perform
Returns: dict
The dict containing the returned JSON data
Generate the URL at which an OAuth2 token for the OSF can be requested with which OpenSesame can be allowed access to the user’s account.
Returns: str
The complete uri for the api endpoint.
Raises: RuntimeError
When there is no active OAuth2 session.
-
QOpenScienceFramework.connection.
get_logged_in_user
(*args, **kwargs)[source]¶ Gets the currently logged in user’s data
Returns: dict
The dict containing the returned JSON data
-
QOpenScienceFramework.connection.
get_project_repos
(*args, **kwargs)[source]¶ Gets the data of the specified project
Parameters: project_id : str
Reference to the project node on the OSF
Returns: dict
The dict containing the returned JSON data
-
QOpenScienceFramework.connection.
get_repo_files
(*args, **kwargs)[source]¶ Gets the data of the specified repository of the specified project.
Parameters: project_id : str
Reference to the project node on the OSF
repo_name : {‘osfstorage’,’dropbox’,’github’,’figshare’,’s3’,’googledrive’}
The repository to return the data of.
Returns: dict
The dict containing the returned JSON data
-
QOpenScienceFramework.connection.
get_user_projects
(*args, **kwargs)[source]¶ Gets the currently logged in user’s projects
Returns: dict
The dict containing the returned JSON data
Convenience function simply returning OAuth2Session.authorized.
Returns: bool
True is the user is authorized, False if not
-
QOpenScienceFramework.connection.
logout
()[source]¶ Logs out the user, and resets the global session object.
Returns: bool
True if logout was succesful, False if not.
-
QOpenScienceFramework.connection.
parse_token_from_url
(url)[source]¶ Parses token from url fragment
Parameters: url : str
The url to parse. Should have a hass fragment (#) after which the token information is found.
Returns: str
The currently used OAuth2 access token.
Raises: RuntimeError
When there is no active OAuth2 session.
ConnectionManager¶
-
class
QOpenScienceFramework.manager.
ConnectionManager
(*args, **kwargs)[source]¶ Bases:
PyQt5.QtNetwork.QNetworkAccessManager
The connection manager does most of the heavy lifting in communicating with the OSF. It is responsible for all the HTTP requests and the correct treatment of responses from the OSF.
Attributes
progress_icon
Methods
add_token
(request)Adds the OAuth2 token to a HTTP request. buffer_network_request
(func)Decorator function, not to be called directly. check_for_stored_token
(tokenfile)Checks for stored token information. delete
(inst, *args, **kwargs)Perform a HTTP DELETE request. download_file
(url, destination, *args, **kwargs)Downloads a file by a using HTTP GET request. error_message
PyQt signal to send an error message. get
(inst, *args, **kwargs)Performs a HTTP GET request. get_file_info
(file_id, callback, *args, **kwargs)Gets information about the specified file. get_logged_in_user
(callback, *args, **kwargs)Get logged in user information. get_project_repos
(project_id, callback, ...)Get repos for the specified project. get_repo_files
(project_id, repo_name, ...)Retrieves files contained in a repository. get_user_projects
(callback, *args, **kwargs)Gets current user’s projects. handle_login
()Handles the login event received after login. handle_logout
()Handles the logout event received after a logout. info_message
PyQt signal to send an info message. login
()Logs in a user. logout
()Logs the current user out from OSF. post
(inst, *args, **kwargs)Perform a HTTP POST request. put
(inst, *args, **kwargs)Perform a HTTP PUT request. set_logged_in_user
(user_data)Callback function, not to be called directly. show_login_window
()Shows the login page on OSF. success_message
PyQt signal to send a success message. upload_file
(url, source_file, *args, **kwargs)Uploads a file. warning_message
PyQt signal to send a warning message. -
__init__
(*args, **kwargs)[source]¶ Constructor
Parameters: tokenfile : str (default: ‘token.json’)
The path to the file in which the token information should be stored.
notifier : QtCore.QObject (default: None)
The object containing pyqt slots / callables to which this object’s message signals can be connected. The object should contain the following slots / functions: info, error, success, warning. Each of these should expect two strings. This object is then repsonsible for displaying the messages, or passing them on to another object responsible for the display.
If
None
is passed, then a events.Notifier object is created which simply displays all messages in QDialog boxes
-
add_token
(request)[source]¶ Adds the OAuth2 token to a HTTP request.
Parameters: request : QtNetwork.QNetworkRequest
The network request item in whose header to add the OAuth2 token
Returns: bool
True if token could successfully be added to the request, False if not
-
buffer_network_request
(func)[source]¶ Decorator function, not to be called directly. Checks if network is accessible and buffers the network request so that it can be sent again if it fails the first time, for instance due to an invalidated OAuth2 token. In this case the user will be presented with the login screen again. If the same user successfully logs in again, the request will be resent.
-
check_for_stored_token
(tokenfile)[source]¶ Checks for stored token information. Checks if a token.json file can be found at the supplied location and inspects if it is not expired.
Parameters: tokenfile : str
Path to the token file
Returns: bool
True if a valid token was found at tokenfile’s location, False otherwise
-
delete
(inst, *args, **kwargs)[source]¶ Perform a HTTP DELETE request.
The OAuth2 token is automatically added to the header if the request is going to an OSF server.
Parameters: url : string / QtCore.QUrl
The target url/endpoint to perform the GET request on
callback : function
The function to call once the request is finished successfully.
errorCallback : function (default: None)
function to call whenever an error occurs. Should be able to accept the reply object as an argument. This function is also called if the operation is aborted by the user him/herself.
abortSignal : QtCore.pyqtSignal
This signal will be attached to the reply objects abort() slot, so that the operation can be aborted from outside if necessary.
*args (optional)
Any other arguments that you want to have passed to the callback
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
-
download_file
(url, destination, *args, **kwargs)[source]¶ Downloads a file by a using HTTP GET request. The OAuth2 token is automatically added to the header if the request is going to an OSF server.
Parameters: url : string / QtCore.QUrl
The target url that points to the file to download
destination : string
The path and filename with which the file should be saved.
finished_callback : function (default: None)
The function to call once the download is finished.
downloadProgress : function (default: None)
The slot (callback function) for the downloadProgress signal of the reply object. This signal is emitted after a certain amount of bytes is received, and can be used for instance to update a download progress dialog box. The callback function should have two parameters to which the transfered and total bytes can be assigned.
errorCallback : function (default: None)
function to call whenever an error occurs. Should be able to accept the reply object as an argument.
progressDialog : dict (default
A dictionary containing data about the file to be transferred. It should have two entries: filename: The name of the file filesize: the size of the file in bytes
*args (optional)
Any other arguments that you want to have passed to the callback
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
-
error_message
¶ PyQt signal to send an error message.
-
get
(inst, *args, **kwargs)[source]¶ Performs a HTTP GET request.
The OAuth2 token is automatically added to the header if the request is going to an OSF server.
Parameters: url : string / QtCore.QUrl
The target url/endpoint to perform the GET request on
callback : callable
The function to call once the request is finished successfully.
downloadProgess : function (defualt: None)
The slot (callback function) for the downloadProgress signal of the reply object. This signal is emitted after a certain amount of bytes is received, and can be used for instance to update a download progress dialog box. The callback function should have two parameters to which the transfered and total bytes can be assigned.
readyRead : function (default
The slot (callback function) for the readyRead signal of the reply object.
errorCallback : function (default: None)
function to call whenever an error occurs. Should be able to accept the reply object as an argument. This function is also called if the operation is aborted by the user him/herself.
progressDialog : QtWidgets.QProgressDialog (default: None)
The dialog to send the progress indication to. Will be included in the reply object so that it is accessible in the downloadProgress slot, by calling self.sender().property(‘progressDialog’)
abortSignal : QtCore.pyqtSignal
This signal will be attached to the reply objects abort() slot, so that the operation can be aborted from outside if necessary.
*args (optional)
Any other arguments that you want to have passed to the callback
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
Returns: QtNetwork.QNetworkReply
The reply object for the current request. Note that if a 301 or 302 redirect has occurred, a new reply object has been made for the redirect and the one returned here is no longer valid.
-
get_file_info
(file_id, callback, *args, **kwargs)[source]¶ Gets information about the specified file.
Parameters: file_id : string
The OSF file identifier (e.g. the node id).
callback : function
The callback function to which the data should be delivered once the request is finished.
Returns: QtNetwork.QNetworkReply or None if something went wrong.
-
get_logged_in_user
(callback, *args, **kwargs)[source]¶ Get logged in user information. Contacts the OSF to request data of the currently logged in user
Parameters: callback : function
The callback function to which the data should be delivered once the request is finished
Returns: QtNetwork.QNetworkReply or None if something went wrong
-
get_project_repos
(project_id, callback, *args, **kwargs)[source]¶ Get repos for the specified project. Retrieves a list of repositories from the OSF that belong to the passed project id.
Parameters: project_id : string
The project id that OSF uses for this project (e.g. the node id)
callback : function
The callback function to which the data should be delivered once the request is finished
Returns: QtNetwork.QNetworkReply or None if something went wrong
-
get_repo_files
(project_id, repo_name, callback, *args, **kwargs)[source]¶ Retrieves files contained in a repository. Retrieves a list of files from the OSF that belong to the indicated repository of the passed project id.
Parameters: project_id : string
The project id that OSF uses for this project (e.g. the node id)
repo_name : string
The repository to get the files from. Should be something along the lines of osfstorage, github, dropbox, etc. Check OSF documentation for a full list of specifications.
callback : function
The callback function to which the data should be delivered once the request is finished
Returns: QtNetwork.QNetworkReply or None if something went wrong
-
get_user_projects
(callback, *args, **kwargs)[source]¶ Gets current user’s projects. Retrieves a list of projects owned by the currently logged in user from OSF
Parameters: callback : function
The callback function to which the data should be delivered once the request is finished
Returns: QtNetwork.QNetworkReply or None if something went wrong
-
info_message
¶ PyQt signal to send an info message.
-
login
()[source]¶ Logs in a user. Checks if a token file is stored which can be used to login a user. If not or the token file is invalid, it opens a browser window through which a user can log in. After a successful login, the browser widget fires the ‘logged_in’ event.
-
post
(inst, *args, **kwargs)[source]¶ Perform a HTTP POST request.
The OAuth2 token is automatically added to the header if the request is going to an OSF server. This request is mainly used to send small amounts of data to the OSF framework (use PUT for larger files, as this is also required by the WaterButler service used by the OSF)
Parameters: url : string / QtCore.QUrl
The target url/endpoint to perform the POST request on.
callback : function
The function to call once the request is finished.
data_to_send : dict
The data to send with the POST request. keys will be used as variable names and values will be used as the variable values.
*args (optional)
Any other arguments that you want to have passed to callable.
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
-
put
(inst, *args, **kwargs)[source]¶ Perform a HTTP PUT request.
The OAuth2 token is automatically added to the header if the request is going to an OSF server. This method should be used to upload larger sets of data such as files.
Parameters: url : string / QtCore.QUrl
The target url/endpoint to perform the PUT request on.
callback : function
The function to call once the request is finished.
data_to_send : QIODevice (default
The file to upload (QFile or other QIODevice type)
uploadProgess : callable (defualt: None)
The slot (callback function) for the downloadProgress signal of the reply object. This signal is emitted after a certain amount of bytes is received, and can be used for instance to update a download progress dialog box. The callback function should have two parameters to which the transfered and total bytes can be assigned.
errorCallback : callable (default: None)
function to call whenever an error occurs. Should be able to accept the reply object as an argument. This function is also called if the operation is aborted by the user him/herself.
progressDialog : QtWidgets.QProgressDialog (default: None)
The dialog to send the progress indication to. Will be included in the reply object so that it is accessible in the downloadProgress slot, by calling self.sender().property(‘progressDialog’)
abortSignal : QtCore.pyqtSignal
This signal will be attached to the reply objects abort() slot, so that the operation can be aborted from outside if necessary.
*args (optional)
Any other arguments that you want to have passed to the callback
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
-
set_logged_in_user
(user_data)[source]¶ Callback function, not to be called directly.
Locally saves the data of the currently logged_in user
-
success_message
¶ PyQt signal to send a success message.
-
upload_file
(url, source_file, *args, **kwargs)[source]¶ Uploads a file. The file will be stored at the specified destination on the OSF.
Parameters: url : string / QtCore.QUrl
The target url that points to endpoint handling the upload
source_file : string / QtCore.QtFile
The path to the file which should be uploaded.
finishedCallback : function (default: None)
The function to call once the upload is finished.
uploadProgress : function (default: None)
The slot (callback function) for the uploadProgress signal of the reply object. This signal is emitted after a certain amount of bytes is received, and can be used for instance to update a upload progress dialog box. The callback function should have two parameters to which the transfered and total bytes can be assigned.
errorCallback : function (default: None)
function to call whenever an error occurs. Should be able to accept the reply object as an argument.
progressDialog : dict (default
A dictionary containing data about the file to be transferred. It should have two entries: filename: The name of the file filesize: the size of the file in bytes
*args (optional)
Any other arguments that you want to have passed to the callback
**kwargs (optional)
Any other keywoard arguments that you want to have passed to the callback
-
warning_message
¶ PyQt signal to send a warning message.
-
Events¶
-
class
QOpenScienceFramework.events.
EventDispatcher
(*args, **kwargs)[source]¶ This class fires events to connected classes, which are henceforth referenced to as ‘listeners’. Basically EventDispatcher’s purpose is to propagate login and logout events to the QWidget subclasses that require authorization at the OSF to function correctly, but of course this can be extended with other events that are relevant for all listeners.
The only requirement for listener classes is that they implement a handling function for each event that should be named “handle_<event_name>”. For example, to catch a login event, a listener should have the function handle_login.
Methods
add_listener
(item)Add a new object to listen for the events. add_listeners
(obj_list)Add one or more object(s) to the list of listeners. dispatch_login
()Convenience function to dispatch the login event. dispatch_logout
()Convenience function to dispatch the logout event. logged_in
PyQt Signal emitted when a user just logged in. logged_out
PyQt Signal emitted when a user just logged out. remove_listener
(item)Remove a listener. -
add_listener
(item)[source]¶ Add a new object to listen for the events.
Parameters: obj : object
the listener to add. Should implement handling functions which are called when certain events occur. The list of functions that the listener should implement is currently:
- handle_login
- handle_logout
-
add_listeners
(obj_list)[source]¶ Add one or more object(s) to the list of listeners.
Parameters: obj : object
the list of listeners to add. Listeners should implement handling functions which are called when certain events occur. The list of functions that listeners should implement is currently:
- handle_login
- handle_logout
-
logged_in
¶ PyQt Signal emitted when a user just logged in.
-
logged_out
¶ PyQt Signal emitted when a user just logged out.
-
-
class
QOpenScienceFramework.events.
Notifier
[source]¶ This object receives error or info messages and displays them in a QMessageBox notification box. It works with Qts signal slot architecture, as in all functions are slots to which Qt signals should be connected.
Methods
error
(title, message)Show an error message in a ‘critical’ QMessageBox. info
(title, message)Show an info message in an ‘information’ QMessageBox. success
(title, message)Show a success message in a ‘success’ QMessageBox. warning
(title, message)Show a warning message in a ‘warning’ QMessageBox. -
error
(title, message)[source]¶ Show an error message in a ‘critical’ QMessageBox.
Parameters: title : str
The title of the box
message : str
The message to display
-
info
(title, message)[source]¶ Show an info message in an ‘information’ QMessageBox.
Parameters: title : str
The title of the box
message : str
The message to display
-
-
class
QOpenScienceFramework.events.
TokenFileListener
(tokenfile)[source]¶ This listener stores the OAuth2 token after login and destroys it after logout.
Methods
handle_login
()Handles the login event. handle_logout
()Handles the logout event.
Widgets¶
LoginWindow¶
-
class
QOpenScienceFramework.widgets.loginwindow.
LoginWindow
(*args, **kwargs)[source]¶ Bases:
PyQt5.QtWebEngineWidgets.QWebEngineView
A Login window for the OSF
Methods
checkResponse
(reply)Callback function. check_URL
(url)Callback function. logged_in
Event fired when user successfully logged in. -
checkResponse
(reply)[source]¶ Callback function. Do not use directly.
Callback for NetworkRequestManager.finished event used to check if OAuth2 is redirecting to a link containing the token string. This is necessary for the QtWebKit module, because it drops fragments after being redirect to a different URL. QWebEngine uses the check_URL function to check for the token fragment
Parameters: reply : QtNetwork.QNetworkReply
The response object provided by NetworkRequestManager
-
check_URL
(url)[source]¶ Callback function. Do not use directly.
Calback for urlChanged event.
Parameters: command : url
New url, provided by the urlChanged event
-
logged_in
¶ Event fired when user successfully logged in.
-
OSFExplorer¶
-
class
QOpenScienceFramework.widgets.osfexplorer.
OSFExplorer
(manager, tree_widget=None, locale=u'en_us')[source]¶ Bases:
PyQt5.QtWidgets.QWidget
An explorer of the current user’s OSF account
Attributes
config
The current configuration of the project explorer. Methods
abort_preview
PyQt signal emitted when an image preview is to be aborted. add_buttonset
(title, buttons)Adds a set of buttons that can be referenced by ‘title’. closeEvent
(event)Reimplementation of closeEvent. create_context_menu
(item)Creates a context menu for the currently selected TreeWidgetItem. handle_login
()Callback function for a login event is detected. handle_logout
()Callback function for when a logout event is detected. set_config
(config)Function that sets the current config. set_file_properties
(data)Fills the contents of the properties panel for files. set_folder_properties
(data)Fills the contents of the properties pane for folders. show_buttonset
(title)Sets the buttonset to show and hides all others. -
__init__
(manager, tree_widget=None, locale=u'en_us')[source]¶ Constructor
Can be passed a reference to an already existing ProjectTree if desired, otherwise it creates a new instance of this object.
Parameters: manager : manger.ConnectionManager
The object taking care of all the communication with the OSF
tree_widget : ProjectTree (default: None)
The kind of object, which can be project, folder or file
locale : string (default: en-us)
The language in which the time information should be presented. Should consist of lowercase characters only (e.g. nl_nl)
-
abort_preview
¶ PyQt signal emitted when an image preview is to be aborted.
Adds a set of buttons that can be referenced by ‘title’. With set_buttonset(title) the buttons can be switched to this set.
Parameters: title : str
The label of the buttonset
buttons : list
A list of objects that inherit from QWidgets.QAbstractButton and which should be included in the buttonset designated by title
Raises: TypeError
If an item in the buttons list is not an instance of QAbstractButton.
-
closeEvent
(event)[source]¶ Reimplementation of closeEvent. Makes sure the login window also closes if the explorer closes.
-
config
¶ The current configuration of the project explorer. Contains information about the current filter that is set for the project tree and the buttonset that is shown.
Creates a context menu for the currently selected TreeWidgetItem. Menu contents differ depending on if the selected item is a file or a folder, and if the folder is the root of a repo or a subfolder thereof.
-
set_config
(config)[source]¶ Function that sets the current config.
The OSF explorer can be configured to show specific button sets at the bottom (e.g. show other buttons than the default download, upload, etc.) and to hide items in the tree by setting a filter. To only show items with a .txt extension, one can set the filter by passing the dict:
config = {'filter':'.txt'}
Multiple filetypes can be filtered by passing a list of extensions:
config = {'filter':['.txt','.py']}
To clear a previously set filter, set its value to None
config = {'filter': None}
If you have created extra button sets by using the add_buttonset function, you can specify which buttonset should be shown by adding a ‘buttonset’ entry to the config dict, which contains the name of the buttonset to show
config = {'buttonset': 'my_buttonset'}
to switch back to the default buttonset, pass ‘default’ as the value
config = {'buttonset': 'default'}
Note
Calling this function is equal to setting the config variable directly by using OSFExplorer.config = <config dict>
Parameters: config : dict
The dictionary containing new configuration parameters. It can contain directives to set a filter (with the filter key) and/or which buttonset to show (with the buttonset key)
-
set_file_properties
(data)[source]¶ Fills the contents of the properties panel for files. Makes sure the extra fields concerning files are shown.
Parameters: attributes : dict
A dictionary containing the information retrieved from the OSF, stored at the data/attributes path of the json response.
-
set_folder_properties
(data)[source]¶ Fills the contents of the properties pane for folders. Make sure the fields only concerning files are hidden.
Parameters: attributes : dict
A dictionary containing the information retrieved from the OSF, stored at the data/attributes path of the json response
Sets the buttonset to show and hides all others.
Parameters: title : str
The label of the buttonset that should be shown. To show the default buttonset, pass ‘default’.
Raises: KeyError
If there is no buttonset known by that label.
-
ProjectTree¶
-
class
QOpenScienceFramework.widgets.projecttree.
ProjectTree
(manager, use_theme=None, theme_path=u'./resources/iconthemes')[source]¶ Bases:
PyQt5.QtWidgets.QTreeWidget
A tree representation of projects and files on the OSF for the current user in a treeview widget.
Attributes
filter
The currently set filter parameters. Methods
add_item
(parent, data)Adds a new item to the tree. clear_filter
()Clears the filter. find_item
(item, index, value)Finds an item in the tree. get_icon
(datatype, name)Returns a QIcon for the passed datatype. handle_login
()Callback function for EventDispatcher when a login event is detected. handle_logout
()Callback function for EventDispatcher when a logout event is detected. populate_tree
(reply[, parent])Populates the tree with content. process_repo_contents
(logged_in_user)Processes contents for the logged in user. refreshFinished
PyQt signal that emits when the tree is completely refreshed. refresh_children_of_node
(node)Refreshes the children of the specified node. refresh_contents
()Refreshes all contents in the tree. set_filter
(filetypes)Sets an extension based filter for items in the tree. -
__init__
(manager, use_theme=None, theme_path=u'./resources/iconthemes')[source]¶ Constructor. Creates a tree showing the contents of the user’s OSF repositories. Can be passed a theme to use for the icons, but if this doesn’t happen it will use the default qtawesome (FontAwesome) icons for the buttons.
Parameters: manager : manger.ConnectionManager
The object taking care of all the communication with the OSF.
use_theme : string (default: None)
The name of the icon theme to use.
theme_path : The path to the folder at which the icon theme is located
Relevant only on Windows and OSX as the location of icon themes on Linux is standardized.
-
add_item
(parent, data)[source]¶ Adds a new item to the tree. The data that is passed should be the dictionary containing the information that is found under the ‘data’ key in an OSF API responses.
Parameters: parent : QtWidgets.QTreeWidgetItem
The parent node to place the new item under.
data : dict
The ‘data’ segment from the osf data.
Returns: item : QtWidgets.QTreeWidgetItem
The newly created tree widget item
kind : str
The type of the new item (folder, file, project, etc.)
-
filter
¶ The currently set filter parameters.
-
find_item
(item, index, value)[source]¶ Finds an item in the tree. Checks if there is already a tree item with the same name as value. This function does not recurse over the tree items, it only checks the direct descendants of the given item.
Parameters: item : QtWidgets.QTreeWidgetItem
The tree widget item of which to search the direct descendents.
index : int
The column index of the tree widget item.
value : str
The value to search for
Returns: int
The index position at which the item is found or None .
-
get_icon
(datatype, name)[source]¶ Returns a QIcon for the passed datatype. Retrieves the curren theme icon for a certain object (project, folder) or filetype. Uses the file extension to determine the file type.
Parameters: datatype : string
The kind of object, which can be project, folder or file
name : string
The name of the object, which is the project’s, folder’s or file’s name
Returns: QtGui.QIcon
The icon for the current file/object type
-
populate_tree
(reply, parent=None)[source]¶ Populates the tree with content. The entry point should be a project, repository or folder inside a repository. The JSON representation that the api endpoint returns for such a node is used to build the tree contents. This function is called recursively, for each new subfolder that is encountered from the entry point on.
Parameters: reply : QtNetwork.QNetworkReply
The data of the entrypoint from the OSF to create the node in the tree for.
parent : QtWidgets.QTreeWidgetItem (default: None)
The parent item to which the generated tree should be attached. Is mainly used for the recursiveness that this function implements. If not specified the invisibleRootItem() is used as a parent.
Returns: list
The list of tree items that have just been generated
-
process_repo_contents
(logged_in_user)[source]¶ Processes contents for the logged in user. Starts by listing the projects and then recurses through all their repositories, folders and files.
-
refreshFinished
¶ PyQt signal that emits when the tree is completely refreshed.
-
refresh_children_of_node
(node)[source]¶ Refreshes the children of the specified node. In contrast to refresh_contents, which refreshes the whole tree from the root, this function only refreshes the children of the passed node.
Parameters: node : QtWidgets.QTreeWidgetItem
The tree item of which the children need to be refreshed.
-
refresh_contents
()[source]¶ Refreshes all contents in the tree. This operation might take a long time depending on the number of projects that the user has, so it is recommended to use a partial refresh (refresh_children_of_node), wherever you can.
-
set_filter
(filetypes)[source]¶ Sets an extension based filter for items in the tree.
Note
Can be used instead of using ProjectTree.filter = <value> directly.
Parameters: filetypes : str or list
A filetype or list of filetypes that should be shown while other file types are hidden. For example, passing ‘.txt’ to this function will only show files which have the .txt extension
-
UserBadge¶
-
class
QOpenScienceFramework.widgets.userbadge.
UserBadge
(manager, icon_size=None)[source]¶ Bases:
PyQt5.QtWidgets.QWidget
A Widget showing the logged in user
Methods
current_user
()Checks the current status of the user. handle_login
()Callback function for EventDispatcher when a login event is detected. handle_logout
(*args)Callback function for EventDispatcher when a logout event is detected. login_request
PyQt signal to send a login request. logout_request
PyQt signal to send a logout request. -
__init__
(manager, icon_size=None)[source]¶ Constructor
Parameters: manager : manager.ConnectionManager
The object taking care of all the communication with the OSF
iconsize : QtCore.QSize (default: None)
The size of the icon to use for the osf logo and user photo, if not passed a size of 40x40 is used.
-
current_user
()[source]¶ Checks the current status of the user.
Returns: dict : contains the information of the logged in user, or is empty if no
user is currently logged in.
-
handle_logout
(*args)[source]¶ Callback function for EventDispatcher when a logout event is detected.
-
login_request
¶ PyQt signal to send a login request.
-
logout_request
¶ PyQt signal to send a logout request.
-