Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: tests/crowdin_mock_api.py

Issue 29693633: Noissue - Add crowdin api config support (Closed) Base URL: https://hg.adblockplus.org/cms
Patch Set: refactor abstractions for config and the wsgi app Created Feb. 13, 2018, 8:28 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tests/test_translations.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,35 @@
@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')
+
+
+class CrowdinMock:
+ 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):
+ 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)
+
+ def run(self):
+ app.request_log = []
+ app.config['info'] = self.info
+ app.config['languages'] = self.languages
+ self.app = app
« no previous file with comments | « no previous file | tests/test_translations.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld