aboutsummaryrefslogtreecommitdiff
path: root/server/szurubooru
diff options
context:
space:
mode:
authorrr-2016-06-18 10:55:44 +0200
committerrr-2016-06-18 10:55:44 +0200
commit3c3d0dbb8d4e83eab6e3b7243f434647a3942c04 (patch)
treee79de2a3c4036eb991aed33061f8d6f7cedb6fd7 /server/szurubooru
parent4b39e79d5bee038d04299f06194cd6ba0731f272 (diff)
server/info: expose a few config variables
Diffstat (limited to 'server/szurubooru')
-rw-r--r--server/szurubooru/api/info_api.py11
-rw-r--r--server/szurubooru/func/util.py10
-rw-r--r--server/szurubooru/tests/api/test_info.py29
3 files changed, 48 insertions, 2 deletions
diff --git a/server/szurubooru/api/info_api.py b/server/szurubooru/api/info_api.py
index 4d670e5..e37ac2c 100644
--- a/server/szurubooru/api/info_api.py
+++ b/server/szurubooru/api/info_api.py
@@ -2,7 +2,7 @@ import datetime
import os
from szurubooru import config
from szurubooru.api.base_api import BaseApi
-from szurubooru.func import posts, users
+from szurubooru.func import posts, users, util
class InfoApi(BaseApi):
def __init__(self):
@@ -21,6 +21,15 @@ class InfoApi(BaseApi):
'featuringUser': users.serialize_user(post_feature.user, ctx.user) \
if post_feature else None,
'serverTime': datetime.datetime.now(),
+ 'config': {
+ 'userNameRegex': config.config['user_name_regex'],
+ 'passwordRegex': config.config['password_regex'],
+ 'tagNameRegex': config.config['tag_name_regex'],
+ 'tagCategoryNameRegex': config.config['tag_category_name_regex'],
+ 'defaultUserRank': config.config['default_rank'],
+ 'privileges': util.snake_case_to_lower_camel_case_keys(
+ config.config['privileges']),
+ },
}
def _get_disk_usage(self):
diff --git a/server/szurubooru/func/util.py b/server/szurubooru/func/util.py
index 270bf47..65fc196 100644
--- a/server/szurubooru/func/util.py
+++ b/server/szurubooru/func/util.py
@@ -6,6 +6,16 @@ import tempfile
from contextlib import contextmanager
from szurubooru import errors
+def snake_case_to_lower_camel_case(text):
+ components = text.split('_')
+ return components[0] + ''.join(word[0].upper() + word[1:] for word in components[1:])
+
+def snake_case_to_lower_camel_case_keys(source):
+ target = {}
+ for key, value in source.items():
+ target[snake_case_to_lower_camel_case(key)] = value
+ return target
+
def get_serialization_options(ctx):
return ctx.get_param_as_list('fields', required=False, default=None)
diff --git a/server/szurubooru/tests/api/test_info.py b/server/szurubooru/tests/api/test_info.py
index 1b52c71..91659cd 100644
--- a/server/szurubooru/tests/api/test_info.py
+++ b/server/szurubooru/tests/api/test_info.py
@@ -5,8 +5,32 @@ def test_info_api(
tmpdir, config_injector, context_factory, post_factory, fake_datetime):
directory = tmpdir.mkdir('data')
directory.join('test.txt').write('abc')
- config_injector({'data_dir': str(directory)})
+ config_injector({
+ 'data_dir': str(directory),
+ 'user_name_regex': '1',
+ 'password_regex': '2',
+ 'tag_name_regex': '3',
+ 'tag_category_name_regex': '4',
+ 'default_rank': '5',
+ 'privileges': {
+ 'test_key1': 'test_value1',
+ 'test_key2': 'test_value2',
+ },
+ })
db.session.add_all([post_factory(), post_factory()])
+
+ expected_config_key = {
+ 'userNameRegex': '1',
+ 'passwordRegex': '2',
+ 'tagNameRegex': '3',
+ 'tagCategoryNameRegex': '4',
+ 'defaultUserRank': '5',
+ 'privileges': {
+ 'testKey1': 'test_value1',
+ 'testKey2': 'test_value2',
+ },
+ }
+
info_api = api.InfoApi()
with fake_datetime('2016-01-01 13:00'):
assert info_api.get(context_factory()) == {
@@ -16,6 +40,7 @@ def test_info_api(
'featuringTime': None,
'featuringUser': None,
'serverTime': datetime(2016, 1, 1, 13, 0),
+ 'config': expected_config_key,
}
directory.join('test2.txt').write('abc')
with fake_datetime('2016-01-01 13:59'):
@@ -26,6 +51,7 @@ def test_info_api(
'featuringTime': None,
'featuringUser': None,
'serverTime': datetime(2016, 1, 1, 13, 59),
+ 'config': expected_config_key,
}
with fake_datetime('2016-01-01 14:01'):
assert info_api.get(context_factory()) == {
@@ -35,4 +61,5 @@ def test_info_api(
'featuringTime': None,
'featuringUser': None,
'serverTime': datetime(2016, 1, 1, 14, 1),
+ 'config': expected_config_key,
}

© 2015 - 2026 Jakob L. Kreuze