ここ最近Pythonを個人的に学習し始めたこともあって、PythonからSalesforceを使用できないかと思って試してみた。
使用するもの
今回のサンプルを作成するのに使用したのは以下
- Python 3.5
- virtualenv
- Bottle
- simple-salesforce
ちょっとだけ補足すると
Bottle
PythonでWebアプリケーションを作成するためのフレームワーク。PythonでWebアプリケーションを作成するためのフレームワークには他にDjangoなどがある。
Bottleはその中でも軽量なフレームワークで、必要最低限のものが一通り揃っているとのことなので選択。
virtualenv
Pythonの仮想環境を作成するライブラリ。イメージとしてはVirtualboxとVagrantで仮想環境を作成するのに近いかも。
simple-salesforce
PythonからSalesforceを操作するためのモジュール。公式ドキュメントを見た感じだとREST APIを叩いているみたい。
実装
実装したものは最低限しかないけれど
index.tpl
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Bottle Indexテンプレート</title>
</head>
<body>
<h1>{{msg}}</h1>
<h2></h2>
<form action="" method="post">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="password" name="security_token" placeholder="SecurityToken" />
<input type="submit" value="ログイン" />
</form>
</body>
</html>
index.py
from bottle import route, run, template, request
from simple_salesforce import Salesforce
@route('/')
def index(msg='This page is home page.'):
return template('index', msg=msg)
@route('/', method=["POST"])
def login_salesforce():
uname = request.POST.getunicode("username")
upw = request.POST.getunicode("password")
token = request.POST.getunicode("security_token")
try:
sf = Salesforce(username=uname, password=upw, security_token=token)
return template("login_success")
except Exception as e:
return template("login_error")
finally:
print("ログイン処理終了")
run(host='localhost', port=8080, debug=True, reloader=True)
本当に最低限だけです。
今後適宜追加予定なので。
現段階でのソースはGithubのBottleSalesforceEnvにあがっています。