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.2584 ms |
| Controller Time | 0.0839 ms |
| Render Time | 2.9240 ms |
| Total Time | Engine | Count | Template | Content Type |
|---|---|---|---|---|
| 2.9240 ms | kajiki | - | otarelease.templates.index | text/html |
| 2.7175 ms | kajiki | 1 | otarelease.templates.index |
| Calls | Total | Percall | Cumu | CumuPer | Func |
|---|---|---|---|---|---|
| 1 | 0.002 | 0.0020 | 0.053 | 0.0530 | <tg/configurator/components/dispatch.py:113(_call_controller)> |
| 1 | 0.007 | 0.0070 | 0.051 | 0.0510 | <otarelease/controllers/root.py:62(index)> |
| 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.003 | 0.0030 | 0.008 | 0.0080 | <tg/request_local.py:232(_current_obj)> |
| 1 | 0.003 | 0.0030 | 0.007 | 0.0070 | <tg/configuration/tgconfig.py:27(__getitem__)> |
| 1 | 0.004999999999999999 | 0.0050 | 0.006 | 0.0060 | <tg/controllers/util.py:62(_build_url)> |
| 2/1 | 0.002 | 0.0010 | 0.004999999999999999 | 0.0050 | {built-in method builtins.getattr} |
| 2 | 0.004 | 0.0020 | 0.004 | 0.0020 | <tg/support/registry.py:52(_current_obj)> |
| 1 | 0.001 | 0.0010 | 0.004 | 0.0040 | <tg/support/objectproxy.py:18(__getattr__)> |
| 1 | 0.002 | 0.0020 | 0.004 | 0.0040 | <tg/support/registry.py:341(_current_obj)> |
| 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 0x7f51677a9ed0> |
| 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 0x7f51677a9c90> |
| gunicorn.socket | <gevent._socket3.socket at 0x7f5167c05c90 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 | '43360' |
| 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 0x7f51675a9e50> |
| repoze.who.api | <repoze.who.api.API object at 0x7f51675a9110> |
| 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 0x7f516769d650> |
| beaker.cache | <beaker.cache.CacheManager object at 0x7f5168019750> |
| beaker.session | {'_domain': None, '_path': '/', '_id': '7830448fbc7f46d3b883701ee0c6a184'} |
| 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 |
|---|