Skip to content

giuliocalzo/salesforce-timecard

Repository files navigation

salesforce-timecard

PyPI version Actions Status: test Actions Status: publish

This Python package provides a CLI tool which can submit timecard entries to SalesForce programmatically.

Installation

To install the tool from PyPI, just use pip:

pip install salesforce-timecard

Or better use pipx

pipx install salesforce-timecard 

Configuration

Automatic Setup

using the cli you can setup the cli as described in here

$ timecard setup [2021-08-09 11:44:30,565][WARNING] no config file found Please enter your salesforce username: your-salesforce-email@example.com { "username": "your-salesforce-email@example.com", "credential_store": "keyring" } can I create this config on /Users/your-username/.pse.json ? [Y/n]: y Insert your Saleforce Password: ********** Insert your Saleforce Token: ********** Setup Completed

Manual actions

The script requires a local configuration file with your SalesForce credentials included in it, located at ~/.pse.json. It should look like:

{ "username": "your-salesforce-email@example.com", "password": "yoursupersecretpasswd", "token": "afghfyfgbgnegrfbgdhtd" }

To obtain the security token for your Salesforce account, follow this guide.

Password Alternatives

It is also possible to store password & security token in your OS' keyring. This supports any backends listed by the Python keyring library.

To do so, your config file (~/.pse.json) should contain just username and credential_store values:

{ "username": "your-salesforce-email@example.com", "credential_store": "keyring" }

Default values for the keyring assume everything is stored under the salesforce_cli application in your keyring. Your password would be stored as a salesforce_cli item with username your-salesforce-email@example.com_password, while the security token would be stored as salesforce_cli, your-salesforce-email@example.com_token.

Under MacOS this can be added with the "Keychain Access" application, under the default "login" keychain. salesforce_cli is the Keychain Item Name for both instances, and the your-salesforce-email@example.com_password or your-salesforce-email@example.com_token string is the Account Name.

Examples

Adding 3 hours of personal development on Wednesday:

$ timecard add -w 3 -p pdev -t 7 

Adding entries from a file:

  1. Create a timecard.yaml file with a sample content timecard sample > this_week.yaml
  2. Edit timecard.yaml
  3. Add your timecard timecard add -f timecard.yaml

Adding 8 hours for project PX1234 on Friday with some notes:

$ timecard add -t 7 -p px1234 --weekday Friday --notes "I've done everything!" 

Deleting timecard directly:

$ timecard delete TCH-08-21-2019-078970 Do you want to delete the timecard TCH-08-21-2019-078970 ? [y/N]: y [2019-08-21 14:08:04,917][INFO] timecard TCH-08-21-2019-078970 deleted 

Or interactively:

$ timecard delete Please choose which timecard: [0] TCH-08-20-2019-078900 projectA [1] TCH-08-21-2019-078950 projectB [2] TCH-08-21-2019-078956 projectC Selection: 2 Do you want to delete the timecard TCH-08-21-2019-078956 ? [y/N]: y [2019-08-21 14:08:04,917][INFO] timecard TCH-08-21-2019-078956 deleted 

Listing timecards for a specific week with debug information:

$ timecard -s 2019-08-19 -e 2019-08-25 list $ timecard --week -1 list +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ | Name | Monday | Tuesday | Wednesday | Thursday | Friday | Status | Project_Name | SUM | +=======================+==========+===========+=============+============+==========+==========+=======================================+=======+ | TCH-08-20-2019-078900 | 7 | 0 | 3 | 0 | 0 | Approved | Internal Process Systems Improvements | 10 | +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ | TCH-08-21-2019-078950 | 0 | 5 | 3 | 3 | 3 | Approved | Team Management | 14 | +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ | TCH-08-21-2019-078956 | 1 | 3 | 2 | 3 | 3 | Approved | Personal Development | 12 | +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ | TCH-08-22-2019-079068 | 0 | 0 | 0 | 2 | 2 | Approved | Presales | 4 | +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ | Total | 8 | 8 | 8 | 8 | 8 | | | 40 | +-----------------------+----------+-----------+-------------+------------+----------+----------+---------------------------------------+-------+ 

Listing timecards for this week:

$ timecard ls +-----------------------+----------+-----------+-------------+------------+----------+----------+-----------------------------+-------+ | Name | Monday | Tuesday | Wednesday | Thursday | Friday | Status | Project_Name | SUM | +=======================+==========+===========+=============+============+==========+==========+=============================+=======+ | TCH-08-26-2019-079767 | 2 | 2 | 0 | 0 | 0 | Saved | Internal - Events and Blogs | 4 | +-----------------------+----------+-----------+-------------+------------+----------+----------+-----------------------------+-------+ | TCH-08-26-2019-079768 | 4 | 0 | 0 | 0 | 0 | | Personal Development | 4 | +-----------------------+----------+-----------+-------------+------------+----------+----------+-----------------------------+-------+ | TCH-08-26-2019-079769 | 2 | 0 | 0 | 3 | 0 | Saved | Team Management | 5 | +-----------------------+----------+-----------+-------------+------------+----------+----------+-----------------------------+-------+ | Total | 8 | 2 | 0 | 3 | 0 | | | 13 | +-----------------------+----------+-----------+-------------+------------+----------+----------+-----------------------------+-------+ 

Submitting timecards for this week (on Friday for example):

$ timecard submit TCH-08-26-2019-079767 - Project 1 TCH-08-26-2019-079768 - Project 2 TCH-08-26-2019-079769 - Project 3 Do you want to submit all timecard ? [Y/n]: timecard TCH-08-26-2019-079767 submitted timecard TCH-08-26-2019-079768 submitted timecard TCH-08-26-2019-079769 submitted 

License

salesforce-timecard is licensed under the WTFPL.

About

PSE Timecard Entry CLI

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 9