| OLD | NEW | 
|---|
| 1 # This Source Code Form is subject to the terms of the Mozilla Public | 1 # This Source Code Form is subject to the terms of the Mozilla Public | 
| 2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 2 # License, v. 2.0. If a copy of the MPL was not distributed with this | 
| 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 
| 4 | 4 | 
| 5 import re | 5 import re | 
| 6 import os | 6 import os | 
| 7 import sys | 7 import sys | 
| 8 import codecs | 8 import codecs | 
| 9 import json | 9 import json | 
| 10 import urlparse | 10 import urlparse | 
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 185             '\r\n{data}\r\n' | 185             '\r\n{data}\r\n' | 
| 186             '--{boundary}--\r\n' | 186             '--{boundary}--\r\n' | 
| 187         ).format(boundary=boundary, | 187         ).format(boundary=boundary, | 
| 188                  name=name, | 188                  name=name, | 
| 189                  data=data.encode('utf-8'), | 189                  data=data.encode('utf-8'), | 
| 190                  mimetype=mimetypes.guess_type(name)[0]) | 190                  mimetype=mimetypes.guess_type(name)[0]) | 
| 191 | 191 | 
| 192     return ( | 192     return ( | 
| 193         StringIO(body), | 193         StringIO(body), | 
| 194         { | 194         { | 
| 195             'Content-Type': ('multipart/form-data; boundary=' + boundary), | 195             'Content-Type': 'multipart/form-data; boundary=' + boundary, | 
| 196             'Content-Length': len(body) | 196             'Content-Length': len(body) | 
| 197         }, | 197         }, | 
| 198     ) | 198     ) | 
| 199 | 199 | 
| 200 | 200 | 
| 201 def updateTranslationMaster(localeConfig, metadata, dir, projectName, key): | 201 def updateTranslationMaster(localeConfig, metadata, dir, projectName, key): | 
| 202     result = crowdin_request(projectName, 'info', key) | 202     result = crowdin_request(projectName, 'info', key) | 
| 203 | 203 | 
| 204     existing = set(map(lambda f: f['name'], result['files'])) | 204     existing = set(map(lambda f: f['name'], result['files'])) | 
| 205     add = [] | 205     add = [] | 
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 318     # Remove any extra files | 318     # Remove any extra files | 
| 319     for dir, files in dirs.iteritems(): | 319     for dir, files in dirs.iteritems(): | 
| 320         baseDir = os.path.join(localeConfig['base_path'], dir) | 320         baseDir = os.path.join(localeConfig['base_path'], dir) | 
| 321         if not os.path.exists(baseDir): | 321         if not os.path.exists(baseDir): | 
| 322             continue | 322             continue | 
| 323         for file in os.listdir(baseDir): | 323         for file in os.listdir(baseDir): | 
| 324             path = os.path.join(baseDir, file) | 324             path = os.path.join(baseDir, file) | 
| 325             valid_extension = file.endswith('.json') | 325             valid_extension = file.endswith('.json') | 
| 326             if os.path.isfile(path) and valid_extension and not file in files: | 326             if os.path.isfile(path) and valid_extension and not file in files: | 
| 327                 os.remove(path) | 327                 os.remove(path) | 
| OLD | NEW | 
|---|