def serve_javascript(request): """Serves the JavaScript translations.""" code = _js_translations.get(request.app) if code is None: t = request.app.translations code = 'pyClanSphere.addTranslations(%s)' % dump_json(dict( messages=dict((k.id, k.string) for k in t.client_keys), plural_expr=t.plural_expr, locale=str(t.locale) )) _js_translations[request.app] = code response = pyClanSphere.application.Response(code, mimetype='application/javascript') response.add_etag() response.make_conditional(request) return response
def json_service(req, identifier): """Handle a JSON service req.""" handler = req.app._services.get(identifier) if handler is None: raise NotFound() #! if this event returns a handler it is called instead of the default #! handler. Useful to intercept certain requests. for callback in signals.before_json_service_called.receivers_for(signals.ANY): rv = callback(identifier, handler) if rv is not None: handler = rv result = handler(req) #! called right after json callback returned some data with the identifier #! of the req method and the result object. Note that events *have* #! to return an object, even if it's just changed in place, otherwise the #! return value will be `null` (None). for callback in signals.after_json_service_called.receivers_for(signals.ANY): result = callback(identifier, result) return Response(dump_json(result), mimetype='text/javascript')