Flask setup

This commit is contained in:
richard-dds 2018-08-01 10:51:14 -04:00
parent 1a6d42f385
commit 6a5d3d57cf
8 changed files with 318 additions and 223 deletions

13
Pipfile
View File

@ -4,20 +4,23 @@ verify_ssl = true
name = "pypi" name = "pypi"
[packages] [packages]
tornado = "==5.0.2" tornado = "*"
webassets = "==0.12.1" webassets = "*"
Unipath = "==1.1" Unipath = "*"
wtforms-tornado = "*" wtforms-tornado = "*"
pendulum = "*" pendulum = "*"
redis = "*" redis = "*"
sqlalchemy = "*" sqlalchemy = "*"
alembic = "*" alembic = "*"
"psycopg2-binary" = "*" "psycopg2-binary" = "*"
flask = "*"
flask-sqlalchemy = "*"
flask-assets = "*"
[dev-packages] [dev-packages]
bandit = "*" bandit = "*"
pytest = "==3.6.0" pytest = "*"
pytest-tornado = "==0.5.0" pytest-tornado = "*"
ipython = "*" ipython = "*"
ipdb = "*" ipdb = "*"
pylint = "*" pylint = "*"

196
Pipfile.lock generated
View File

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "7cd87f2c2c42bc776a6aa6f72fcbb8b30d4e703e50b6480ce1c8ace6ae6dd0a4" "sha256": "2ee6dd90ff3784e7b1781c680d690ac59118b4e3d72e8da3adf9e93d6e512bc7"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -24,6 +24,49 @@
"index": "pypi", "index": "pypi",
"version": "==1.0.0" "version": "==1.0.0"
}, },
"click": {
"hashes": [
"sha256:29f99fc6125fbc931b758dc053b3114e55c77a6e4c6c3a2674a2dc986016381d",
"sha256:f15516df478d5a56180fbf80e68f206010e6d160fc39fa508b65e035fd75130b"
],
"version": "==6.7"
},
"flask": {
"hashes": [
"sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48",
"sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05"
],
"index": "pypi",
"version": "==1.0.2"
},
"flask-assets": {
"hashes": [
"sha256:6031527b89fb3509d1581d932affa5a79dd348cfffb58d0aef99a43461d47847"
],
"index": "pypi",
"version": "==0.12"
},
"flask-sqlalchemy": {
"hashes": [
"sha256:3bc0fac969dd8c0ace01b32060f0c729565293302f0c4269beed154b46bec50b",
"sha256:5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53"
],
"index": "pypi",
"version": "==2.3.2"
},
"itsdangerous": {
"hashes": [
"sha256:cbb3fcf8d3e33df861709ecaf89d9e6629cff0a217bc2848f1b41cd30d360519"
],
"version": "==0.24"
},
"jinja2": {
"hashes": [
"sha256:74c935a1b8bb9a3947c50a54766a969d4846290e1e788ea44c1392163723c3bd",
"sha256:f84be1bb0040caca4cea721fcbbbbd61f9be9464ca236387158b0feea01914a4"
],
"version": "==2.10"
},
"mako": { "mako": {
"hashes": [ "hashes": [
"sha256:4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae" "sha256:4e02fde57bd4abb5ec400181e4c314f56ac3e49ba4fb8b0d50bba18cb27d25ae"
@ -38,19 +81,22 @@
}, },
"pendulum": { "pendulum": {
"hashes": [ "hashes": [
"sha256:0643d45824e6789b88187728337dfa6075a0233f6976c2abefba00d064156309", "sha256:0ec5371949e147753661e1e98721273170638034dfceb578f29d69d93d3d474b",
"sha256:3cc271195d8054bec06f54ff7d56ea6c2e2b5ad5dd6b532d787b34d2cabe6a65", "sha256:10ccdc8c6d004ba97883dd0f57503963ddf6cb83e849a16c4675ba18da657564",
"sha256:544e44d8a92954e5ef4db4fa8b662d3282f2ac7b7c2cbf4227dc193ba78b9e1e", "sha256:37bb54bcbb9d7fccd725f3fda69702e51ab3de9971b4c1c986505fbb3bc58bed",
"sha256:846478ab5f7480b3d850a09e44fe03830d448633c84f0b1066615ff6c34293aa", "sha256:51803352e40778f914ff7af3494788b404260b415d9a9d607a8cf73e5e120994",
"sha256:8bb523f759daeecfc0649369f198cbeb27a6608347354f4f847d21d579003db6", "sha256:5de295ca85761d9adf4020e6f3bed6eb933846ccf23b74e04b071f6d677f11a4",
"sha256:a449142063100f1b3c1119453c7569667c9ba79897305a1c50ca83a8c790f1e4", "sha256:73f850265adcf0986fcc0af83ae9c8c5a7ca3c4a2525184110478a8bfd1a77b3",
"sha256:b7ff156b3d7cccbdeeb63465578d9a4e6f57d463f6ff6d4474254208d08f8353", "sha256:8fe289356322f6b0f4510082b4c412a1496a64054a37ae86b24411868a1901c6",
"sha256:d8822a592bbc16576c44ec4625bff9187ed9b649d47714e4905a55adc5b25339", "sha256:c0401482dfa9fbd7005f2dfbf54ec61fd2c8130df37651ac2a3722d1f049ae4e",
"sha256:dd45c7b349faab69714df9835cdf8bf8bce50bf6fc471419d3b23ba33e1915a5", "sha256:c358ee65ddb99c2b1bf301458e43ed09ff6d40465bcc9928265246912fad4d0f",
"sha256:fac088b637b5db5a047a0e89194d8c3c9e9e9ce1665089240003bb7c05b92536" "sha256:d07962450e808556b3e6209a5830e2bbf8c7747129580c3b5b09e641f72617ab",
"sha256:dc05e6186c9c3b9969326aded9cba7a796744918581b25457f5148a5e3475d55",
"sha256:ee9466eea403e8e308c284d3055e285b97905a5ffb1566df0ef200b4f39c0f15",
"sha256:f7fa6220251a636112721e8158b9dd59018d818ec121047900934d80864eca62"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.0.2" "version": "==2.0.3"
}, },
"psycopg2-binary": { "psycopg2-binary": {
"hashes": [ "hashes": [
@ -106,7 +152,7 @@
"sha256:1d936da41ee06216d89fdc7ead1ee9a5da2811a8787515a976b646e110c3f622", "sha256:1d936da41ee06216d89fdc7ead1ee9a5da2811a8787515a976b646e110c3f622",
"sha256:e4ef42e82b0b493c5849eed98b5ab49d6767caf982127e9a33167f1153b36cc5" "sha256:e4ef42e82b0b493c5849eed98b5ab49d6767caf982127e9a33167f1153b36cc5"
], ],
"markers": "python_version != '3.1.*' and python_version != '3.2.*' and python_version != '3.0.*' and python_version != '3.3.*' and python_version >= '2.7'", "markers": "python_version != '3.0.*' and python_version != '3.1.*' and python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*'",
"version": "==2018.5" "version": "==2018.5"
}, },
"redis": { "redis": {
@ -133,14 +179,16 @@
}, },
"tornado": { "tornado": {
"hashes": [ "hashes": [
"sha256:1b83d5c10550f2653380b4c77331d6f8850f287c4f67d7ce1e1c639d9222fbc7", "sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
"sha256:408d129e9d13d3c55aa73f8084aa97d5f90ed84132e38d6932e63a67d5bec563", "sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
"sha256:88ce0282cce70df9045e515f578c78f1ebc35dcabe1d70f800c3583ebda7f5f5", "sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
"sha256:ba9fbb249ac5390bff8a1d6aa4b844fd400701069bda7d2e380dfe2217895101", "sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
"sha256:c050089173c2e9272244bccfb6a8615fb9e53b79420a5551acfa76094ecc3111" "sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
"sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
"sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
], ],
"index": "pypi", "index": "pypi",
"version": "==5.0.2" "version": "==5.1"
}, },
"unipath": { "unipath": {
"hashes": [ "hashes": [
@ -157,6 +205,13 @@
"index": "pypi", "index": "pypi",
"version": "==0.12.1" "version": "==0.12.1"
}, },
"werkzeug": {
"hashes": [
"sha256:c3fd7a7d41976d9f44db327260e263132466836cef6f91512889ed60ad26557c",
"sha256:d5da73735293558eb1651ee2fddc4d0dedcfa06538b8813a2e20011583c9e49b"
],
"version": "==0.14.1"
},
"wtforms": { "wtforms": {
"hashes": [ "hashes": [
"sha256:0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61", "sha256:0cdbac3e7f6878086c334aa25dc5a33869a3954e9d1e015130d65a69309b3b61",
@ -197,10 +252,10 @@
}, },
"astroid": { "astroid": {
"hashes": [ "hashes": [
"sha256:0a0c484279a5f08c9bcedd6fa9b42e378866a7dcc695206b92d59dc9f2d9760d", "sha256:a48b57ede295c3188ef5c84273bc2a8eadc46e4cbb001eae0d49fb5d1fabbb19",
"sha256:218e36cf8d98a42f16214e8670819ce307fa707d1dcf7f9af84c7aede1febc7f" "sha256:d066cdeec5faeb51a4be5010da612680653d844b57afd86a5c8315f2f801b4cc"
], ],
"version": "==2.0.1" "version": "==2.0.2"
}, },
"atomicwrites": { "atomicwrites": {
"hashes": [ "hashes": [
@ -279,7 +334,7 @@
"sha256:0e9a1227a3a0f3297a485715e72ee6eb77081b17b629367042b586e38c03c867", "sha256:0e9a1227a3a0f3297a485715e72ee6eb77081b17b629367042b586e38c03c867",
"sha256:b4840807a94a3bad0217d6ed3f9b65a1cc6e1db1c99e1184673056ae2c0a4c4d" "sha256:b4840807a94a3bad0217d6ed3f9b65a1cc6e1db1c99e1184673056ae2c0a4c4d"
], ],
"markers": "python_version != '3.2.*' and python_version != '3.0.*' and python_version >= '2.7' and python_version != '3.1.*'", "markers": "python_version != '3.1.*' and python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.0.*'",
"version": "==0.8.17" "version": "==0.8.17"
}, },
"gitdb2": { "gitdb2": {
@ -305,11 +360,11 @@
}, },
"ipython": { "ipython": {
"hashes": [ "hashes": [
"sha256:a0c96853549b246991046f32d19db7140f5b1a644cc31f0dc1edc86713b7676f", "sha256:007dcd929c14631f83daff35df0147ea51d1af420da303fd078343878bd5fb62",
"sha256:eca537aa61592aca2fef4adea12af8e42f5c335004dfa80c78caf80e8b525e5c" "sha256:b0f2ef9eada4a68ef63ee10b6dde4f35c840035c50fd24265f8052c98947d5a4"
], ],
"index": "pypi", "index": "pypi",
"version": "==6.4.0" "version": "==6.5.0"
}, },
"ipython-genutils": { "ipython-genutils": {
"hashes": [ "hashes": [
@ -324,7 +379,7 @@
"sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8", "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8",
"sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497" "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
], ],
"markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version != '3.2.*'", "markers": "python_version != '3.3.*' and python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'",
"version": "==4.3.4" "version": "==4.3.4"
}, },
"jedi": { "jedi": {
@ -377,11 +432,11 @@
}, },
"more-itertools": { "more-itertools": {
"hashes": [ "hashes": [
"sha256:2b6b9893337bfd9166bee6a62c2b0c9fe7735dcf85948b387ec8cba30e85d8e8", "sha256:c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092",
"sha256:6703844a52d3588f951883005efcf555e49566a48afd4db4e965d69b883980d3", "sha256:c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e",
"sha256:a18d870ef2ffca2b8463c0070ad17b5978056f403fb64e3f15fe62a52db21cc0" "sha256:fcbfeaea0be121980e15bc97b3817b5202ca73d0eae185b4550cbfce2a3ebb3d"
], ],
"version": "==4.2.0" "version": "==4.3.0"
}, },
"parso": { "parso": {
"hashes": [ "hashes": [
@ -398,10 +453,10 @@
}, },
"pbr": { "pbr": {
"hashes": [ "hashes": [
"sha256:754e766b4f4bad3aa68cfd532456298da1aa39375da8748392dbae90860d5f18", "sha256:1b8be50d938c9bb75d0eaf7eda111eec1bf6dc88a62a6412e33bf077457e0f45",
"sha256:c6bddbad814f23c7faaf88d8a186e9965243cc6206a23361b73023648e645794" "sha256:b486975c0cafb6beeb50ca0e17ba047647f229087bd74e37f4a7e2cac17d2caa"
], ],
"version": "==4.1.1" "version": "==4.2.0"
}, },
"pexpect": { "pexpect": {
"hashes": [ "hashes": [
@ -420,12 +475,11 @@
}, },
"pluggy": { "pluggy": {
"hashes": [ "hashes": [
"sha256:7f8ae7f5bdf75671a718d2daf0a64b7885f74510bcd98b1a0bb420eb9a9d0cff", "sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1",
"sha256:d345c8fe681115900d6da8d048ba67c25df42973bda370783cd58826442dcd7c", "sha256:95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1"
"sha256:e160a7fcf25762bb60efc7e171d4497ff1d8d2d75a3d0df7a21b76821ecbf5c5"
], ],
"markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version != '3.2.*'", "markers": "python_version != '3.3.*' and python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'",
"version": "==0.6.0" "version": "==0.7.1"
}, },
"prompt-toolkit": { "prompt-toolkit": {
"hashes": [ "hashes": [
@ -447,7 +501,7 @@
"sha256:3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7", "sha256:3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7",
"sha256:e31fb2767eb657cbde86c454f02e99cb846d3cd9d61b318525140214fdc0e98e" "sha256:e31fb2767eb657cbde86c454f02e99cb846d3cd9d61b318525140214fdc0e98e"
], ],
"markers": "python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.3.*' and python_version != '3.0.*' and python_version != '3.2.*'", "markers": "python_version != '3.3.*' and python_version >= '2.7' and python_version != '3.1.*' and python_version != '3.0.*' and python_version != '3.2.*'",
"version": "==1.5.4" "version": "==1.5.4"
}, },
"pygments": { "pygments": {
@ -459,19 +513,19 @@
}, },
"pylint": { "pylint": {
"hashes": [ "hashes": [
"sha256:2c90a24bee8fae22ac98061c896e61f45c5b73c2e0511a4bf53f99ba56e90434", "sha256:0edfec21270725c5aa8e8d8d06ef5666f766e0e748ed2f1ab23624727303b935",
"sha256:454532779425098969b8f54ab0f056000b883909f69d05905ea114df886e3251" "sha256:4cadcaa4f1fb19123d4baa758d9fbe6286c5b3aa513af6ea42a2d51d405db205"
], ],
"index": "pypi", "index": "pypi",
"version": "==2.0.1" "version": "==2.1.0"
}, },
"pytest": { "pytest": {
"hashes": [ "hashes": [
"sha256:39555d023af3200d004d09e51b4dd9fdd828baa863cded3fd6ba2f29f757ae2d", "sha256:8214ab8446104a1d0c17fbd218ec6aac743236c6ffbe23abc038e40213c60b88",
"sha256:c76e93f3145a44812955e8d46cdd302d8a45fbfc7bf22be24fe231f9d8d8853a" "sha256:e2b2c6e1560b8f9dc8dd600b0923183fbd68ba3d9bdecde04467be6dd296a384"
], ],
"index": "pypi", "index": "pypi",
"version": "==3.6.0" "version": "==3.7.0"
}, },
"pytest-tornado": { "pytest-tornado": {
"hashes": [ "hashes": [
@ -547,14 +601,16 @@
}, },
"tornado": { "tornado": {
"hashes": [ "hashes": [
"sha256:1b83d5c10550f2653380b4c77331d6f8850f287c4f67d7ce1e1c639d9222fbc7", "sha256:1c0816fc32b7d31b98781bd8ebc7a9726d7dce67407dc353a2e66e697e138448",
"sha256:408d129e9d13d3c55aa73f8084aa97d5f90ed84132e38d6932e63a67d5bec563", "sha256:4f66a2172cb947387193ca4c2c3e19131f1c70fa8be470ddbbd9317fd0801582",
"sha256:88ce0282cce70df9045e515f578c78f1ebc35dcabe1d70f800c3583ebda7f5f5", "sha256:5327ba1a6c694e0149e7d9126426b3704b1d9d520852a3e4aa9fc8fe989e4046",
"sha256:ba9fbb249ac5390bff8a1d6aa4b844fd400701069bda7d2e380dfe2217895101", "sha256:6a7e8657618268bb007646b9eae7661d0b57f13efc94faa33cd2588eae5912c9",
"sha256:c050089173c2e9272244bccfb6a8615fb9e53b79420a5551acfa76094ecc3111" "sha256:a9b14804783a1d77c0bd6c66f7a9b1196cbddfbdf8bceb64683c5ae60bd1ec6f",
"sha256:c58757e37c4a3172949c99099d4d5106e4d7b63aa0617f9bb24bfbff712c7866",
"sha256:d8984742ce86c0855cccecd5c6f54a9f7532c983947cff06f3a0e2115b47f85c"
], ],
"index": "pypi", "index": "pypi",
"version": "==5.0.2" "version": "==5.1"
}, },
"traitlets": { "traitlets": {
"hashes": [ "hashes": [
@ -563,6 +619,42 @@
], ],
"version": "==4.3.2" "version": "==4.3.2"
}, },
"typed-ast": {
"hashes": [
"sha256:0948004fa228ae071054f5208840a1e88747a357ec1101c17217bfe99b299d58",
"sha256:10703d3cec8dcd9eef5a630a04056bbc898abc19bac5691612acba7d1325b66d",
"sha256:1f6c4bd0bdc0f14246fd41262df7dfc018d65bb05f6e16390b7ea26ca454a291",
"sha256:25d8feefe27eb0303b73545416b13d108c6067b846b543738a25ff304824ed9a",
"sha256:29464a177d56e4e055b5f7b629935af7f49c196be47528cc94e0a7bf83fbc2b9",
"sha256:2e214b72168ea0275efd6c884b114ab42e316de3ffa125b267e732ed2abda892",
"sha256:3e0d5e48e3a23e9a4d1a9f698e32a542a4a288c871d33ed8df1b092a40f3a0f9",
"sha256:519425deca5c2b2bdac49f77b2c5625781abbaf9a809d727d3a5596b30bb4ded",
"sha256:57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa",
"sha256:668d0cec391d9aed1c6a388b0d5b97cd22e6073eaa5fbaa6d2946603b4871efe",
"sha256:68ba70684990f59497680ff90d18e756a47bf4863c604098f10de9716b2c0bdd",
"sha256:6de012d2b166fe7a4cdf505eee3aaa12192f7ba365beeefaca4ec10e31241a85",
"sha256:79b91ebe5a28d349b6d0d323023350133e927b4de5b651a8aa2db69c761420c6",
"sha256:8550177fa5d4c1f09b5e5f524411c44633c80ec69b24e0e98906dd761941ca46",
"sha256:898f818399cafcdb93cbbe15fc83a33d05f18e29fb498ddc09b0214cdfc7cd51",
"sha256:94b091dc0f19291adcb279a108f5d38de2430411068b219f41b343c03b28fb1f",
"sha256:a26863198902cda15ab4503991e8cf1ca874219e0118cbf07c126bce7c4db129",
"sha256:a8034021801bc0440f2e027c354b4eafd95891b573e12ff0418dec385c76785c",
"sha256:bc978ac17468fe868ee589c795d06777f75496b1ed576d308002c8a5756fb9ea",
"sha256:c05b41bc1deade9f90ddc5d988fe506208019ebba9f2578c622516fd201f5863",
"sha256:c9b060bd1e5a26ab6e8267fd46fc9e02b54eb15fffb16d112d4c7b1c12987559",
"sha256:edb04bdd45bfd76c8292c4d9654568efaedf76fe78eb246dde69bdb13b2dad87",
"sha256:f19f2a4f547505fe9072e15f6f4ae714af51b5a681a97f187971f50c283193b6"
],
"version": "==1.1.0"
},
"typing": {
"hashes": [
"sha256:3a887b021a77b292e151afb75323dea88a7bc1b3dfa92176cff8e44c8b68bddf",
"sha256:b2c689d54e1144bbcfd191b0832980a21c2dbcf7b5ff7a66248a60c90e951eb8",
"sha256:d400a9344254803a2368533e4533a4200d21eb7b6b729c173bc38201a74db3f2"
],
"version": "==3.6.4"
},
"watchdog": { "watchdog": {
"hashes": [ "hashes": [
"sha256:7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162" "sha256:7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162"

12
app.py
View File

@ -1,15 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
import tornado.ioloop from atst.app import make_app, make_config
from atst.app import make_app, make_deps, make_config
config = make_config() config = make_config()
deps = make_deps(config) app = make_app(config)
app = make_app(config, deps)
if __name__ == "__main__": if __name__ == "__main__":
port = int(config["default"]["PORT"]) port = int(config["PORT"])
app.listen(port) app.run(port=port)
print("Listening on http://localhost:%i" % port) print("Listening on http://localhost:%i" % port)
tornado.ioloop.IOLoop.current().start()

View File

@ -1,160 +1,166 @@
import os import os
from configparser import ConfigParser from configparser import ConfigParser
import tornado.web
from tornado.web import url
from redis import StrictRedis from redis import StrictRedis
from flask import Flask
from unipath import Path
from atst.handlers.main import Main
from atst.handlers.root import Root
from atst.handlers.login_redirect import LoginRedirect
from atst.handlers.workspaces import Workspaces
from atst.handlers.workspace import Workspace
from atst.handlers.workspace_members import WorkspaceMembers
from atst.handlers.request import Request
from atst.handlers.request_financial_verification import RequestFinancialVerification
from atst.handlers.request_new import RequestNew
from atst.handlers.request_submit import RequestsSubmit
from atst.handlers.dev import Dev
from atst.home import home
from atst.api_client import ApiClient from atst.api_client import ApiClient
from atst.sessions import RedisSessions from atst.sessions import RedisSessions
from atst import ui_modules from atst.database import db
from atst import ui_methods from atst.assets import assets
from atst.database import make_db from atst.routes import bp
ENV = os.getenv("TORNADO_ENV", "dev") ENV = os.getenv("TORNADO_ENV", "dev")
def make_app(config, deps, **kwargs): def make_app(config):
routes = [ parent_dir = Path().parent
url(r"/", Root, {"page": "root"}, name="root"),
url(
r"/login-redirect",
LoginRedirect,
{
"sessions": deps["sessions"],
"authnid_client": deps["authnid_client"],
"db_session": deps["db_session"],
},
name="login_redirect",
),
url(r"/home", Main, {"page": "home"}, name="home"),
url(r"/styleguide", Main, {"page": "styleguide"}, name="styleguide"),
url(
r"/workspaces/blank",
Main,
{"page": "workspaces_blank"},
name="workspaces_blank",
),
url(
r"/workspaces",
Workspaces,
{"page": "workspaces", "db_session": deps["db_session"]},
name="workspaces",
),
url(
r"/requests",
Request,
{"page": "requests", "db_session": deps["db_session"]},
name="requests",
),
url(
r"/requests/new",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_new",
),
url(
r"/requests/new/([0-9])",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_form_new",
),
url(
r"/requests/new/([0-9])/(\S+)",
RequestNew,
{
"page": "requests_new",
"db_session": deps["db_session"],
},
name="request_form_update",
),
url(
r"/requests/submit/(\S+)",
RequestsSubmit,
{"db_session": deps["db_session"]},
name="requests_submit",
),
# Dummy request/approval screen
url(
r"/request/approval",
Main,
{"page": "request_approval"},
name="request_approval",
),
url(
r"/requests/verify/(\S+)",
RequestFinancialVerification,
{
"page": "financial_verification",
"db_session": deps["db_session"],
},
name="financial_verification",
),
url(
r"/requests/financial_verification_submitted",
Main,
{"page": "requests/financial_verification_submitted"},
name="financial_verification_submitted",
),
url(r"/users", Main, {"page": "users"}, name="users"),
url(r"/reports", Main, {"page": "reports"}, name="reports"),
url(r"/calculator", Main, {"page": "calculator"}, name="calculator"),
url(
r"/workspaces/(\S+)/members", WorkspaceMembers, {}, name="workspace_members"
),
url(r"/workspaces/(\S+)/projects", Workspace, {}, name="workspace_projects"),
url(r"/workspaces/123456/projects/789/edit", Main, {"page": "project_edit"}, name="project_edit"),
url(r"/workspaces/123456/members/789/edit", Main, {"page": "member_edit"}, name="member_edit"),
]
if not ENV == "production": app = Flask(
routes += [ __name__,
url( template_folder=parent_dir.child("templates").absolute(),
r"/login-dev", static_folder=parent_dir.child("static").absolute()
Dev,
{
"action": "login",
"sessions": deps["sessions"],
"db_session": deps["db_session"],
},
name="dev-login",
)
]
app = tornado.web.Application(
routes,
login_url="/",
template_path=home.child("templates"),
static_path=home.child("static"),
cookie_secret=config["default"]["COOKIE_SECRET"],
debug=config["default"].getboolean("DEBUG"),
ui_modules=ui_modules,
ui_methods=ui_methods,
**kwargs
) )
app.config = config app.config.update(config)
app.sessions = deps["sessions"]
db.init_app(app)
assets.init_app(app)
app.register_blueprint(bp)
return app return app
# def make_app(config, deps, **kwargs):
# routes = [
# url(r"/", Root, {"page": "root"}, name="root"),
# url(
# r"/login-redirect",
# LoginRedirect,
# {
# "sessions": deps["sessions"],
# "authnid_client": deps["authnid_client"],
# "db_session": deps["db_session"],
# },
# name="login_redirect",
# ),
# url(r"/home", Main, {"page": "home"}, name="home"),
# url(r"/styleguide", Main, {"page": "styleguide"}, name="styleguide"),
# url(
# r"/workspaces/blank",
# Main,
# {"page": "workspaces_blank"},
# name="workspaces_blank",
# ),
# url(
# r"/workspaces",
# Workspaces,
# {"page": "workspaces", "db_session": deps["db_session"]},
# name="workspaces",
# ),
# url(
# r"/requests",
# Request,
# {"page": "requests", "db_session": deps["db_session"]},
# name="requests",
# ),
# url(
# r"/requests/new",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_new",
# ),
# url(
# r"/requests/new/([0-9])",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_form_new",
# ),
# url(
# r"/requests/new/([0-9])/(\S+)",
# RequestNew,
# {
# "page": "requests_new",
# "db_session": deps["db_session"],
# },
# name="request_form_update",
# ),
# url(
# r"/requests/submit/(\S+)",
# RequestsSubmit,
# {"db_session": deps["db_session"]},
# name="requests_submit",
# ),
# # Dummy request/approval screen
# url(
# r"/request/approval",
# Main,
# {"page": "request_approval"},
# name="request_approval",
# ),
# url(
# r"/requests/verify/(\S+)",
# RequestFinancialVerification,
# {
# "page": "financial_verification",
# "db_session": deps["db_session"],
# },
# name="financial_verification",
# ),
# url(
# r"/requests/financial_verification_submitted",
# Main,
# {"page": "requests/financial_verification_submitted"},
# name="financial_verification_submitted",
# ),
# url(r"/users", Main, {"page": "users"}, name="users"),
# url(r"/reports", Main, {"page": "reports"}, name="reports"),
# url(r"/calculator", Main, {"page": "calculator"}, name="calculator"),
# url(
# r"/workspaces/(\S+)/members", WorkspaceMembers, {}, name="workspace_members"
# ),
# url(r"/workspaces/(\S+)/projects", Workspace, {}, name="workspace_projects"),
# url(r"/workspaces/123456/projects/789/edit", Main, {"page": "project_edit"}, name="project_edit"),
# url(r"/workspaces/123456/members/789/edit", Main, {"page": "member_edit"}, name="member_edit"),
# ]
# if not ENV == "production":
# routes += [
# url(
# r"/login-dev",
# Dev,
# {
# "action": "login",
# "sessions": deps["sessions"],
# "db_session": deps["db_session"],
# },
# name="dev-login",
# )
# ]
# app = tornado.web.Application(
# routes,
# login_url="/",
# template_path=home.child("templates"),
# static_path=home.child("static"),
# cookie_secret=config["default"]["COOKIE_SECRET"],
# debug=config["default"].getboolean("DEBUG"),
# ui_modules=ui_modules,
# ui_methods=ui_methods,
# **kwargs
# )
# app.config = config
# app.sessions = deps["sessions"]
# return app
def make_deps(config): def make_deps(config):
# we do not want to do SSL verify services in test and development # we do not want to do SSL verify services in test and development
validate_cert = ENV == "production" validate_cert = ENV == "production"
@ -206,4 +212,4 @@ def make_config():
) )
config.set("default", "DATABASE_URI", database_uri) config.set("default", "DATABASE_URI", database_uri)
return config return config["default"]

View File

@ -1,16 +1,13 @@
from webassets import Environment, Bundle from flask_assets import Environment, Bundle
from atst.home import home from atst.home import home
environment = Environment( assets = Environment()
directory=home.child("scss"),
url="/static"
)
css = Bundle( css = Bundle(
"atat.scss", "../scss/atat.scss",
filters="scss", filters="scss",
output="../static/assets/out.%(version)s.css", output="../static/assets/out.%(version)s.css",
depends=("**/*.scss"), depends=("**/*.scss"),
) )
environment.register("css", css) assets.register("css", css)

View File

@ -1,8 +1,3 @@
from sqlalchemy import create_engine from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.orm import sessionmaker, scoped_session
db = SQLAlchemy()
def make_db(config):
engine = create_engine(config['default']['DATABASE_URI'])
session = scoped_session(sessionmaker(bind=engine))
return session

View File

@ -1,9 +1,8 @@
import tornado.web import tornado.web
from atst.assets import environment
from atst.sessions import SessionNotFoundError from atst.sessions import SessionNotFoundError
from atst.domain.users import Users from atst.domain.users import Users
helpers = {"assets": environment} helpers = {"assets": None}
class BaseHandler(tornado.web.RequestHandler): class BaseHandler(tornado.web.RequestHandler):

7
atst/routes/__init__.py Normal file
View File

@ -0,0 +1,7 @@
from flask import Blueprint, render_template
bp = Blueprint("atst", __name__)
@bp.route("/")
def home():
return render_template("home.html")