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.0053 ms |
| Controller Time | 0.0997 ms |
| Render Time | 2.1296 ms |
| Total Time | Engine | Count | Template | Content Type |
|---|---|---|---|---|
| 2.1296 ms | kajiki | - | otarelease.templates.index | text/html |
| 1.9338 ms | kajiki | 1 | otarelease.templates.index |
| Calls | Total | Percall | Cumu | CumuPer | Func |
|---|---|---|---|---|---|
| 1 | 0.002 | 0.0020 | 0.063 | 0.0630 | <tg/configurator/components/dispatch.py:113(_call_controller)> |
| 1 | 0.012 | 0.0120 | 0.061 | 0.0610 | <otarelease/controllers/root.py:62(index)> |
| 1 | 0.018000000000000002 | 0.0180 | 0.041 | 0.0410 | <tg/controllers/util.py:72(url)> |
| 1 | 0.007 | 0.0070 | 0.009000000000000001 | 0.0090 | <webob/request.py:426(host_url)> |
| 1 | 0.003 | 0.0030 | 0.008 | 0.0080 | <tg/configuration/tgconfig.py:27(__getitem__)> |
| 1 | 0.002 | 0.0020 | 0.007 | 0.0070 | <tg/request_local.py:232(_current_obj)> |
| 1 | 0.004999999999999999 | 0.0050 | 0.006 | 0.0060 | <tg/controllers/util.py:62(_build_url)> |
| 1 | 0.004 | 0.0040 | 0.004999999999999999 | 0.0050 | <tg/support/registry.py:341(_current_obj)> |
| 2/1 | 0.003 | 0.0015 | 0.004999999999999999 | 0.0050 | {built-in method builtins.getattr} |
| 1 | 0.002 | 0.0020 | 0.002 | 0.0020 | <tg/support/objectproxy.py:18(__getattr__)> |
| 2 | 0.002 | 0.0010 | 0.002 | 0.0010 | {method 'get' of 'dict' objects} |
| 2 | 0.001 | 0.0005 | 0.001 | 0.0005 | <tg/support/registry.py:52(_current_obj)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | <webob/descriptors.py:43(fget)> |
| 1 | 0.001 | 0.0010 | 0.001 | 0.0010 | {method 'startswith' of 'str' objects} |
| 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} |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {built-in method builtins.len} |
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 0x7f5167d7cd10> |
| 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 0x7f5167d7c150> |
| gunicorn.socket | <gevent._socket3.socket at 0x7f5167d73f30 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 | '36070' |
| 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 0x7f5167778cd0> |
| repoze.who.api | <repoze.who.api.API object at 0x7f5167778350> |
| 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 0x7f516770e750> |
| beaker.cache | <beaker.cache.CacheManager object at 0x7f5168019750> |
| beaker.session | {'_domain': None, '_path': '/', '_id': '4b4fe8752aae47b19bae3e59a3ec0d12'} |
| 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 |
|---|