def application(master, language, debug): if os.environ.get("AS_TLINJECT_SECRET", ""): print("TLInject is enabled for this server.") locale.set_default_locale("en") locale.load_gettext_translations(readonly_app_path("gettext"), "tornado") strings = static_strings() db_coordinator = database.DatabaseCoordinator() application = Application( dispatch.ROUTES, db_coordinator=db_coordinator, master=libcard2.master.MasterData(master), string_access=create_dict_aggregator(master, language), image_server=os.environ.get("AS_IMAGE_SERVER"), tlinject_context=tlinject.TLInjectContext(db_coordinator), news_context=news.NewsDatabase(db_coordinator), card_tracking=card_tracking.CardTrackingDatabase(db_coordinator), event_tracking=event_tracker.EventTrackingDatabase(db_coordinator), template_path=readonly_app_path("webui"), runtime_info=create_runtime_info(), tlinject_secret=os.environ.get("AS_TLINJECT_SECRET", "").encode("utf8"), ui_methods=pageutils.UI_METHODS, static_path=readonly_app_path("static"), static_strings=strings, debug=debug, autoreload=debug, ) return application
def main(): # options parse_command_line() # Locale load_gettext_translations(settings.I18N_PATH, "luoyun") set_default_locale('zh_CN') logging.info("starting torando web server") save_pid(delete_exist=True) if settings.IPV4_ONLY: import socket sockets = bind_sockets(options.port, family=socket.AF_INET) else: sockets = bind_sockets(options.port) if not settings.DEBUG: import tornado.process tornado.process.fork_processes(0) application = Application() server = HTTPServer(application, xheaders=True) server.add_sockets(sockets) save_pid() IOLoop.instance().start()
def main(): # options parse_command_line() # Locale load_gettext_translations(settings.I18N_PATH, "luoyun") set_default_locale('zh_CN') logging.info("starting torando web server") if settings.IPV4_ONLY: import socket sockets = bind_sockets(options.port, family=socket.AF_INET) else: sockets = bind_sockets(options.port) if not settings.DEBUG: import tornado.process tornado.process.fork_processes(0) application = Application() server = HTTPServer(application, xheaders=True) server.add_sockets(sockets) IOLoop.instance().start()
def start_server(): """ Main entry point for the application """ locale.set_default_locale("en_US") locale.load_translations("locale") if options.autostart_game: app.settings["game_started"] = True app.settings["history_callback"].start() if options.use_bots: app.settings["score_bots_callback"].start() # Setup server object if options.ssl: server = HTTPServer( app, ssl_options={"certfile": options.certfile, "keyfile": options.keyfile}, xheaders=options.x_headers, ) else: server = HTTPServer(app, xheaders=options.x_headers) try: sockets = netutil.bind_sockets(options.listen_port, options.listen_interface) except (OSError, IOError) as err: logging.error("Problem binding socket to port %s", str(options.listen_port)) if err.errno == 13: pypath = sys.executable if os_path.islink(pypath): pypath = os_path.realpath(pypath) logging.error( "Possible Fix: sudo setcap CAP_NET_BIND_SERVICE=+eip %s", pypath ) elif err.errno == 98: logging.error( "The port may be in use by an existing service. RTB already running?" ) else: logging.error(err) sys.exit() server.add_sockets(sockets) if options.debug: logging.warn( "%sDebug mode is enabled; DO NOT USE THIS IN PRODUCTION%s" % (bold + R, W) ) if options.autostart_game: logging.info("The game is about to begin, good hunting!") try: Scoreboard.update_gamestate(app) except OperationalError as err: if "Table definition has changed" in str(err): logging.info("Table definitions have changed -restarting RootTheBox.") return "restart" else: logging.error("There was a problem starting RootTheBox. Error: " + str(err)) try: io_loop.start() except KeyboardInterrupt: sys.stdout.write("\r" + WARN + "Shutdown Everything!\n") except: logging.exception("Main i/o loop threw exception") finally: io_loop.stop() _exit(0)
def __init__(self, application, request, **kwargs): if BaseHandler._first_running: self._after_prefork() BaseHandler._first_running = False #国际化 locale.load_translations("./protected/translations") locale.set_default_locale("zh_CN") self._locale = locale.get() super(BaseHandler, self).__init__(application, request, **kwargs) self.session = session.Session(self.application.session_manager, self)
def setup_locale(self): if not hasattr(settings, 'LOCALE'): return assert 'code' in settings.LOCALE assert 'path' in settings.LOCALE assert 'domain' in settings.LOCALE locale_code = settings.LOCALE['code'] locale.set_default_locale(locale_code) locale.load_gettext_translations(settings.LOCALE['path'], settings.LOCALE['domain']) self.define_current_locale(locale_code)
def setup_locale(self): if not hasattr(settings, 'LOCALE'): return assert settings.LOCALE.has_key('code') assert settings.LOCALE.has_key('path') assert settings.LOCALE.has_key('domain') locale_code = settings.LOCALE['code'] locale.set_default_locale(locale_code) locale.load_gettext_translations(settings.LOCALE['path'], settings.LOCALE['domain']) self.define_current_locale(locale_code)
def set_language(request, language, session=None): locale.set_default_locale(LOCALES.get(language, DEFAULT_LANGUAGE)) request.set_secure_cookie('locale', LOCALES.get(language, DEFAULT_LANGUAGE), 1) request.locale = locale.get(LOCALES.get(language, DEFAULT_LOCALE)) if session is not None and session is not False: redis = request.redis.get(threading.currentThread()) """:type : connectors.RedisConnector.RedisConnector""" if redis.exists(str(session)): params = redis.get(session) params = json.loads(str(params)) params["language"] = language redis.set(session, json.dumps(params))
def _prepare_translations(self): """Load in translations if they are set, and add the default locale as well. """ if config.TRANSLATIONS in self.paths: LOGGER.info('Loading translations from %s', self.paths[config.TRANSLATIONS]) from tornado import locale locale.load_translations(self.paths[config.TRANSLATIONS]) if config.DEFAULT_LOCALE in self._config: LOGGER.info('Setting default locale to %s', self._config[config.DEFAULT_LOCALE]) locale.set_default_locale(self._config[config.DEFAULT_LOCALE])
def setup(): """ Configure the settings (this happens as a side effect of accessing the first setting), configure logging and default locale. """ from anthill.framework.conf import settings from anthill.framework.utils.log import configure_logging from tornado.locale import set_default_locale, load_gettext_translations configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) if settings.USE_I18N: set_default_locale(settings.LOCALE) load_gettext_translations('locale', 'messages')
def load_calibre_translations(): from tornado import locale tmp = tempfile.mkdtemp() with zipfile.ZipFile(P('localization/locales.zip')) as zf: trans = {} for name in zf.namelist(): if name.endswith(".mo"): trans[name.split("/")[0]] = name for code, zpath in trans.items(): try: buf = cStringIO.StringIO(zf.read(zpath)) locale._translations[code] = GNUTranslations(buf) except: pass locale._use_gettext = True locale.set_default_locale("zh_CN")
def application(master, language, debug): if os.environ.get("AS_TLINJECT_SECRET", ""): print("TLInject is enabled for this server.") if not os.environ.get("AS_COOKIE_SECRET"): raise ValueError("You need to set AS_COOKIE_SECRET in the environment.") locale.set_default_locale("en") locale.load_gettext_translations(readonly_app_path("gettext"), "tornado") strings = static_strings() db_coordinator = database.DatabaseCoordinator() have_preamble_extra = os.path.exists(readonly_app_path("webui", "t_preamble_extra.html")) have_footer_extra = os.path.exists(readonly_app_path("webui", "t_footer_extra.html")) vi_class = namedtuple("runtime_info_t", ("app_revision", "host_id")) runtime_info = vi_class(os.environ.get("AS_GIT_REVISION"), os.environ.get("AS_HOST_ID")) application = Application( dispatch.ROUTES, db_coordinator=db_coordinator, master=libcard2.master.MasterData(master), more_masters=create_more_masters(), string_access=create_dict_aggregator(master, language), image_server=os.environ.get("AS_IMAGE_SERVER"), template_path=readonly_app_path("webui"), runtime_info=runtime_info, tlinject_secret=os.environ.get("AS_TLINJECT_SECRET", "").encode("utf8"), ui_methods=pageutils.UI_METHODS, static_path=readonly_app_path("static"), static_strings=strings, debug=debug, autoreload=debug, wds_host=os.environ.get("AS_WDS_HOST", "//localhost:5002") if debug else None, have_preamble_extra=have_preamble_extra, have_footer_extra=have_footer_extra, cookie_secret=os.environ.get("AS_COOKIE_SECRET"), feedback_link=os.environ.get("AS_FEEDBACK_URL"), ) return application
def render(self, tpl_name=None, lang=DEFAULT_LANG, page=None, tpl_kwargs=None, page_title=None, page_title_key=None, page_description=None, page_description_key=None, page_keywords=None, page_keywords_key=None, og_image=None, status_code=None, *args, **kwargs): if tpl_name is None: tpl_name = 'base.html' if page is not None: page_tpl_name = '%s.html' % page if file_exists(os.path.join(TEMPLATES_PATH, page_tpl_name)): tpl_name = page_tpl_name if lang not in LOCALE_LANG_SHORT_ONLY: lang = DEFAULT_LANG locale_code = get_locale_code_by_lang(lang) trans = Translation() if tpl_kwargs is None: tpl_kwargs = {} if page_title is None: if page_title_key is None: underscored_page = page.replace('-', '_') page_title_key = '%s_page_title' % underscored_page page_title = trans.find(page_title_key, lang) if page_description is None: if page_description_key is None: page_description_key = 'page_description' page_description = trans.find(page_description_key, lang) if page_keywords is None: if page_keywords_key is None: page_keywords_key = 'page_keywords' page_keywords = trans.find(page_keywords_key, lang, []) page_short_url = self.request.uri page_full_url = '%s://%s%s' % (BASE_DOMAIN_PROTOCOL, self.request.host, page_short_url) render_tpl_kwargs = { 'page_title': page_title, 'page_description': page_description, 'page_keywords': page_keywords, 'google_analytics_enabled': GOOGLE_ANALYTICS_ENABLED, 'google_analytics_track_id': GOOGLE_ANALYTICS_TRACK_ID, 'facebook_app_id': FACEBOOK_APP_ID, 'facebook_app_page': FACEBOOK_APP_PAGE, 'disqus': DISQUS.get(lang), 'base_domain': BASE_DOMAIN, 'media_domain': MEDIA_DOMAIN, 'base_domain_protocol': BASE_DOMAIN_PROTOCOL, 'media_domain_protocol': MEDIA_DOMAIN_PROTOCOL, 'base_path': '%s://%s' % (BASE_DOMAIN_PROTOCOL, BASE_DOMAIN), 'media_path': '%s://%s' % (MEDIA_DOMAIN_PROTOCOL, MEDIA_DOMAIN), 'langs': LOCALE_LANG_SHORT_ONLY, 'page_short_url': page_short_url, 'page_full_url': page_full_url, 'locale_code': locale_code, 'debug': DEBUG, 'page': page, 'lang': lang, } render_tpl_kwargs.update(tpl_kwargs) set_default_locale(locale_code) if status_code is not None: self.set_status(status_code=status_code) self._log() try: super(BaseHandler, self).render(tpl_name, **render_tpl_kwargs) except Exception as e: ip = self.request.remote_ip collected = TracebackCollector().collect(e) if DEBUG: raise else: self.render_error_404(lang) logger.error('ip: <%s>, collected: <%s>' % (ip, collected))
# coding=utf-8 """runtime context package """ from __future__ import absolute_import, division, print_function, with_statement import weakref # 理论上来说,下面这段代码应该写在`tools/locale.py`里 from tornado.locale import Locale, load_gettext_translations, set_default_locale import settings from tools import get_session_class, connection load_gettext_translations(settings.TRANSLATIONS_DIRECTORY, settings.TRANSLATIONS_DOMAIN) set_default_locale(settings.DEFAULT_LOCALE) __author__ = "Chuanchuan Tu" __copyright__ = "Copyright 2016, Kanjian" __credits__ = ["Chuanchuan Tu"] __license__ = "Apache" __version__ = "2.0" __maintainer__ = "Chuanchuan Tu" __email__ = "*****@*****.**" __status__ = "Production" __all__ = ["RuntimeContext"] class RuntimeContext(object): """运行时上下文
def __init__(self, settings): from controller.attachment import AttachmentHandler, AvatarHandler from controller.search import AutoCompleteHandler from controller.mycalendar import CalendarHandler, CalendarEventHandler, CalendarEventModifyHandler from controller.operation import OperationHandler, TodoItemLogHandler from controller.project import ProjectHandler, ProjectFilesHandler, ProjectColorHandler, ProjectDetailHandler, \ ProjectAccessHandler, NewProjectHandler from controller.todo import TodoListHandler, TodoListDetailHandler, TodoItemHandler, TodoItemDetailHandler, \ TodoItemModifyHandler, TodoItemCommentHandler, TodoListModifyHandler, TodoListCommentHandler from controller.topic import MessageHandler, MessageDetailHandler, NewMessageHandler, CommentHandler, CommentDetailHandler from controller.user import RegisterHandler, LoginHandler, SignOutHandler, TeamNewHandler, TeamHandler, SettingHandler, \ PeopleHandler, NewPeopleHandler, PeopleDetailHandler, JoinHandler from controller.calendarfeed import CalendarFeedHandler, CalendarFeedPortalHandler, CalendarItemFeedHandler from controller.mygraphs import ProjectGraphsHandler, ProjectDataHandler, ProjectTodoGraphsHandler handlers = [ ('/([0-9]+)', ProjectHandler), ('/([0-9]+)/attachment/([0-9A-Za-z]+)', AttachmentHandler), ('/([0-9]+)/calendar', CalendarHandler), ('/([0-9]+)/event', CalendarEventHandler), ('/([0-9]+)/event/([0-9]+)/trash', CalendarEventModifyHandler), ('/([0-9]+)/operation', OperationHandler), ('/([0-9]+)/project', ProjectHandler), ('/([0-9]+)/project/([0-9]+)/files', ProjectFilesHandler), ('/([0-9]+)/project/([0-9]+)/color', ProjectColorHandler), ('/([0-9]+)/project/([0-9]+)', ProjectDetailHandler), ('/([0-9]+)/project/([0-9]+)/access', ProjectAccessHandler), ('/([0-9]+)/project/([0-9]+)/graphs', ProjectGraphsHandler), ('/([0-9]+)/project/([0-9]+)/todographs', ProjectTodoGraphsHandler), ('/([0-9]+)/project/([0-9]+)/(messagedata|messageuserdata|tododata|todouserdata)', ProjectDataHandler), ('/([0-9]+)/project/new', NewProjectHandler), ('/([0-9]+)/project/([0-9]+)/todolist', TodoListHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)', TodoListDetailHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/trash', TodoListModifyHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/comment', TodoListCommentHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/todoitem', TodoItemHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/todoitem/([0-9]+)', TodoItemDetailHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/todoitem/([0-9]+)/log', TodoItemLogHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/todoitem/([0-9]+)/(done|undone|trash)', TodoItemModifyHandler), ('/([0-9]+)/project/([0-9]+)/todolist/([0-9]+)/todoitem/([0-9]+)/comment', TodoItemCommentHandler), ('/([0-9]+)/project/([0-9]+)/message', MessageHandler), ('/([0-9]+)/project/([0-9]+)/message/([0-9]+)', MessageDetailHandler), ('/([0-9]+)/project/([0-9]+)/message/new', NewMessageHandler), ('/([0-9]+)/project/([0-9]+)/message/([0-9]+)/comment', CommentHandler), ('/([0-9]+)/project/([0-9]+)/message/([0-9]+)/comment/([0-9]+)', CommentDetailHandler), ('/([0-9]+)/people', PeopleHandler), ('/([0-9]+)/people/([0-9]+)', PeopleDetailHandler), ('/([0-9]+)/people/new', NewPeopleHandler), ('/([0-9]+)/calendar_feeds', CalendarFeedPortalHandler), ('/([0-9]+)/calendar_feeds.ics', CalendarFeedHandler), ('/([0-9]+)/calendar_feeds/([cp][0-9]+).ics', CalendarItemFeedHandler), ('/avatar', AvatarHandler), ('/avatar/([0-9A-Za-z]+)', AvatarHandler), ('/attachment', AttachmentHandler), ('/register', RegisterHandler), ('/login', LoginHandler), ('/signOut', SignOutHandler), ('/team', TeamNewHandler), ('/', TeamNewHandler), ('/team/([0-9]+)', TeamHandler), ('/settings', SettingHandler), ('/join/([0-9a-z]+)', JoinHandler), ('/autocomplete', AutoCompleteHandler), ] pool = redis.ConnectionPool(host=options.redis.get("host"), port=options.redis.get("port"), db=0) r = redis.Redis(connection_pool=pool) self.session_store = RedisSessionStore(r) tornado.web.Application.__init__(self, handlers, **settings) qm = QueMail.get_instance() qm.init(options.smtp.get("host"), options.smtp.get("user"), options.smtp.get("password")) qm.start() from tornado import locale language_path = os.path.join(os.path.dirname(__file__), "i18n") locale.load_translations(language_path) locale.set_default_locale(options.locale)
# -*- coding: utf-8 -*- from tornado import locale #国际化 locale.load_translations("./protected/translations") locale.set_default_locale("zh_CN") _locale = locale.get() class AdminErrorMessage(object): error_message = { '001': _locale.translate('admin_userinfo_incomplete').encode( "utf-8"), #填写信息不完整 '002': _locale.translate('admin_user_not_exist').encode("utf-8"), #'该用户不存在' '003': _locale.translate('admin_password_no_correct').encode( "utf-8"), #'密码错误' '004': _locale.translate('admin_session_had_expired').encode( "utf-8"), #'您的会话已经过期' '005': _locale.translate('admin_delete_error').encode("utf-8"), #'删除失败' '006': _locale.translate('admin_add_error').encode("utf-8"), #'添加失败' '007': _locale.translate('admin_update_error').encode("utf-8"), #'修改失败' '008': _locale.translate('admin_same_error').encode("utf-8"), #'存在相同记录' } class ErrorMessage(object): error_message = { '001': _locale.translate('login_fail').encode("utf-8"), #登录失败
def set_default_locale(*args, **kwargs): return t_locale.set_default_locale(*args, **kwargs)
} if not autoescape: config['autoescape'] = None # create jinja evironment here to make its own cache works template_path = os.path.join(template_path, 'jinja') self.env = Environment(loader=FileSystemLoader(template_path), auto_reload=config['debug'], autoescape=autoescape, extensions=['jinja2.ext.autoescape']) self.env.filters['chunks'] = chunks self.env.filters['datetimeformat'] = datetimeformat super(Application, self).__init__(app_handlers, **config) if __name__ == "__main__": define("debug", default=0, help="run debug mode", type=int) define("autoescape", default=0, help="enable autoescape", type=int) define("port", default=8888, help="run on the given port", type=int) tornado.options.parse_command_line() translations = os.path.join(PROJECT_DIR, "../translations") load_translations(translations) set_default_locale("ru_RU") logging.info("start server on port %s" % options.port) application = tornado.httpserver.HTTPServer(Application()) application.listen(options.port) tornado.ioloop.IOLoop.instance().start()
import os from tornado.locale import set_default_locale from tornado.options import define, parse_command_line # MongoDB URL from mongostick.handlers.main import MainHandler define( 'mongodb_url', default='mongodb://127.0.0.1:27017', help='Connection URL to your MongoDB' ) parse_command_line() ROOT = os.path.dirname(os.path.abspath(__file__)) frontend_path = os.path.join(ROOT, 'frontend', 'build', ) settings = { 'debug': False, 'static_path': os.path.join(frontend_path, 'static'), 'index_file': os.path.join(frontend_path, 'index.html'), 'default_handler_class': MainHandler, } set_default_locale('en_US')
from tornado import autoreload, locale from tornado.web import StaticFileHandler import abeja.server.web.handlers settings = { "debug": True, "template_path": "./web/static/template", "cookie_secret": "DOVIETHOA", "ui_modules": {"UserToolbar": abeja.server.web.handlers.UserToolbar} } application = tornado.web.Application([ (r"/res/style/(.*)", StaticFileHandler, {"path": "./web/static/style"}), (r"/", abeja.server.web.handlers.HomeHandler), (r"/index.html", abeja.server.web.handlers.HomeHandler), (r"/login.html", abeja.server.web.handlers.UserLoginHandler), (r"/logout.html", abeja.server.web.handlers.UserLogoutHandler), (r"/register.html", abeja.server.web.handlers.UserRegisterHandler), ], **settings) locale.set_default_locale("vi_VN") locale.load_translations("./web/static/lang") if __name__ == "__main__": application.listen(3692) ioloop = tornado.ioloop.IOLoop.instance() autoreload.start(ioloop) ioloop.start()