Rapid distribute your company application
TurboGears 2 is rapid web application development toolkit designed to make your life easier.
Design your data model, Create the database, and Add some bootstrap data.
Decide your URLs, Program your controller methods, Design your
templates, and place some static files (CSS and/or Javascript).
Test your source, Generate project documents, Build a distribution.
| Action | Time Spent |
|---|---|
| Total Time | 3.9778 ms |
| Controller Time | 0.1175 ms |
| Render Time | 2.3944 ms |
| Total Time | Engine | Count | Template | Content Type |
|---|---|---|---|---|
| 2.3944 ms | kajiki | - | otarelease.templates.index | text/html |
| 2.2383 ms | kajiki | 1 | otarelease.templates.index |
| Calls | Total | Percall | Cumu | CumuPer | Func |
|---|---|---|---|---|---|
| 1 | 0.001 | 0.0010 | 0.093 | 0.0930 | <tg/configurator/components/dispatch.py:113(_call_controller)> |
| 1 | 0.007 | 0.0070 | 0.092 | 0.0920 | <otarelease/controllers/root.py:62(index)> |
| 1 | 0.043 | 0.0430 | 0.048 | 0.0480 | <tg/configuration/tgconfig.py:27(__getitem__)> |
| 1 | 0.013 | 0.0130 | 0.037 | 0.0370 | <tg/controllers/util.py:72(url)> |
| 1 | 0.007 | 0.0070 | 0.008 | 0.0080 | <webob/request.py:426(host_url)> |
| 1 | 0.002 | 0.0020 | 0.008 | 0.0080 | <tg/request_local.py:232(_current_obj)> |
| 1 | 0.004999999999999999 | 0.0050 | 0.006 | 0.0060 | <tg/controllers/util.py:62(_build_url)> |
| 2/1 | 0.003 | 0.0015 | 0.006 | 0.0060 | {built-in method builtins.getattr} |
| 1 | 0.003 | 0.0030 | 0.004999999999999999 | 0.0050 | <tg/support/registry.py:341(_current_obj)> |
| 2 | 0.003 | 0.0015 | 0.003 | 0.0015 | <tg/support/registry.py:52(_current_obj)> |
| 1 | 0.002 | 0.0020 | 0.003 | 0.0030 | <tg/support/objectproxy.py:18(__getattr__)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | <webob/descriptors.py:43(fget)> |
| 2 | 0.001 | 0.0005 | 0.001 | 0.0005 | {method 'get' of 'dict' objects} |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | {method 'startswith' of 'str' objects} |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | {built-in method builtins.len} |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {method 'disable' of '_lsprof.Profiler' objects} |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {built-in method builtins.isinstance} |
Nothing here.
Nothing here.
Nothing here.
| Name | Value |
|---|---|
| SERVER_SOFTWARE | 'gunicorn/20.1.0' |
| REQUEST_METHOD | 'GET' |
| QUERY_STRING | '' |
| SERVER_PROTOCOL | 'HTTP/1.1' |
| HTTP_HOST | 'ota.sensors.staging.tigroup.dev' |
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)' |
| HTTP_ACCEPT | '*/*' |
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate' |
| HTTP_X_FORWARDED_FOR | '172.24.0.1' |
| HTTP_X_FORWARDED_HOST | 'ota.sensors.staging.tigroup.dev' |
| HTTP_X_FORWARDED_PORT | '443' |
| HTTP_X_FORWARDED_PROTO | 'https' |
| HTTP_X_FORWARDED_SERVER | 'mainserver-traefik' |
| HTTP_X_REAL_IP | '172.24.0.1' |
| REMOTE_ADDR | '172.24.0.1' |
| SERVER_NAME | '0.0.0.0' |
| SERVER_PORT | '8080' |
| PATH_INFO | '/' |
| SCRIPT_NAME | '' |
| Name | Value |
|---|---|
| identity | None |
| response | "{'_status': '200 OK', '_headers': ResponseHeaders([('Cache-Control', 'no-cache'), ('Pragma', 'no-cache'), ('Content-Length', '0'), ('Access-Control-Allow-Origin', 'http://localhost:8080'), ('Access-Control-Allow-Credentials', 'true'), ('Content-Type', 'text/html; charset=utf-8')]), '_headerlist': [('Cache-Control', 'no-cache'), ('Pragma', 'no-cache'), ('Content-Length', '0'), ('Access-Control-Allow-Origin', 'http://localhost:8080'), ('Access-Control-Allow-Credentials', 'true'), ('Content-Type', 'text/html; charset=utf-8')], 'conditional_response': False, '_app_iter': [b'']}" |
| Name | Value |
|---|---|
| wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f516649b9d0> |
| wsgi.version | (1, 0) |
| wsgi.multithread | True |
| wsgi.multiprocess | False |
| wsgi.run_once | False |
| wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
| wsgi.input_terminated | True |
| SERVER_SOFTWARE | 'gunicorn/20.1.0' |
| wsgi.input | <gunicorn.http.body.Body object at 0x7f516649b890> |
| gunicorn.socket | <gevent._socket3.socket at 0x7f5167586600 object, fd=21, family=2, type=1, proto=6> |
| REQUEST_METHOD | 'GET' |
| QUERY_STRING | '' |
| RAW_URI | '/' |
| SERVER_PROTOCOL | 'HTTP/1.1' |
| HTTP_HOST | 'ota.sensors.staging.tigroup.dev' |
| HTTP_USER_AGENT | 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)' |
| HTTP_ACCEPT | '*/*' |
| HTTP_ACCEPT_ENCODING | 'gzip, br, zstd, deflate' |
| HTTP_X_FORWARDED_FOR | '172.24.0.1' |
| HTTP_X_FORWARDED_HOST | 'ota.sensors.staging.tigroup.dev' |
| HTTP_X_FORWARDED_PORT | '443' |
| HTTP_X_FORWARDED_PROTO | 'https' |
| HTTP_X_FORWARDED_SERVER | 'mainserver-traefik' |
| HTTP_X_REAL_IP | '172.24.0.1' |
| wsgi.url_scheme | 'http' |
| REMOTE_ADDR | '172.24.0.1' |
| REMOTE_PORT | '52424' |
| SERVER_NAME | '0.0.0.0' |
| SERVER_PORT | '8080' |
| PATH_INFO | '/' |
| SCRIPT_NAME | '' |
| webob._parsed_query_vars | (GET([]), '') |
| paste.registry | <tg.support.registry.Registry object at 0x7f516649b450> |
| repoze.who.api | <repoze.who.api.API object at 0x7f516649b350> |
| repoze.who.plugins | {'cookie': <AuthTktCookiePlugin 139987614014032>, 'form': <FastFormPlugin:/login_handler 139987614013584>, 'main_identifier': <FastFormPlugin:/login_handler 139987614013584>, 'tgappauth': <tg.configuration.auth.metadata._AuthMetadataAuthenticator object at 0x7f5168019bd0>} |
| repoze.who.logger | <Logger auth (WARNING)> |
| paste.cookies | (<SimpleCookie: >, '') |
| tg.locals | <tg.wsgiapp.RequestLocals object at 0x7f5166db6550> |
| beaker.cache | <beaker.cache.CacheManager object at 0x7f5168019750> |
| beaker.session | {'_domain': None, '_path': '/', '_id': '3ad07ee4547d4db4b59885d25fa61df2'} |
| beaker.get_session | <bound method SessionApplicationWrapper._get_session of <tg.appwrappers.session.SessionApplicationWrapper object at 0x7f5168019910>> |
| webob.adhoc_attrs | {'identity': None} |
| webob._parsed_cookies | ({}, '') |
| Path | Controller | Exposed Methods |
|---|---|---|
| / | <class 'otarelease.controllers.root.RootController'> | index, about, environ, data, manage_permission_only, editor_user_only, login, post_login, post_logout, react_page |
| /secc | <class 'otarelease.controllers.secure.SecureController'> | index, some_where |
| /admin | <class 'tgext.admin.controller.AdminController'> | index, _lookup, lookup |
| /company | <class 'otarelease.controllers.company.CompanyController'> | index, new, create, edit, save, delete |
| /product | <class 'otarelease.controllers.product.ProductController'> | index, new, create, edit, save, delete, recap |
| /release | <class 'otarelease.controllers.release.ReleaseController'> | index, new, create, edit, save, delete, recap |
| /api | <class 'otarelease.controllers.api.ApiRestController'> | index, _before, options |
| /api/login | <class 'otarelease.controllers.rest.login_rest.LoginRestController'> | index, post |
| /api/company | <class 'otarelease.controllers.rest.company_rest.CompanyRestController'> | index, get_all, get_one, get |
| /api/ci_cd_release | <class 'otarelease.controllers.rest.ci_cd_release.CiCdReleaseRestController'> | get, post, delete, keep_last_releases |
| /error | <class 'otarelease.controllers.error.ErrorController'> | document |
| /_debugbar | <class 'tgext.debugbar.controller.DebugBarController'> | perform_sql, perform_ming |
| /_debugbar/statics | <class 'tgext.debugbar.controller.StaticsController'> | _default |
| Level | Time | Message | Location |
|---|