mkdir example_rippling_app
cd example_rippling_app
python -m venv venv
source venv/bin/activate
pip install django
pip install requests
pip freeze|grep Django > requirments.txt
pip freeze|grep requests >> requirments.txt
touch .env
django-admin startproject project
mv project example_rippling_app
cd example_rippling_app
./manage.py startapp app
touch app/urls.py
touch app/lib/__init__.py
mkdir app/lib
touch app/lib/rippling.py
File app/lib/rippling.py
python
File app/models.py
python
File app/admin.py
python
File app/views.py
python
File app/urls.py
from django.urls import path
from .views import handle_app_install, handle_oauth_login, handle_incoming_webhook, secure_page
from django.views.decorators.csrf import csrf_exempt
urlpatterns = [
path('install/', handle_app_install),
path('sso/', csrf_exempt(handle_oauth_login)),
path('webhook/', csrf_exempt(handle_incoming_webhook)),
path('secure-page/', secure_page),
]
File project/settings.py
INSTALLED_APPS = [
'app',
...
]
File project/settings.py
ALLOWED_HOSTS = [
'xxx.ngrok-free.app',
...
]
path('integration/', include('app.urls')),
File project/settings.py
RIPPLING_CLIENT_ID = os.environ.get('RIPPLING_CLIENT_ID', 'xxx')
RIPPLING_CLIENT_SECRET = os.environ.get('RIPPLING_CLIENT_SECRET', 'xxx')
RIPPLING_REDIRECT_URI = os.environ.get('RIPPLING_REDIRECT_URI', 'https://xxx.ngrok-free.app/integration/install/')
RIPPLING_BASE_URL = os.environ.get('RIPPLING_BASE_URL', 'https://api.rippling.com')
RIPPLING_APP_SLUG = os.environ.get('RIPPLING_APP_SLUG', 'your-app-slug')
File .env
export RIPPLING_CLIENT_ID=xxx
export RIPPLING_CLIENT_SECRET=xxx