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 | 4.1277 ms |
| Controller Time | 0.0820 ms |
| Render Time | 2.6414 ms |
| Total Time | Engine | Count | Template | Content Type |
|---|---|---|---|---|
| 2.6414 ms | kajiki | - | otarelease.templates.index | text/html |
| 2.4223 ms | kajiki | 1 | otarelease.templates.index |
| Calls | Total | Percall | Cumu | CumuPer | Func |
|---|---|---|---|---|---|
| 1 | 0.001 | 0.0010 | 0.05499999999999999 | 0.0550 | <tg/configurator/components/dispatch.py:113(_call_controller)> |
| 1 | 0.008 | 0.0080 | 0.054 | 0.0540 | <otarelease/controllers/root.py:62(index)> |
| 1 | 0.016 | 0.0160 | 0.039 | 0.0390 | <tg/controllers/util.py:72(url)> |
| 1 | 0.003 | 0.0030 | 0.009000000000000001 | 0.0090 | <tg/request_local.py:232(_current_obj)> |
| 1 | 0.007 | 0.0070 | 0.008 | 0.0080 | <webob/request.py:426(host_url)> |
| 1 | 0.003 | 0.0030 | 0.007 | 0.0070 | <tg/configuration/tgconfig.py:27(__getitem__)> |
| 2/1 | 0.003 | 0.0015 | 0.006 | 0.0060 | {built-in method builtins.getattr} |
| 1 | 0.004999999999999999 | 0.0050 | 0.004999999999999999 | 0.0050 | <tg/controllers/util.py:62(_build_url)> |
| 1 | 0.001 | 0.0010 | 0.004 | 0.0040 | <tg/support/objectproxy.py:18(__getattr__)> |
| 1 | 0.003 | 0.0030 | 0.004 | 0.0040 | <tg/support/registry.py:341(_current_obj)> |
| 2 | 0.003 | 0.0015 | 0.003 | 0.0015 | <tg/support/registry.py:52(_current_obj)> |
| 2 | 0.001 | 0.0005 | 0.001 | 0.0005 | {method 'get' of 'dict' 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 | <webob/descriptors.py:43(fget)> |
| 1 | 0.0 | 0.0000 | 0.0 | 0.0000 | {method 'startswith' of 'str' 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 0x7f5166cf3610> |
| 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 0x7f5166cf3fd0> |
| gunicorn.socket | <gevent._socket3.socket at 0x7f51677a51a0 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 | '40536' |
| 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 0x7f5167682f10> |
| repoze.who.api | <repoze.who.api.API object at 0x7f5167682910> |
| 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 0x7f5166ef4f50> |
| beaker.cache | <beaker.cache.CacheManager object at 0x7f5168019750> |
| beaker.session | {'_domain': None, '_path': '/', '_id': '328795b29d534e7080d0bfc5ebbe04f2'} |
| 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 |
|---|