| OLD | NEW | 
 |    1 import os | 
 |    2  | 
|    1 from flask import Flask, send_from_directory, jsonify, request |    3 from flask import Flask, send_from_directory, jsonify, request | 
|    2  |    4  | 
|    3 app = Flask(__name__) |    5 app = Flask('mock_api') | 
|    4 app.request_log = [] |  | 
|    5  |    6  | 
|    6  |    7  | 
|    7 @app.before_request |    8 @app.before_request | 
|    8 def log_request_info(): |    9 def log_request_info(): | 
|    9     log = (request.url, str(request.get_data())) |   10     app.request_log.append((request.url, str(request.get_data()))) | 
|   10     app.request_log.append(log) |  | 
|   11  |   11  | 
|   12  |   12  | 
|   13 @app.route('/api/project/test/info', methods=['GET']) |   13 @app.route('/api/project/test/info', methods=['GET']) | 
|   14 def info(): |   14 def info(): | 
|   15     return jsonify( |   15     return jsonify(app.config['info']) | 
|   16         { |  | 
|   17             'languages': [ |  | 
|   18                 { |  | 
|   19                     'name': 'German', |  | 
|   20                     'code': 'de', |  | 
|   21                     'can_translate': 1, |  | 
|   22                     'can_approve': 1, |  | 
|   23  |   16  | 
|   24                 }, |  | 
|   25                 { |  | 
|   26                     'name': 'English', |  | 
|   27                     'code': 'en', |  | 
|   28                     'can_translate': 1, |  | 
|   29                     'can_approve': 1, |  | 
|   30  |   17  | 
|   31                 }, |   18 @app.route('/api/project/test/edit-project', methods=['POST']) | 
|   32  |   19 def edit(): | 
|   33             ], |   20     return jsonify() | 
|   34             'files': [ |  | 
|   35                 { |  | 
|   36                     'node_type': 'directory', |  | 
|   37                     'name': 'en', |  | 
|   38                     'files': [ |  | 
|   39                         { |  | 
|   40                             'node_type': 'file', |  | 
|   41                             'name': 'translate.json', |  | 
|   42                             'created': '2016-09-26 08:30:07', |  | 
|   43                             'last_updated': '2016-09-26 08:30:08', |  | 
|   44                             'last_accessed': None, |  | 
|   45                             'last_revision': '1' |  | 
|   46                         }, |  | 
|   47                     ] |  | 
|   48                 }, |  | 
|   49                 { |  | 
|   50                     'node_type': 'directory', |  | 
|   51                     'name': 'de', |  | 
|   52                     'files': [ |  | 
|   53                         { |  | 
|   54                             'node_type': 'file', |  | 
|   55                             'name': 'translate.json', |  | 
|   56                             'created': '2016-09-26 08:30:07', |  | 
|   57                             'last_updated': '2016-09-26 08:30:08', |  | 
|   58                             'last_accessed': None, |  | 
|   59                             'last_revision': '1' |  | 
|   60                         } |  | 
|   61                     ] |  | 
|   62                 } |  | 
|   63             ] |  | 
|   64         } |  | 
|   65     ) |  | 
|   66  |   21  | 
|   67  |   22  | 
|   68 @app.route('/api/project/test/supported-languages', methods=['GET']) |   23 @app.route('/api/project/test/supported-languages', methods=['GET']) | 
|   69 def supported_langs(): |   24 def supported_langs(): | 
|   70     return jsonify( |   25     return jsonify(app.config['languages']) | 
|   71         [ |  | 
|   72             { |  | 
|   73                 'name': 'German', |  | 
|   74                 'crowdin_code': 'de', |  | 
|   75                 'editor_code': 'de', |  | 
|   76                 'iso_639_1': 'de', |  | 
|   77                 'iso_639_3': 'deu', |  | 
|   78                 'locale': 'de-DE' |  | 
|   79             }, |  | 
|   80             { |  | 
|   81                 'name': 'English', |  | 
|   82                 'crowdin_code': 'en', |  | 
|   83                 'editor_code': 'en', |  | 
|   84                 'iso_639_1': 'en', |  | 
|   85                 'iso_639_3': 'eng', |  | 
|   86                 'locale': 'en-US' |  | 
|   87             }, |  | 
|   88         ] |  | 
|   89     ) |  | 
|   90  |   26  | 
|   91  |   27  | 
|   92 @app.route('/api/project/test/add-file', methods=['POST']) |   28 @app.route('/api/project/test/add-file', methods=['POST']) | 
|   93 def add_file(): |   29 def add_file(): | 
|   94     app.string = request.get_data() |   30     app.string = request.get_data() | 
|   95     return jsonify() |   31     return jsonify() | 
|   96  |   32  | 
|   97  |   33  | 
|   98 @app.route('/api/project/test/upload-translation', methods=['POST']) |   34 @app.route('/api/project/test/upload-translation', methods=['POST']) | 
|   99 def upload_translation(): |   35 def upload_translation(): | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  111  |   47  | 
|  112  |   48  | 
|  113 @app.route('/api/project/test/export', methods=['GET']) |   49 @app.route('/api/project/test/export', methods=['GET']) | 
|  114 def export(): |   50 def export(): | 
|  115     return jsonify({'success': {'status': 'skipped'}}) |   51     return jsonify({'success': {'status': 'skipped'}}) | 
|  116  |   52  | 
|  117  |   53  | 
|  118 @app.route('/api/project/test/download/all.zip', methods=['GET']) |   54 @app.route('/api/project/test/download/all.zip', methods=['GET']) | 
|  119 def get_zip(): |   55 def get_zip(): | 
|  120     return send_from_directory('', 'all.zip') |   56     return send_from_directory('', 'all.zip') | 
 |   57  | 
 |   58  | 
 |   59 def mockapi(config): | 
 |   60     app.request_log = [] | 
 |   61     app.config['info'] = config.info | 
 |   62     app.config['languages'] = config.languages | 
 |   63     return app | 
 |   64  | 
 |   65  | 
 |   66 class CrowdinConfig: | 
 |   67     def __init__(self, locales_root): | 
 |   68         self.info = {'files': [], 'languages': []} | 
 |   69         self.languages = [] | 
 |   70         self.load(locales_root) | 
 |   71  | 
 |   72     def load(self, filepath): | 
 |   73         for root, locales, files in os.walk(filepath): | 
 |   74             for locale in locales: | 
 |   75                 localenode = {'name': locale, 'node_type': 'directory', | 
 |   76                               'files': []} | 
 |   77                 self.info['languages'].append({'code': locale, | 
 |   78                                                'can_approve': 1, | 
 |   79                                                'can_translate': 1}) | 
 |   80                 self.languages.append({'crowdin_code': locale}) | 
 |   81                 for translations in os.listdir(os.path.join(root, locale)): | 
 |   82                     filenode = {'name': translations, 'node_type': 'file'} | 
 |   83                     localenode['files'].append(filenode) | 
 |   84             self.info['files'].append(localenode) | 
| OLD | NEW |