A comprehensive web application suite for managing Tableau Pulse with three powerful utilities, built with Python Flask and featuring a modern, responsive UI.
Transfer Tableau Pulse definitions between different sites
- Copy individual definitions by ID or all definitions from a datasource
- Cross-site copying with full authentication support
- Preserves all definition metadata and configurations
Add or remove followers from Pulse metrics using email addresses
- Bulk operations on multiple metrics simultaneously
- Email-based user identification (converts emails to user IDs automatically)
- Support for both adding and removing followers
Copy definitions with new datasources and migrate all metrics + followers
- Creates new definitions with different datasources
- Migrates all associated metrics and their followers
- Optional cleanup of old metric followers
- π Multiple Authentication: Supports both username/password and Personal Access Token (PAT) authentication
- π Modern UI: Beautiful, gradient interface with glass morphism effects and animations
- π Real-time Progress: Live updates during operations
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- β¨ Error Handling: Comprehensive error reporting and validation
- π Utility Selector: Easy-to-use front page for choosing which tool to use
hello-world-app/
βββ app.py # Flask application with Pulse API integration
βββ requirements.txt # Python dependencies (Flask, requests)
βββ README.md # This file
βββ templates/
βββ index.html # Web UI with form and progress tracking
- Python 3.7+ installed on your system
- pip (Python package installer)
-
Navigate to the project directory:
cd hello-world-app
-
Create a virtual environment (recommended):
python -m venv venv
-
Activate the virtual environment:
- On macOS/Linux:
source venv/bin/activate
- On Windows:
venv\Scripts\activate
- On macOS/Linux:
-
Install dependencies:
pip install -r requirements.txt
-
Start the Flask server:
python app.py
-
Open your web browser and visit:
http://localhost:3000
-
You'll see the Pulse Definition Copier interface with:
- Welcome tab with overview and features
- Copy Definitions tab with the main form
- Real-time progress tracking during operations
- Start the application and visit
http://localhost:3000
- Choose one of the three available utilities from the home page
- Fill in the required connection and configuration details
- Monitor real-time progress and results
-
Source Site Configuration:
- Enter source Tableau Server URL
- Provide site content URL and authentication credentials
- Specify the source datasource name
-
Destination Site Configuration:
- Enter destination Tableau Server URL
- Provide destination site details and credentials
- Specify the destination datasource name
-
Definition Selection:
- Enter specific definition IDs (comma-separated) or "all" for all definitions
-
Execute: Click "π Start Copying" and monitor progress
-
Site Connection:
- Enter Tableau Server URL and site content URL
- Choose authentication method and provide credentials
-
Action Configuration:
- Select action: "Add Followers" or "Remove Followers"
- Enter metric IDs (comma-separated)
- Enter user email addresses (comma-separated or one per line)
-
Execute: Click "π₯ Manage Followers" and monitor progress
-
Site Connection:
- Enter Tableau Server URL and site content URL
- Provide authentication credentials
-
Copy Configuration:
- Enter the Pulse Definition ID to copy
- Enter the new Datasource LUID to use
-
Cleanup Options:
- Optionally remove followers from old metrics after copying
-
Execute: Click "π Swap Datasources" and monitor progress
GET /
- Main utilities selection interfaceGET /api/hello
- Test API connection endpointPOST /copy-definitions
- Copy pulse definitions between sitesPOST /manage-followers
- Bulk add/remove followers from metricsPOST /swap-datasources
- Copy definitions with new datasources
- Modify the UI: Edit
templates/index.html
to change the interface or styling - Update CSS: Modify the styles in the
<style>
section for custom themes - Add new API endpoints: Extend
app.py
with additional@app.route()
functions - Change server configuration: Modify the
port=3000
parameter inapp.run()
inapp.py
- Adjust API version: Update the
API_VERSION
constant inapp.py
if needed
- The app runs in debug mode by default, so changes to Python files will automatically reload the server
- For production deployment, set
debug=False
inapp.run()
- All sensitive credentials are handled securely and not stored permanently
- Press
Ctrl+C
in the terminal where the server is running - To deactivate the virtual environment:
deactivate
- Port already in use: Change the port in
app.py
or kill the process using port 3000 - Module not found: Make sure you've activated the virtual environment and installed requirements
- Permission errors: Ensure you have proper permissions in the project directory
- Authentication failed: Verify your credentials and ensure the server URLs are correct
- Datasource not found: Check that the datasource name exists on the specified site
- Definition copy failed: Ensure you have appropriate permissions on both source and destination sites
- Network timeout: Check network connectivity to the Tableau servers
- Never commit credentials to version control
- Use environment variables for production deployments
- Ensure HTTPS is used for production Tableau Server connections
- Personal Access Tokens are recommended over username/password authentication
This application suite converts three original command-line Python scripts into a unified, user-friendly web interface:
- Pulse Definition Copier - Copy definitions between sites
- Bulk Manage Followers - Add/remove followers from metrics
- Swap Datasources - Copy definitions with new datasources
- π No CLI Required: Everything runs through the web browser
- ποΈ Better UX: Visual progress tracking and comprehensive error reporting
- β Validation: Form validation ensures all required fields are completed
- π Security: Credentials are handled securely without persistent storage
- π Enhanced Functionality: Same power as the original CLI scripts with improved usability
- π± Accessibility: Works on any device with a web browser
- π Unified Interface: All three utilities in one convenient location
- Modern Flask web framework
- RESTful API design
- Real-time progress updates via JSON responses
- Comprehensive error handling and logging
- Beautiful, responsive UI with animations
- Support for both JSON and XML API authentication methods
Transform your Tableau Pulse management workflow with this powerful web application suite! πππ₯π