Merge lp:~jfb-tempo-consulting/unifield-server/US-4373 into lp:unifield-server

Proposed by jftempo
Status: Merged
Merged at revision: 4828
Proposed branch: lp:~jfb-tempo-consulting/unifield-server/US-4373
Merge into: lp:unifield-server
Diff against target: 113 lines (+51/-4)
2 files modified
bin/addons/msf_instance/msf_instance.py (+11/-1)
bin/tools/webdav.py (+40/-3)
To merge this branch: bzr merge lp:~jfb-tempo-consulting/unifield-server/US-4373
Reviewer Review Type Date Requested Status
UniField Reviewer Team Pending
Review via email: mp+342268@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/addons/msf_instance/msf_instance.py'
2--- bin/addons/msf_instance/msf_instance.py 2018-02-22 14:23:17 +0000
3+++ bin/addons/msf_instance/msf_instance.py 2018-03-28 07:26:44 +0000
4@@ -468,6 +468,7 @@
5
6 _logger = logging.getLogger('cloud.backup')
7 _empty_pass = 'X' * 10
8+ _temp_folder = 'Temp'
9
10 def _get_cloud_set_password(self, cr, uid, ids, fields, arg, context=None):
11 ret = {}
12@@ -631,6 +632,11 @@
13 except webdav.ConnectionFailed, e:
14 raise osv.except_osv(_('Warning !'), _('Unable to delete a test file: %s') % (e.message))
15
16+ try:
17+ dav.create_folder(self._temp_folder)
18+ except webdav.ConnectionFailed, e:
19+ raise osv.except_osv(_('Warning !'), _('Unable to create temp folder: %s') % (e.message))
20+
21 raise osv.except_osv(_('OK'), _('Connection to remote storage is OK'))
22
23 return True
24@@ -720,9 +726,13 @@
25 if progress:
26 progress_obj = self.pool.get('msf.instance.cloud.progress').browse(cr, uid, progress)
27
28+ dav.create_folder(self._temp_folder)
29+ final_name = '%s-%s.zip' % (local_instance.instance, day_abr[today.day_of_week])
30+ temp_drive_file = '%s/%s.zip' % (self._temp_folder, local_instance.instance)
31
32- dav.upload(temp_fileobj, '%s-%s.zip' % (local_instance.instance, day_abr[today.day_of_week]), buffer_size=buffer_size, log=True, progress_obj=progress_obj)
33+ dav.upload(temp_fileobj, temp_drive_file, buffer_size=buffer_size, log=True, progress_obj=progress_obj)
34 temp_fileobj.close()
35+ dav.move(temp_drive_file, final_name)
36
37 monitor.create(cr, uid, {'cloud_date': today.strftime('%Y-%m-%d %H:%M:%S'), 'cloud_backup': bck['name'], 'cloud_error': '', 'cloud_size': zip_size})
38 if progress_obj:
39
40=== modified file 'bin/tools/webdav.py'
41--- bin/tools/webdav.py 2018-02-22 14:23:17 +0000
42+++ bin/tools/webdav.py 2018-03-28 07:26:44 +0000
43@@ -40,6 +40,21 @@
44 else:
45 raise ConnectionFailed(ctx_auth.get_last_error())
46
47+ def create_folder(self, remote_path):
48+ webUri = '%s%s' % (self.path, remote_path)
49+ request_url = "%s/_api/web/GetFolderByServerRelativeUrl('%s')" % (self.baseurl, webUri)
50+ options = RequestOptions(request_url)
51+ options.method = HttpMethod.Post
52+ options.set_header("X-HTTP-Method", "POST")
53+ self.request.context.authenticate_request(options)
54+ self.request.context.ensure_form_digest(options)
55+ result = requests.post(url=request_url, data="", headers=options.headers, auth=options.auth)
56+ if result.status_code not in (200, 201):
57+ result = requests.post("%s/_api/Web/Folders/add('%s')" % (self.baseurl, webUri), data="", headers=options.headers, auth=options.auth)
58+ if result.status_code not in (200, 201):
59+ raise Exception(result.content)
60+ return True
61+
62 def delete(self, remote_path):
63 webUri = '%s%s' % (self.path, remote_path)
64 request_url = "%s/_api/web/getfilebyserverrelativeurl('%s')" % (self.baseurl, webUri)
65@@ -53,6 +68,21 @@
66 raise Exception(result.content)
67 return True
68
69+ def move(self, remote_path, dest):
70+ webUri = '%s%s' % (self.path, remote_path)
71+ destUri = '%s%s' % (self.path, dest)
72+ # falgs=1 to overwrite existing file
73+ request_url = "%s_api/web/getfilebyserverrelativeurl('%s')/moveto(newurl='%s',flags=1)" % (self.baseurl, webUri, destUri)
74+ options = RequestOptions(request_url)
75+ options.method = HttpMethod.Post
76+ options.set_header("X-HTTP-Method", "POST")
77+ self.request.context.authenticate_request(options)
78+ self.request.context.ensure_form_digest(options)
79+ result = requests.post(url=request_url, data="", headers=options.headers, auth=options.auth)
80+ if result.status_code not in (200, 201):
81+ raise Exception(result.content)
82+ return True
83+
84 def upload(self, fileobj, remote_path, buffer_size=None, log=False, progress_obj=False):
85 iid = uuid.uuid1()
86
87@@ -70,16 +100,23 @@
88 if not buffer_size:
89 buffer_size = 10* 1024 * 1024
90 x = ""
91- webUri = '%s%s' % (self.path, remote_path)
92+ split_name = remote_path.split('/')
93+ new_file = split_name.pop()
94+ split_name.insert(0, self.path)
95+ path = '/'.join(split_name)
96+ if path[-1] != '/':
97+ path += '/'
98+ webUri = '%s%s' % (path, new_file)
99+
100 while True:
101 if offset == -1:
102- request_url = "%s/_api/web/GetFolderByServerRelativeUrl('%s')/Files/add(url='%s',overwrite=true)" % (self.baseurl, self.path, remote_path)
103+ request_url = "%s/_api/web/GetFolderByServerRelativeUrl('%s')/Files/add(url='%s',overwrite=true)" % (self.baseurl, path, new_file)
104 offset = 0
105 elif not offset:
106 if len(x) == buffer_size:
107 request_url="%s/_api/web/getfilebyserverrelativeurl('%s')/startupload(uploadId=guid'%s')" % (self.baseurl, webUri, iid)
108 else:
109- request_url = "%s/_api/web/GetFolderByServerRelativeUrl('%s')/Files/add(url='%s',overwrite=true)" % (self.baseurl, self.path, remote_path)
110+ request_url = "%s/_api/web/GetFolderByServerRelativeUrl('%s')/Files/add(url='%s',overwrite=true)" % (self.baseurl, path, new_file)
111 elif len(x) == buffer_size:
112 request_url = "%s/_api/web/getfilebyserverrelativeurl('%s')/continueupload(uploadId=guid'%s',fileOffset=%s)" % (self.baseurl, webUri, iid, offset)
113 else:

Subscribers

People subscribed via source and target branches