| Index: tests/crowdin_mock_api.py |
| =================================================================== |
| --- a/tests/crowdin_mock_api.py |
| +++ b/tests/crowdin_mock_api.py |
| @@ -1,97 +1,33 @@ |
| +import os |
| + |
| from flask import Flask, send_from_directory, jsonify, request |
| -app = Flask(__name__) |
| -app.request_log = [] |
| +app = Flask('mock_api') |
| @app.before_request |
| def log_request_info(): |
| - log = (request.url, str(request.get_data())) |
| - app.request_log.append(log) |
| + app.request_log.append((request.url, str(request.get_data()))) |
| @app.route('/api/project/test/info', methods=['GET']) |
| def info(): |
| - return jsonify( |
| - { |
| - 'languages': [ |
| - { |
| - 'name': 'German', |
| - 'code': 'de', |
| - 'can_translate': 1, |
| - 'can_approve': 1, |
| + return jsonify(app.config['info']) |
| - }, |
| - { |
| - 'name': 'English', |
| - 'code': 'en', |
| - 'can_translate': 1, |
| - 'can_approve': 1, |
| - |
| - }, |
| - ], |
| - 'files': [ |
| - { |
| - 'node_type': 'directory', |
| - 'name': 'en', |
| - 'files': [ |
| - { |
| - 'node_type': 'file', |
| - 'name': 'translate.json', |
| - 'created': '2016-09-26 08:30:07', |
| - 'last_updated': '2016-09-26 08:30:08', |
| - 'last_accessed': None, |
| - 'last_revision': '1' |
| - }, |
| - ] |
| - }, |
| - { |
| - 'node_type': 'directory', |
| - 'name': 'de', |
| - 'files': [ |
| - { |
| - 'node_type': 'file', |
| - 'name': 'translate.json', |
| - 'created': '2016-09-26 08:30:07', |
| - 'last_updated': '2016-09-26 08:30:08', |
| - 'last_accessed': None, |
| - 'last_revision': '1' |
| - } |
| - ] |
| - } |
| - ] |
| - } |
| - ) |
| +@app.route('/api/project/test/edit-project', methods=['POST']) |
| +def edit(): |
| + return jsonify() |
| @app.route('/api/project/test/supported-languages', methods=['GET']) |
| def supported_langs(): |
| - return jsonify( |
| - [ |
| - { |
| - 'name': 'German', |
| - 'crowdin_code': 'de', |
| - 'editor_code': 'de', |
| - 'iso_639_1': 'de', |
| - 'iso_639_3': 'deu', |
| - 'locale': 'de-DE' |
| - }, |
| - { |
| - 'name': 'English', |
| - 'crowdin_code': 'en', |
| - 'editor_code': 'en', |
| - 'iso_639_1': 'en', |
| - 'iso_639_3': 'eng', |
| - 'locale': 'en-US' |
| - }, |
| - ] |
| - ) |
| + return jsonify(app.config['languages']) |
| @app.route('/api/project/test/add-file', methods=['POST']) |
| def add_file(): |
| app.string = request.get_data() |
| return jsonify() |
| @@ -113,8 +49,36 @@ |
| @app.route('/api/project/test/export', methods=['GET']) |
| def export(): |
| return jsonify({'success': {'status': 'skipped'}}) |
| @app.route('/api/project/test/download/all.zip', methods=['GET']) |
| def get_zip(): |
| return send_from_directory('', 'all.zip') |
| + |
| + |
| +def mockapi(config): |
| + app.request_log = [] |
| + app.config['info'] = config.info |
| + app.config['languages'] = config.languages |
| + return app |
| + |
| + |
| +class CrowdinConfig: |
| + def __init__(self, locales_root): |
| + self.info = {'files': [], 'languages': []} |
| + self.languages = [] |
| + self.load(locales_root) |
| + |
| + def load(self, filepath): |
| + for root, locales, files in os.walk(filepath): |
|
Jon Sonesen
2018/02/09 23:08:01
There are some assumptions that are made here, and
|
| + for locale in locales: |
| + localenode = {'name': locale, 'node_type': 'directory', |
| + 'files': []} |
| + self.info['languages'].append({'code': locale, |
| + 'can_approve': 1, |
| + 'can_translate': 1}) |
| + self.languages.append({'crowdin_code': locale}) |
| + for translations in os.listdir(os.path.join(root, locale)): |
| + filenode = {'name': translations, 'node_type': 'file'} |
| + localenode['files'].append(filenode) |
| + self.info['files'].append(localenode) |