parent
2da193d242
commit
66520d9e8e
|
@ -18,9 +18,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
|
@ -32,6 +30,7 @@ import json
|
|||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class config(osv.osv):
|
||||
_name = 'google.drive.config'
|
||||
_description = "Google Drive templates config"
|
||||
|
@ -48,7 +47,7 @@ class config(osv.osv):
|
|||
model_name = model.name
|
||||
filter_name = config.filter_id and config.filter_id.name or False
|
||||
record = self.pool.get(res_model).read(cr, uid, res_id, [], context=context)
|
||||
record.update({'model': model_name, 'filter':filter_name})
|
||||
record.update({'model': model_name, 'filter': filter_name})
|
||||
name_gdocs = config.name_template or "%(name)s_%(model)s_%(filter)s_gdrive"
|
||||
try:
|
||||
name_gdocs = name_gdocs % record
|
||||
|
@ -67,7 +66,7 @@ class config(osv.osv):
|
|||
return res
|
||||
|
||||
def copy_doc(self, cr, uid, ids, res_id, tamplate_id, name_gdocs, res_model, context=None):
|
||||
ir_config = self.pool[ 'ir.config_parameter']
|
||||
ir_config = self.pool['ir.config_parameter']
|
||||
google_drive_client_id = ir_config.get_param(cr, SUPERUSER_ID, 'google_drive_client_id')
|
||||
google_drive_client_secret = ir_config.get_param(cr, SUPERUSER_ID, 'google_drive_client_secret')
|
||||
google_drive_refresh_token = ir_config.get_param(cr, SUPERUSER_ID, 'google_drive_refresh_token')
|
||||
|
@ -75,30 +74,30 @@ class config(osv.osv):
|
|||
|
||||
#For Getting New Access Token With help of old Refresh Token
|
||||
headers = {"Content-type": "application/x-www-form-urlencoded"}
|
||||
data = dict(client_id = google_drive_client_id,
|
||||
refresh_token = google_drive_refresh_token,
|
||||
client_secret = google_drive_client_secret,
|
||||
grant_type = "refresh_token")
|
||||
data = dict(client_id=google_drive_client_id,
|
||||
refresh_token=google_drive_refresh_token,
|
||||
client_secret=google_drive_client_secret,
|
||||
grant_type="refresh_token")
|
||||
data = urllib.urlencode(data)
|
||||
resp, content = Http().request("https://accounts.google.com/o/oauth2/token", "POST", data, headers)
|
||||
content = json.loads(content)
|
||||
|
||||
# Copy template in to drive with help of new access token
|
||||
if content.has_key('access_token'):
|
||||
if 'access_token' in content:
|
||||
request_url = "https://www.googleapis.com/drive/v2/files/%s?fields=parents/id&access_token=%s" % (tamplate_id, content['access_token'])
|
||||
resp, parents = Http().request(request_url, "GET")
|
||||
parents_dict = json.loads(parents)
|
||||
|
||||
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
|
||||
record_url = "Click on link to open Record in OpenERP\n %s/?db=%s#id=%s&model=%s" %(google_web_base_url, cr.dbname, res_id, res_model )
|
||||
data = {"title": name_gdocs, "description": record_url, "parents":parents_dict['parents']}
|
||||
record_url = "Click on link to open Record in OpenERP\n %s/?db=%s#id=%s&model=%s" % (google_web_base_url, cr.dbname, res_id, res_model)
|
||||
data = {"title": name_gdocs, "description": record_url, "parents": parents_dict['parents']}
|
||||
request_url = "https://www.googleapis.com/drive/v2/files/%s/copy?access_token=%s" % (tamplate_id, content['access_token'])
|
||||
resp, content = Http().request(request_url, "POST", json.dumps(data), headers)
|
||||
content = json.loads(content)
|
||||
res = False
|
||||
if 'alternateLink' in content.keys():
|
||||
attach_pool = self.pool.get("ir.attachment")
|
||||
attach_vals = {'res_model': res_model, 'name': name_gdocs, 'res_id': res_id, 'type': 'url', 'url':content['alternateLink']}
|
||||
attach_vals = {'res_model': res_model, 'name': name_gdocs, 'res_id': res_id, 'type': 'url', 'url': content['alternateLink']}
|
||||
attach_pool.create(cr, uid, attach_vals)
|
||||
res = content['alternateLink']
|
||||
else:
|
||||
|
@ -136,7 +135,6 @@ class config(osv.osv):
|
|||
|
||||
def _filter(self, cr, uid, action, action_filter, record_ids, context=None):
|
||||
""" filter the list record_ids that satisfy the action filter """
|
||||
records = {}
|
||||
if record_ids and action_filter:
|
||||
if not action.model_id == action_filter.model_id:
|
||||
raise osv.except_osv(_('Warning!'), _("Something went wrong with the configuration of attachments with google drive.Please contact your Administrator to fix the problem."))
|
||||
|
@ -158,7 +156,6 @@ class config(osv.osv):
|
|||
try:
|
||||
url = urlparse(template_url)
|
||||
res = url.path.split('/')
|
||||
resource = res[1]
|
||||
if res[1] == "spreadsheet":
|
||||
key = url.query.split('=')[1]
|
||||
else:
|
||||
|
@ -176,17 +173,17 @@ class config(osv.osv):
|
|||
return result
|
||||
|
||||
_columns = {
|
||||
'name' : fields.char('Template Name', required=True, size=1024),
|
||||
'name': fields.char('Template Name', required=True, size=1024),
|
||||
'model_id': fields.selection(_list_all_models, 'Model', required=True),
|
||||
'filter_id' : fields.many2one('ir.filters', 'Filter'),
|
||||
'filter_id': fields.many2one('ir.filters', 'Filter'),
|
||||
'google_drive_template_url': fields.char('Template URL', required=True, size=1024),
|
||||
'google_drive_resource_id' : fields.function(_resource_get, type="char" , string='Resource Id'),
|
||||
'google_drive_client_id' : fields.function(_client_id_get, type="char" , string='Google Client '),
|
||||
'google_drive_resource_id': fields.function(_resource_get, type="char", string='Resource Id'),
|
||||
'google_drive_client_id': fields.function(_client_id_get, type="char", string='Google Client '),
|
||||
'name_template': fields.char('Google Drive Name Pattern', size=64, help='Choose how the new google drive will be named, on google side. Eg. gdoc_%(field_name)s', required=True),
|
||||
}
|
||||
|
||||
def onchange_model_id(self, cr, uid, ids, model_id, context=None):
|
||||
res = {'domain':{'filter_id':[]}}
|
||||
res = {'domain': {'filter_id': []}}
|
||||
if model_id:
|
||||
res['domain'] = {'filter_id': [('model_id', '=', model_id)]}
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue