def post_translations(name): """updates all languages""" folder = os.path.join(FOLDER, name, "translations") if not os.path.exists(folder): os.makedirs(folder) t = Translator(folder) t.languages = request.json if MODE == "full": t.save()
handler.setFormatter(formatter) logger.setLevel(getattr(logging, level.upper(), "DEBUG")) logger.addHandler(handler) # connect to db db = DAL( settings.DB_URI, folder=settings.DB_FOLDER, pool_size=settings.DB_POOL_SIZE, migrate=settings.DB_MIGRATE, fake_migrate=settings.DB_FAKE_MIGRATE, ) # define global objects that may or may not be used by th actions cache = Cache(size=1000) T = Translator(settings.T_FOLDER) flash = Flash() # pick the session type that suits you best if settings.SESSION_TYPE == "cookies": session = Session(secret=settings.SESSION_SECRET_KEY) elif settings.SESSION_TYPE == "redis": import redis host, port = settings.REDIS_SERVER.split(":") # for more options: https://github.com/andymccurdy/redis-py/blob/master/redis/client.py conn = redis.Redis(host=host, port=int(port)) conn.set = (lambda k, v, e, cs=conn.set, ct=conn.ttl: cs(k, v, ct(k)) if ct(k) >= 0 else cs(k, v, e)) session = Session(secret=settings.SESSION_SECRET_KEY, storage=conn) elif settings.SESSION_TYPE == "memcache":
import requests import py4web from py4web import __version__, action, abort, request, response, redirect, Translator, HTTP, URL from py4web.core import Reloader, dumps, ErrorStorage, Session, Fixture from py4web.utils.factories import ActionFactory from pydal.validators import CRYPT from yatl.helpers import BEAUTIFY from .utils import * from .diff2kryten import diff2kryten MODE = os.environ.get("PY4WEB_DASHBOARD_MODE", "none") FOLDER = os.environ["PY4WEB_APPS_FOLDER"] APP_FOLDER = os.path.dirname(__file__) T_FOLDER = os.path.join(APP_FOLDER, "translations") T = Translator(T_FOLDER) error_storage = ErrorStorage() db = error_storage.db session = Session() def run(command, project): """for runing git commands inside an app (project)""" return subprocess.check_output(command.split(), cwd=os.path.join(FOLDER, project)).decode() def get_commits(project): """list of git commits for the project""" output = run("git log", project) commits = []
def update_translations(name): """find all T(...) decorated strings in the code and returns them""" app_folder = os.path.join(FOLDER, name) strings = Translator.find_matches(app_folder) return {'strings': strings}
def get_translations(name): """returns a json with all translations for all languages""" t = Translator(os.path.join(FOLDER, name, "translations")) return t.languages