dashboard.utils

Define Dashboard related utilities and miscellaneous logic.

Copyright (C) 2021 Gitcoin Core

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

humanize_event_name

humanize_event_name(name)

Humanize an event name.

Args: name (str): The event name

Returns: str: The humanized representation.

create_user_action

create_user_action(user, action_type, request=None, metadata=None)

Create a UserAction for the specified action type.

Args: user (User): The User object. action_type (str): The type of action to record. request (Request): The request object. Defaults to: None. metadata (dict): Any accompanying metadata to be added. Defaults to: {}.

Returns: bool: Whether or not the UserAction was created successfully.

get_ipfs

get_ipfs(host=None, port=5001)

Establish a connection to IPFS.

Args: host (str): The IPFS host to connect to. Defaults to environment variable: IPFS_HOST. The host name should be of the form 'ipfs.infura.io' and not include 'https://'. port (int): The IPFS port to connect to. Defaults to environment variable: env IPFS_API_PORT.

Raises: CommunicationError: The exception is raised when there is a communication error with IPFS.

Returns: ipfshttpclient.client.Client: The IPFS connection client.

get_web3

get_web3(network, sockets=False, chain='std')

Get a Web3 session for the provided network.

Attributes: network (str): The network to establish a session with.

Raises: UnsupportedNetworkException: The exception is raised if the method is passed an invalid network.

Returns: web3.main.Web3: A web3 instance for the provided network.

get_graphql_client

get_graphql_client(uri)

Get a graphQL client attached to the given uri

Returns: GraphQLClient: an established GraphQLClient associated with the given uri

get_graphql_result

get_graphql_result(uri, query)

Get result of the query from the uri

Returns: dict: result of the graphQL query

get_bounty_invite_url

get_bounty_invite_url(inviter, bounty_id)

Returns a unique url for each bounty and one who is inviting Returns: A unique string for each bounty

get_bounty_from_invite_url

get_bounty_from_invite_url(invite_url)

Returns a unique url for each bounty and one who is inviting

Returns: A unique string for each bounty

web3_process_bounty

web3_process_bounty(bounty_data)

Process web3 bounty data by creating new or updated Bounty objects.

build_profile_pairs

build_profile_pairs(bounty)

Build the profile pairs list of tuples for ingestion by notifications.

Args: bounty (dashboard.models.Bounty): The Bounty to build profile pairs for.

Returns: list of tuples: The list of profile pair tuples.

get_ordinal_repr

get_ordinal_repr(num)

Handle cardinal to ordinal representation of numeric values.

Args: num (int): The integer to be converted from cardinal to ordinal numerals.

Returns: str: The ordinal representation of the provided integer.

record_user_action_on_interest

record_user_action_on_interest(interest, event_name, last_heard_from_user_days)

Record User actions and activity for the associated Interest.

get_context

get_context(ref_object=None, github_username='', user=None, confirm_time_minutes_target=4, confirm_time_slow=120, confirm_time_avg=15, confirm_time_fast=1, active='', title='', update=None)

Get the context dictionary for use in view.

clean_bounty_url

clean_bounty_url(url)

Clean the Bounty URL of unsavory characters.

The primary utility of this method is to drop issuecomment blocks from Github issue URLs copy/pasted via comments.

Args: url (str): The Bounty VC URL.

TODO: * Deprecate this in favor of Django forms.

Returns: str: The cleaned Bounty URL.

profile_helper

profile_helper(handle, suppress_profile_hidden_exception=False, current_user=None, disable_cache=False, full_profile=False)

Define the profile helper.

Args: handle (str): The profile handle.

Raises: DoesNotExist: The exception is raised if a Profile isn't found matching the handle. Remediation is attempted by syncing the profile data. MultipleObjectsReturned: The exception is raised if multiple Profiles are found. The latest Profile will be returned.

Returns: dashboard.models.Profile: The Profile associated with the provided handle.