A simple web application built with Python and WSGI that allows users to clone or update training workshops from Git repositories via a web interface.
This application provides a web-based interface to download and update machine learning and HPC training workshops developed by NeSI. It supports the following workshops:
- ml101: Machine Learning 101 Workshop
- ml102: Machine Learning 102 Workshop
- hpc-training: High Performance Computing Training
The app clones repositories into the ~/reannz_training directory and can update existing clones to the latest version.
- Web-based form for selecting and downloading workshops
- Automatic cloning or updating of Git repositories
- Support for shallow cloning (--depth 1) for faster downloads
- Error handling and feedback through the web interface
- Compatible with Passenger WSGI server for deployment
- Python 3.x
- Git
- Passenger WSGI server (for production deployment)
-
Clone this repository:
git clone <this-repo-url> cd python-training-workshop-downloader -
Ensure Git and Python are installed on your system.
-
For development/testing, you can run the WSGI app directly or deploy with a WSGI server.
-
For production deployment with Passenger:
- Place the files in your web server's document root.
- Configure Passenger to serve
passenger_wsgi.pyas the application entry point.
- Access the web application in your browser.
- Select a workshop from the dropdown menu.
- Click "Clone / Update" to download or update the selected workshop.
- The application will display the output of the Git commands and confirm the action.
The workshops are defined in passenger_wsgi.py in the WORKSHOPS dictionary. You can add more workshops by modifying this dictionary:
WORKSHOPS = {
"new-workshop": "https://github.com/organization/new-workshop.git",
}The base directory for cloning can be changed by modifying TARGET_BASE in the same file.
This app is designed to be deployed using Passenger WSGI. The manifest.yml file provides configuration for deployment platforms that support it (e.g., Cloud Foundry).
[Specify license if applicable]
[Guidelines for contributing]