浏览代码

generate oauth2 access token from oauth1 access token

version-14
Saurabh 8 年前
父节点
当前提交
ec16d11ae6
共有 3 个文件被更改,包括 33 次插入13 次删除
  1. +6
    -8
      frappe/integrations/doctype/dropbox_settings/dropbox_settings.js
  2. +2
    -2
      frappe/integrations/doctype/dropbox_settings/dropbox_settings.json
  3. +25
    -3
      frappe/integrations/doctype/dropbox_settings/dropbox_settings.py

+ 6
- 8
frappe/integrations/doctype/dropbox_settings/dropbox_settings.js 查看文件

@@ -37,14 +37,12 @@ frappe.ui.form.on('Dropbox Settings', {


take_backup: function(frm) { take_backup: function(frm) {
if ((frm.doc.app_access_key && frm.doc.app_secret_key) || frm.doc.dropbox_setup_via_site_config){ if ((frm.doc.app_access_key && frm.doc.app_secret_key) || frm.doc.dropbox_setup_via_site_config){
if (frm.doc.dropbox_access_token) {
frm.add_custom_button(__("Take Backup Now"), function(frm){
frappe.call({
method: "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backup",
freeze: true
})
}).addClass("btn-primary")
}
frm.add_custom_button(__("Take Backup Now"), function(frm){
frappe.call({
method: "frappe.integrations.doctype.dropbox_settings.dropbox_settings.take_backup",
freeze: true
})
}).addClass("btn-primary")
} }
} }
}); });


+ 2
- 2
frappe/integrations/doctype/dropbox_settings/dropbox_settings.json 查看文件

@@ -262,7 +262,7 @@
"columns": 0, "columns": 0,
"fieldname": "dropbox_access_token", "fieldname": "dropbox_access_token",
"fieldtype": "Password", "fieldtype": "Password",
"hidden": 0,
"hidden": 1,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"ignore_xss_filter": 0, "ignore_xss_filter": 0,
"in_filter": 0, "in_filter": 0,
@@ -325,7 +325,7 @@
"issingle": 1, "issingle": 1,
"istable": 0, "istable": 0,
"max_attachments": 0, "max_attachments": 0,
"modified": "2017-06-19 04:02:22.472465",
"modified": "2017-06-20 15:45:33.683827",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Integrations", "module": "Integrations",
"name": "Dropbox Settings", "name": "Dropbox Settings",


+ 25
- 3
frappe/integrations/doctype/dropbox_settings/dropbox_settings.py 查看文件

@@ -7,10 +7,11 @@ import frappe
import os import os
from frappe import _ from frappe import _
from frappe.model.document import Document from frappe.model.document import Document
import dropbox
import dropbox, json
from frappe.utils.backups import new_backup from frappe.utils.backups import new_backup
from frappe.utils.background_jobs import enqueue from frappe.utils.background_jobs import enqueue
from urlparse import urlparse, parse_qs from urlparse import urlparse, parse_qs
from frappe.integrations.utils import make_post_request
from frappe.utils import (cint, split_emails, get_request_site_address, cstr, from frappe.utils import (cint, split_emails, get_request_site_address, cstr,
get_files_path, get_backups_path, encode, get_url) get_files_path, get_backups_path, encode, get_url)


@@ -80,8 +81,16 @@ def backup_to_dropbox():


# upload database # upload database
dropbox_settings = get_dropbox_settings() dropbox_settings = get_dropbox_settings()

if not dropbox_settings['access_token']: if not dropbox_settings['access_token']:
return
access_token = generate_oauth2_access_token_from_oauth1_token(dropbox_settings)

if not access_token.get('oauth2_token'):
return

dropbox_settings['access_token'] = access_token['oauth2_token']
set_dropbox_access_token(access_token['oauth2_token'])



dropbox_client = dropbox.Dropbox(dropbox_settings['access_token']) dropbox_client = dropbox.Dropbox(dropbox_settings['access_token'])
backup = new_backup(ignore_files=True) backup = new_backup(ignore_files=True)
@@ -174,7 +183,9 @@ def get_dropbox_settings(redirect_uri=False):
"app_secret": settings.get_password(fieldname="app_secret_key", raise_exception=False) "app_secret": settings.get_password(fieldname="app_secret_key", raise_exception=False)
if settings.app_secret_key else frappe.conf.dropbox_secret_key, if settings.app_secret_key else frappe.conf.dropbox_secret_key,
'access_token': settings.get_password('dropbox_access_token', raise_exception=False) 'access_token': settings.get_password('dropbox_access_token', raise_exception=False)
if settings.dropbox_access_token else ''
if settings.dropbox_access_token else '',
'access_key': settings.get_password('dropbox_access_key', raise_exception=False),
'access_secret': settings.get_password('dropbox_access_secret', raise_exception=False)
} }


if redirect_uri: if redirect_uri:
@@ -248,3 +259,14 @@ def dropbox_auth_finish(return_access_token=False):
def set_dropbox_access_token(access_token): def set_dropbox_access_token(access_token):
frappe.db.set_value("Dropbox Settings", None, 'dropbox_access_token', access_token) frappe.db.set_value("Dropbox Settings", None, 'dropbox_access_token', access_token)
frappe.db.commit() frappe.db.commit()

def generate_oauth2_access_token_from_oauth1_token(dropbox_settings=None):
url = "https://api.dropboxapi.com/2/auth/token/from_oauth1"
headers = {"Content-Type": "application/json"}
auth = (dropbox_settings["app_key"], dropbox_settings["app_secret"])
data = {
"oauth1_token": dropbox_settings["access_key"],
"oauth1_token_secret": dropbox_settings["access_secret"]
}

return make_post_request(url, auth=auth, headers=headers, data=json.dumps(data))

正在加载...
取消
保存