Merge branch 'dev' into chore/fix_validation_errors
This commit is contained in:
commit
4e9fe3a6bb
2
Pipfile
2
Pipfile
|
@ -48,6 +48,8 @@ apscheduler = "*"
|
|||
connexion = {extras = [ "swagger-ui",], version = "*"}
|
||||
sentry-sdk = {extras = [ "flask",], version = "==0.14.4"}
|
||||
dateparser = "*"
|
||||
# TIP: If you want to test local changes to SpiffWorkflow, do:
|
||||
# pipenv install --editable ../SpiffWorkflow (but fix things back before commiting!)
|
||||
spiffworkflow = {git = "https://github.com/sartography/SpiffWorkflow"}
|
||||
|
||||
[requires]
|
||||
|
|
|
@ -33,11 +33,11 @@
|
|||
},
|
||||
"amqp": {
|
||||
"hashes": [
|
||||
"sha256:1e5f707424e544078ca196e72ae6a14887ce74e02bd126be54b7c03c971bef18",
|
||||
"sha256:9cd81f7b023fc04bbb108718fbac674f06901b77bfcdce85b10e2a5d0ee91be5"
|
||||
"sha256:446b3e8a8ebc2ceafd424ffcaab1c353830d48161256578ed7a65448e601ebed",
|
||||
"sha256:a575f4fa659a2290dc369b000cff5fea5c6be05fe3f2d5e511bcf56c7881c3ef"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==5.0.9"
|
||||
"version": "==5.1.0"
|
||||
},
|
||||
"aniso8601": {
|
||||
"hashes": [
|
||||
|
@ -573,11 +573,11 @@
|
|||
},
|
||||
"itsdangerous": {
|
||||
"hashes": [
|
||||
"sha256:29285842166554469a56d427addc0843914172343784cb909695fdbe90a3e129",
|
||||
"sha256:d848fcb8bc7d507c4546b448574e8a44fc4ea2ba84ebf8d783290d53e81992f5"
|
||||
"sha256:7b7d3023cd35d9cb0c1fd91392f8c95c6fa02c59bf8ad64b8849be3401b95afb",
|
||||
"sha256:935642cd4b987cdbee7210080004033af76306757ff8b4c0a506a4b6e06f02cf"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==2.1.0"
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==2.1.1"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
|
@ -592,16 +592,16 @@
|
|||
"sha256:636694eb41b3535ed608fe04129f26542b59ed99808b4f688aa32dcf55317a83",
|
||||
"sha256:77281a1f71684953ee8b3d488371b162419767973789272434bbc3f29d9c8823"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==4.4.0"
|
||||
},
|
||||
"kombu": {
|
||||
"hashes": [
|
||||
"sha256:81a90c1de97e08d3db37dbf163eaaf667445e1068c98bfd89f051a40e9f6dbbd",
|
||||
"sha256:eeaeb8024f3a5cfc71c9250e45cddb8493f269d74ada2f74909a93c59c4b4179"
|
||||
"sha256:37cee3ee725f94ea8bb173eaab7c1760203ea53bbebae226328600f9d2799610",
|
||||
"sha256:8b213b24293d3417bcf0d2f5537b7f756079e3ea232a8386dcc89a59fd2361a4"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==5.2.3"
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==5.2.4"
|
||||
},
|
||||
"ldap3": {
|
||||
"hashes": [
|
||||
|
@ -740,7 +740,7 @@
|
|||
"sha256:fabbe18087c3d33c5824cb145ffca52eccd053061df1d79d4b66dafa5ad2a5ea",
|
||||
"sha256:fc3150f85e2dbcf99e65238c842d1cfe69d3e7649b19864c1cc043213d9cd730"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==2.1.0"
|
||||
},
|
||||
"marshmallow": {
|
||||
|
@ -769,28 +769,28 @@
|
|||
},
|
||||
"numpy": {
|
||||
"hashes": [
|
||||
"sha256:03ae5850619abb34a879d5f2d4bb4dcd025d6d8fb72f5e461dae84edccfe129f",
|
||||
"sha256:076aee5a3763d41da6bef9565fdf3cb987606f567cd8b104aded2b38b7b47abf",
|
||||
"sha256:0b536b6840e84c1c6a410f3a5aa727821e6108f3454d81a5cd5900999ef04f89",
|
||||
"sha256:15efb7b93806d438e3bc590ca8ef2f953b0ce4f86f337ef4559d31ec6cf9d7dd",
|
||||
"sha256:168259b1b184aa83a514f307352c25c56af111c269ffc109d9704e81f72e764b",
|
||||
"sha256:2638389562bda1635b564490d76713695ff497242a83d9b684d27bb4a6cc9d7a",
|
||||
"sha256:3556c5550de40027d3121ebbb170f61bbe19eb639c7ad0c7b482cd9b560cd23b",
|
||||
"sha256:4a176959b6e7e00b5a0d6f549a479f869829bfd8150282c590deee6d099bbb6e",
|
||||
"sha256:515a8b6edbb904594685da6e176ac9fbea8f73a5ebae947281de6613e27f1956",
|
||||
"sha256:55535c7c2f61e2b2fc817c5cbe1af7cb907c7f011e46ae0a52caa4be1f19afe2",
|
||||
"sha256:59153979d60f5bfe9e4c00e401e24dfe0469ef8da6d68247439d3278f30a180f",
|
||||
"sha256:60cb8e5933193a3cc2912ee29ca331e9c15b2da034f76159b7abc520b3d1233a",
|
||||
"sha256:6767ad399e9327bfdbaa40871be4254d1995f4a3ca3806127f10cec778bd9896",
|
||||
"sha256:76a4f9bce0278becc2da7da3b8ef854bed41a991f4226911a24a9711baad672c",
|
||||
"sha256:8cf33634b60c9cef346663a222d9841d3bbbc0a2f00221d6bcfd0d993d5543f6",
|
||||
"sha256:94dd11d9f13ea1be17bac39c1942f527cbf7065f94953cf62dfe805653da2f8f",
|
||||
"sha256:aafa46b5a39a27aca566198d3312fb3bde95ce9677085efd02c86f7ef6be4ec7",
|
||||
"sha256:badca914580eb46385e7f7e4e426fea6de0a37b9e06bec252e481ae7ec287082",
|
||||
"sha256:d76a26c5118c4d96e264acc9e3242d72e1a2b92e739807b3b69d8d47684b6677"
|
||||
"sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676",
|
||||
"sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4",
|
||||
"sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce",
|
||||
"sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123",
|
||||
"sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1",
|
||||
"sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e",
|
||||
"sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5",
|
||||
"sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d",
|
||||
"sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a",
|
||||
"sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab",
|
||||
"sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75",
|
||||
"sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168",
|
||||
"sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4",
|
||||
"sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f",
|
||||
"sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18",
|
||||
"sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62",
|
||||
"sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe",
|
||||
"sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802",
|
||||
"sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"
|
||||
],
|
||||
"markers": "python_version < '3.10' and platform_machine != 'aarch64' and platform_machine != 'arm64'",
|
||||
"version": "==1.22.2"
|
||||
"version": "==1.22.3"
|
||||
},
|
||||
"openpyxl": {
|
||||
"hashes": [
|
||||
|
@ -1003,7 +1003,7 @@
|
|||
"sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5",
|
||||
"sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==0.18.1"
|
||||
},
|
||||
"python-dateutil": {
|
||||
|
@ -1266,49 +1266,48 @@
|
|||
},
|
||||
"spiffworkflow": {
|
||||
"git": "https://github.com/sartography/SpiffWorkflow",
|
||||
"ref": "bd09454132aba6a2d0c774672f9bc5c7bfd7fd36"
|
||||
"ref": "61096d6e10c99fa6e9d6899d3ccfc1f1b10f5786"
|
||||
},
|
||||
"sqlalchemy": {
|
||||
"hashes": [
|
||||
"sha256:05fa14f279d43df68964ad066f653193187909950aa0163320b728edfc400167",
|
||||
"sha256:0ddc5e5ccc0160e7ad190e5c61eb57560f38559e22586955f205e537cda26034",
|
||||
"sha256:15a03261aa1e68f208e71ae3cd845b00063d242cbf8c87348a0c2c0fc6e1f2ac",
|
||||
"sha256:289465162b1fa1e7a982f8abe59d26a8331211cad4942e8031d2b7db1f75e649",
|
||||
"sha256:2e216c13ecc7fcdcbb86bb3225425b3ed338e43a8810c7089ddb472676124b9b",
|
||||
"sha256:2fd4d3ca64c41dae31228b80556ab55b6489275fb204827f6560b65f95692cf3",
|
||||
"sha256:330eb45395874cc7787214fdd4489e2afb931bc49e0a7a8f9cd56d6e9c5b1639",
|
||||
"sha256:3c7ed6c69debaf6198fadb1c16ae1253a29a7670bbf0646f92582eb465a0b999",
|
||||
"sha256:4ad31cec8b49fd718470328ad9711f4dc703507d434fd45461096da0a7135ee0",
|
||||
"sha256:57205844f246bab9b666a32f59b046add8995c665d9ecb2b7b837b087df90639",
|
||||
"sha256:582b59d1e5780a447aada22b461e50b404a9dc05768da1d87368ad8190468418",
|
||||
"sha256:5e9c7b3567edbc2183607f7d9f3e7e89355b8f8984eec4d2cd1e1513c8f7b43f",
|
||||
"sha256:6a01ec49ca54ce03bc14e10de55dfc64187a2194b3b0e5ac0fdbe9b24767e79e",
|
||||
"sha256:6f22c040d196f841168b1456e77c30a18a3dc16b336ddbc5a24ce01ab4e95ae0",
|
||||
"sha256:81f2dd355b57770fdf292b54f3e0a9823ec27a543f947fa2eb4ec0df44f35f0d",
|
||||
"sha256:85e4c244e1de056d48dae466e9baf9437980c19fcde493e0db1a0a986e6d75b4",
|
||||
"sha256:8d0949b11681380b4a50ac3cd075e4816afe9fa4a8c8ae006c1ca26f0fa40ad8",
|
||||
"sha256:975f5c0793892c634c4920057da0de3a48bbbbd0a5c86f5fcf2f2fedf41b76da",
|
||||
"sha256:9e4fb2895b83993831ba2401b6404de953fdbfa9d7d4fa6a4756294a83bbc94f",
|
||||
"sha256:b35dca159c1c9fa8a5f9005e42133eed82705bf8e243da371a5e5826440e65ca",
|
||||
"sha256:b7b20c88873675903d6438d8b33fba027997193e274b9367421e610d9da76c08",
|
||||
"sha256:bb4b15fb1f0aafa65cbdc62d3c2078bea1ceecbfccc9a1f23a2113c9ac1191fa",
|
||||
"sha256:c0c7171aa5a57e522a04a31b84798b6c926234cb559c0939840c3235cf068813",
|
||||
"sha256:c317ddd7c586af350a6aef22b891e84b16bff1a27886ed5b30f15c1ed59caeaa",
|
||||
"sha256:c3abc34fed19fdeaead0ced8cf56dd121f08198008c033596aa6aae7cc58f59f",
|
||||
"sha256:ca68c52e3cae491ace2bf39b35fef4ce26c192fd70b4cd90f040d419f70893b5",
|
||||
"sha256:cf2cd387409b12d0a8b801610d6336ee7d24043b6dd965950eaec09b73e7262f",
|
||||
"sha256:d046a9aeba9bc53e88a41e58beb72b6205abb9a20f6c136161adf9128e589db5",
|
||||
"sha256:d5c20c8415173b119762b6110af64448adccd4d11f273fb9f718a9865b88a99c",
|
||||
"sha256:d86132922531f0dc5a4f424c7580a472a924dd737602638e704841c9cb24aea2",
|
||||
"sha256:dccff41478050e823271642837b904d5f9bda3f5cf7d371ce163f00a694118d6",
|
||||
"sha256:de85c26a5a1c72e695ab0454e92f60213b4459b8d7c502e0be7a6369690eeb1a",
|
||||
"sha256:e3a86b59b6227ef72ffc10d4b23f0fe994bef64d4667eab4fb8cd43de4223bec",
|
||||
"sha256:e79e73d5ee24196d3057340e356e6254af4d10e1fc22d3207ea8342fc5ffb977",
|
||||
"sha256:ea8210090a816d48a4291a47462bac750e3bc5c2442e6d64f7b8137a7c3f9ac5",
|
||||
"sha256:f3b7ec97e68b68cb1f9ddb82eda17b418f19a034fa8380a0ac04e8fe01532875"
|
||||
"sha256:04164e0063feb7aedd9d073db0fd496edb244be40d46ea1f0d8990815e4b8c34",
|
||||
"sha256:159c2f69dd6efd28e894f261ffca1100690f28210f34cfcd70b895e0ea7a64f3",
|
||||
"sha256:199dc6d0068753b6a8c0bd3aceb86a3e782df118260ebc1fa981ea31ee054674",
|
||||
"sha256:1bbac3e8293b34c4403d297e21e8f10d2a57756b75cff101dc62186adec725f5",
|
||||
"sha256:20e9eba7fd86ef52e0df25bea83b8b518dfdf0bce09b336cfe51671f52aaaa3f",
|
||||
"sha256:290cbdf19129ae520d4bdce392648c6fcdbee763bc8f750b53a5ab51880cb9c9",
|
||||
"sha256:316270e5867566376e69a0ac738b863d41396e2b63274616817e1d34156dff0e",
|
||||
"sha256:3f88a4ee192142eeed3fe173f673ea6ab1f5a863810a9d85dbf6c67a9bd08f97",
|
||||
"sha256:4aa96e957141006181ca58e792e900ee511085b8dae06c2d08c00f108280fb8a",
|
||||
"sha256:4b2bcab3a914715d332ca783e9bda13bc570d8b9ef087563210ba63082c18c16",
|
||||
"sha256:576684771456d02e24078047c2567025f2011977aa342063468577d94e194b00",
|
||||
"sha256:5a2e73508f939175363d8a4be9dcdc84cf16a92578d7fa86e6e4ca0e6b3667b2",
|
||||
"sha256:5ba59761c19b800bc2e1c9324da04d35ef51e4ee9621ff37534bc2290d258f71",
|
||||
"sha256:5dc9801ae9884e822ba942ca493642fb50f049c06b6dbe3178691fce48ceb089",
|
||||
"sha256:6fdd2dc5931daab778c2b65b03df6ae68376e028a3098eb624d0909d999885bc",
|
||||
"sha256:708973b5d9e1e441188124aaf13c121e5b03b6054c2df59b32219175a25aa13e",
|
||||
"sha256:7ff72b3cc9242d1a1c9b84bd945907bf174d74fc2519efe6184d6390a8df478b",
|
||||
"sha256:8679f9aba5ac22e7bce54ccd8a77641d3aea3e2d96e73e4356c887ebf8ff1082",
|
||||
"sha256:8b9a395122770a6f08ebfd0321546d7379f43505882c7419d7886856a07caa13",
|
||||
"sha256:8e1e5d96b744a4f91163290b01045430f3f32579e46d87282449e5b14d27d4ac",
|
||||
"sha256:9a0195af6b9050c9322a97cf07514f66fe511968e623ca87b2df5e3cf6349615",
|
||||
"sha256:9cb5698c896fa72f88e7ef04ef62572faf56809093180771d9be8d9f2e264a13",
|
||||
"sha256:b3f1d9b3aa09ab9adc7f8c4b40fc3e081eb903054c9a6f9ae1633fe15ae503b4",
|
||||
"sha256:bb42f9b259c33662c6a9b866012f6908a91731a419e69304e1261ba3ab87b8d1",
|
||||
"sha256:bca714d831e5b8860c3ab134c93aec63d1a4f493bed20084f54e3ce9f0a3bf99",
|
||||
"sha256:bedd89c34ab62565d44745212814e4b57ef1c24ad4af9b29c504ce40f0dc6558",
|
||||
"sha256:bfec934aac7f9fa95fc82147a4ba5db0a8bdc4ebf1e33b585ab8860beb10232f",
|
||||
"sha256:c7046f7aa2db445daccc8424f50b47a66c4039c9f058246b43796aa818f8b751",
|
||||
"sha256:d7e483f4791fbda60e23926b098702340504f7684ce7e1fd2c1bf02029288423",
|
||||
"sha256:dd93162615870c976dba43963a24bb418b28448fef584f30755990c134a06a55",
|
||||
"sha256:e4607d2d16330757818c9d6fba322c2e80b4b112ff24295d1343a80b876eb0ed",
|
||||
"sha256:e9a680d9665f88346ed339888781f5236347933906c5a56348abb8261282ec48",
|
||||
"sha256:edfcf93fd92e2f9eef640b3a7a40db20fe3c1d7c2c74faa41424c63dead61b76",
|
||||
"sha256:f7e4a3c0c3c596296b37f8427c467c8e4336dc8d50f8ed38042e8ba79507b2c9",
|
||||
"sha256:fff677fa4522dafb5a5e2c0cf909790d5d367326321aeabc0dffc9047cb235bd"
|
||||
],
|
||||
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
|
||||
"version": "==1.4.31"
|
||||
"version": "==1.4.32"
|
||||
},
|
||||
"swagger-ui-bundle": {
|
||||
"hashes": [
|
||||
|
@ -1352,11 +1351,11 @@
|
|||
},
|
||||
"waitress": {
|
||||
"hashes": [
|
||||
"sha256:29af5a53e9fb4e158f525367678b50053808ca6c21ba585754c77d790008c746",
|
||||
"sha256:69e1f242c7f80273490d3403c3976f3ac3b26e289856936d1f620ed48f321897"
|
||||
"sha256:58bd2fa1c2c82adf6e322ae7151f4fbd5176d2769602407a61b9c92b1606c2ef",
|
||||
"sha256:ec8a8d9b6b15f3bb2c1a82b8f3929a029c333c35fcafb08c185a9e562d8cc9c2"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2.0.0"
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==2.1.0"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
|
@ -1451,7 +1450,7 @@
|
|||
"sha256:6b351bbb12dd58af57ffef05bc78425d08d1914e0fd68ee14143b7ade023c5bc",
|
||||
"sha256:837f2f0e0ca79481b92884962b914eba4e72b7a2daaf1f939c890ed0124b834b"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"markers": "python_full_version >= '3.7.0'",
|
||||
"version": "==3.0.1"
|
||||
},
|
||||
"xlrd": {
|
||||
|
|
|
@ -32,7 +32,8 @@ class ProgressStatus(enum.Enum):
|
|||
approved_with_conditions = 'approved_with_conditions'
|
||||
deferred = 'deferred'
|
||||
disapproved = 'disapproved'
|
||||
|
||||
ready_for_pre_review = 'ready_for_pre_review'
|
||||
resubmitted_for_pre_review = 'resubmitted_for_pre_review'
|
||||
|
||||
class IrbStatus(enum.Enum):
|
||||
incomplete_in_protocol_builder = 'incomplete in protocol builder'
|
||||
|
|
|
@ -19,6 +19,7 @@ class TaskLogLevels(enum.Enum, metaclass=MyEnumMeta):
|
|||
warning = 30
|
||||
info = 20
|
||||
debug = 10
|
||||
metrics = 5
|
||||
|
||||
|
||||
class TaskLogModel(db.Model):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from crc import session
|
||||
from crc.api.common import ApiError
|
||||
from crc.models.workflow import WorkflowModel
|
||||
from crc.models.workflow import WorkflowModel, WorkflowStatus
|
||||
from crc.scripts.script import Script
|
||||
|
||||
|
||||
|
@ -19,21 +19,29 @@ Examples:
|
|||
"""
|
||||
|
||||
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
|
||||
return self.do_task(task, study_id, workflow_id, *args, **kwargs)
|
||||
if 'workflow_spec_id' in kwargs.keys() or len(args) > 0:
|
||||
return WorkflowStatus.not_started.value
|
||||
else:
|
||||
raise ApiError.from_task(code='missing_argument',
|
||||
message='You must include a workflow_spec_id when calling the `get_workflow_status` script.',
|
||||
task=task)
|
||||
|
||||
def do_task(self, task, study_id, workflow_id, *args, **kwargs):
|
||||
if 'search_workflow_id' in kwargs.keys() or len(args) > 0:
|
||||
if 'search_workflow_id' in kwargs.keys():
|
||||
search_workflow_id = kwargs['search_workflow_id']
|
||||
if 'workflow_spec_id' in kwargs.keys() or len(args) > 0:
|
||||
if 'workflow_spec_id' in kwargs.keys():
|
||||
workflow_spec_id = kwargs['workflow_spec_id']
|
||||
else:
|
||||
search_workflow_id = args[0]
|
||||
workflow_model = session.query(WorkflowModel).filter(WorkflowModel.id == search_workflow_id).first()
|
||||
workflow_spec_id = args[0]
|
||||
workflow_model = session.query(WorkflowModel). \
|
||||
filter(WorkflowModel.workflow_spec_id == workflow_spec_id). \
|
||||
filter(WorkflowModel.study_id == study_id).\
|
||||
first()
|
||||
if workflow_model:
|
||||
return workflow_model.status.value
|
||||
else:
|
||||
return f'No model found for workflow {search_workflow_id}.'
|
||||
return WorkflowStatus.not_started.value
|
||||
|
||||
else:
|
||||
raise ApiError.from_task(code='missing_argument',
|
||||
message='You must include a workflow_id when calling the `get_workflow_status` script.',
|
||||
message='You must include a workflow_spec_id when calling the `get_workflow_status` script.',
|
||||
task=task)
|
||||
|
|
|
@ -231,6 +231,7 @@ class StudyService(object):
|
|||
session.query(StudyAssociated).filter_by(study_id=study_id).delete()
|
||||
session.query(EmailModel).filter_by(study_id=study_id).delete()
|
||||
session.query(StudyEvent).filter_by(study_id=study_id).delete()
|
||||
session.query(DataStoreModel).filter_by(study_id=study_id).delete()
|
||||
for workflow in session.query(WorkflowModel).filter_by(study_id=study_id):
|
||||
StudyService.delete_workflow(workflow.id)
|
||||
study = session.query(StudyModel).filter_by(id=study_id).first()
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<bpmn:scriptTask id="Activity_0y5dzit" name="Get Workflow Status Arg">
|
||||
<bpmn:incoming>Flow_0wp4z9u</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0fl7rsj</bpmn:outgoing>
|
||||
<bpmn:script>status_arg = get_workflow_status(search_workflow_id)</bpmn:script>
|
||||
<bpmn:script>status_arg = get_workflow_status(workflow_spec_id)</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_0fl7rsj" sourceRef="Activity_0y5dzit" targetRef="Activity_StatusArg" />
|
||||
<bpmn:manualTask id="Activity_StatusArg" name="Display Workflow Status Arg">
|
||||
|
@ -21,7 +21,7 @@
|
|||
<bpmn:scriptTask id="Activity_09p0m5x" name="Get Workflow Status Kwarg">
|
||||
<bpmn:incoming>Flow_00x8h5p</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0lt7dwr</bpmn:outgoing>
|
||||
<bpmn:script>status_kwarg = get_workflow_status(search_workflow_id=search_workflow_id)</bpmn:script>
|
||||
<bpmn:script>status_kwarg = get_workflow_status(workflow_spec_id=workflow_spec_id)</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:manualTask id="Activity_StatusKwarg" name="Display Workflow Status Kwarg">
|
||||
<bpmn:documentation># Status Kwarg
|
||||
|
@ -38,7 +38,7 @@
|
|||
<bpmn:userTask id="Activity_WorkflowID" name="Get Workflow ID" camunda:formKey="WorkflowIDForm">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="search_workflow_id" label="'Workflow ID'" type="long" defaultValue="1">
|
||||
<camunda:formField id="workflow_spec_id" label="'Workflow Spec ID'" type="string">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
|
@ -51,6 +51,10 @@
|
|||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_0k8r3a2">
|
||||
<bpmndi:BPMNEdge id="Flow_0wp4z9u_di" bpmnElement="Flow_0wp4z9u">
|
||||
<di:waypoint x="340" y="117" />
|
||||
<di:waypoint x="410" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0eg806h_di" bpmnElement="Flow_0eg806h">
|
||||
<di:waypoint x="990" y="117" />
|
||||
<di:waypoint x="1052" y="117" />
|
||||
|
@ -71,22 +75,15 @@
|
|||
<di:waypoint x="188" y="117" />
|
||||
<di:waypoint x="240" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0wp4z9u_di" bpmnElement="Flow_0wp4z9u">
|
||||
<di:waypoint x="340" y="117" />
|
||||
<di:waypoint x="410" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0bsr1f1_di" bpmnElement="Activity_0y5dzit">
|
||||
<dc:Bounds x="410" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_18ywo1x_di" bpmnElement="Activity_StatusArg">
|
||||
<dc:Bounds x="570" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1s8egpj_di" bpmnElement="Activity_WorkflowID">
|
||||
<dc:Bounds x="240" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0lhah9s_di" bpmnElement="Activity_09p0m5x">
|
||||
<dc:Bounds x="730" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
|
@ -96,6 +93,9 @@
|
|||
<bpmndi:BPMNShape id="Event_1nvmkni_di" bpmnElement="Event_1nvmkni">
|
||||
<dc:Bounds x="1052" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1s8egpj_di" bpmnElement="Activity_WorkflowID">
|
||||
<dc:Bounds x="240" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
||||
|
|
|
@ -1,20 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_e3059e6" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_e3059e6" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.2.0">
|
||||
<bpmn:process id="Process_LoggingTask" name="Logging Task" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_1vjxvjd</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1vjxvjd" sourceRef="StartEvent_1" targetRef="Activity_LogEvent" />
|
||||
<bpmn:sequenceFlow id="Flow_1vjxvjd" sourceRef="StartEvent_1" targetRef="Activity_GetLogData" />
|
||||
<bpmn:scriptTask id="Activity_LogEvent" name="Log Event">
|
||||
<bpmn:incoming>Flow_1vjxvjd</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_126w4xi</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1mw0dlv</bpmn:outgoing>
|
||||
<bpmn:script>log_model = log(level='info', code='test_code', message='You forgot to include the correct data.')</bpmn:script>
|
||||
<bpmn:script>log_model = log(level=level, code=code, message=message)</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_1mw0dlv" sourceRef="Activity_LogEvent" targetRef="Activity_DisplayLog" />
|
||||
<bpmn:manualTask id="Activity_DisplayLog" name="DisplayLog">
|
||||
<bpmn:documentation># Log Model
|
||||
{{ log_model }}
|
||||
</bpmn:documentation>
|
||||
{{ log_model }}</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_1mw0dlv</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_016ui0e</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
|
@ -22,32 +21,63 @@
|
|||
<bpmn:incoming>Flow_016ui0e</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_016ui0e" sourceRef="Activity_DisplayLog" targetRef="Event_06g3ojm" />
|
||||
<bpmn:sequenceFlow id="Flow_126w4xi" sourceRef="Activity_GetLogData" targetRef="Activity_LogEvent" />
|
||||
<bpmn:userTask id="Activity_GetLogData" name="Get Log Data" camunda:formKey="LogDataForm">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="level" label="'Level'" type="string" defaultValue="'info'">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="code" label="'Code'" type="string">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="message" label="'Message'" type="string">
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="True" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1vjxvjd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_126w4xi</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_LoggingTask">
|
||||
<bpmndi:BPMNEdge id="Flow_016ui0e_di" bpmnElement="Flow_016ui0e">
|
||||
<di:waypoint x="530" y="177" />
|
||||
<di:waypoint x="592" y="177" />
|
||||
<bpmndi:BPMNEdge id="Flow_1vjxvjd_di" bpmnElement="Flow_1vjxvjd">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="274" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_126w4xi_di" bpmnElement="Flow_126w4xi">
|
||||
<di:waypoint x="374" y="117" />
|
||||
<di:waypoint x="438" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1mw0dlv_di" bpmnElement="Flow_1mw0dlv">
|
||||
<di:waypoint x="370" y="177" />
|
||||
<di:waypoint x="430" y="177" />
|
||||
<di:waypoint x="538" y="117" />
|
||||
<di:waypoint x="602" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1vjxvjd_di" bpmnElement="Flow_1vjxvjd">
|
||||
<di:waypoint x="215" y="177" />
|
||||
<di:waypoint x="270" y="177" />
|
||||
<bpmndi:BPMNEdge id="Flow_016ui0e_di" bpmnElement="Flow_016ui0e">
|
||||
<di:waypoint x="702" y="117" />
|
||||
<di:waypoint x="762" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="159" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_08z1eq4_di" bpmnElement="Activity_LogEvent">
|
||||
<dc:Bounds x="270" y="137" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0amiq7i_di" bpmnElement="Activity_DisplayLog">
|
||||
<dc:Bounds x="430" y="137" width="100" height="80" />
|
||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_06g3ojm_di" bpmnElement="Event_06g3ojm">
|
||||
<dc:Bounds x="592" y="159" width="36" height="36" />
|
||||
<dc:Bounds x="762" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_08z1eq4_di" bpmnElement="Activity_LogEvent">
|
||||
<dc:Bounds x="438" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0amiq7i_di" bpmnElement="Activity_DisplayLog">
|
||||
<dc:Bounds x="602" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0trhnak_di" bpmnElement="Activity_GetLogData">
|
||||
<dc:Bounds x="274" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
|
|
|
@ -16,13 +16,13 @@ class TestGetWorkflowStatus(BaseTest):
|
|||
def test_get_workflow_status(self):
|
||||
self.create_workflow('random_fact')
|
||||
workflow_model_1 = session.query(WorkflowModel).filter(WorkflowModel.id == 1).first()
|
||||
search_workflow_id = workflow_model_1.id
|
||||
workflow_spec_id = workflow_model_1.workflow_spec_id
|
||||
workflow = self.create_workflow('get_workflow_status')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
# calls get_workflow_status(search_workflow_id)
|
||||
workflow_api = self.complete_form(workflow, task, {'search_workflow_id': search_workflow_id})
|
||||
workflow_api = self.complete_form(workflow, task, {'workflow_spec_id': workflow_spec_id})
|
||||
task = workflow_api.next_task
|
||||
self.assertEqual('Activity_StatusArg', task.name)
|
||||
self.assertEqual(task.data['status_arg'], workflow_model_1.status.value)
|
||||
|
|
|
@ -3,19 +3,28 @@ import json
|
|||
from tests.base_test import BaseTest
|
||||
|
||||
from crc.models.user import UserModel
|
||||
from crc import session, WorkflowService
|
||||
from crc.models.api_models import Task, TaskSchema
|
||||
from crc.models.task_log import TaskLogModel, TaskLogModelSchema, TaskLogQuery, TaskLogQuerySchema
|
||||
from crc import session
|
||||
from crc.models.task_log import TaskLogModel, TaskLogQuery, TaskLogQuerySchema
|
||||
from crc.models.study import StudyModel
|
||||
from crc.scripts.log import TaskLog
|
||||
from crc.services.workflow_processor import WorkflowProcessor
|
||||
from crc.services.task_logging_service import TaskLoggingService
|
||||
|
||||
import types
|
||||
|
||||
|
||||
class TestTaskLogging(BaseTest):
|
||||
|
||||
def add_log(self, log_data):
|
||||
workflow = self.create_workflow('logging_task')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
workflow_api = self.complete_form(workflow, task, log_data)
|
||||
task = workflow_api.next_task
|
||||
|
||||
log_id = task.data['log_model']['id']
|
||||
|
||||
return log_id
|
||||
|
||||
def test_logging_validation(self):
|
||||
self.load_test_spec('empty_workflow', master_spec=True)
|
||||
self.create_reference_document()
|
||||
|
@ -24,17 +33,25 @@ class TestTaskLogging(BaseTest):
|
|||
self.assertEqual([], rv.json)
|
||||
|
||||
def test_add_log(self):
|
||||
workflow = self.create_workflow('logging_task')
|
||||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
log_id = task.data['log_model']['id']
|
||||
log_data = {'level': 'info',
|
||||
'code': 'test_code',
|
||||
'message': 'You forgot to include the correct data.'}
|
||||
log_id = self.add_log(log_data)
|
||||
log_model = session.query(TaskLogModel).filter(TaskLogModel.id == log_id).first()
|
||||
|
||||
self.assertEqual('test_code', log_model.code)
|
||||
self.assertEqual('info', log_model.level)
|
||||
self.assertEqual('Activity_LogEvent', log_model.task)
|
||||
|
||||
def test_add_metrics_log(self):
|
||||
log_data = {'level': 'metrics',
|
||||
'code': 'test_code',
|
||||
'message': 'You forgot to include the correct data.'}
|
||||
log_id = self.add_log(log_data)
|
||||
log_model = session.query(TaskLogModel).filter(TaskLogModel.id == log_id).first()
|
||||
|
||||
self.assertEqual('metrics', log_model.level)
|
||||
|
||||
def test_get_logging_validation(self):
|
||||
self.load_test_spec('empty_workflow', master_spec=True)
|
||||
self.create_reference_document()
|
||||
|
@ -92,6 +109,12 @@ class TestTaskLogging(BaseTest):
|
|||
workflow_api = self.get_workflow_api(workflow)
|
||||
task = workflow_api.next_task
|
||||
|
||||
form_data = {'level': 'info',
|
||||
'code': 'test_code',
|
||||
'message': 'You forgot to include the correct data.'}
|
||||
workflow_api = self.complete_form(workflow, task, form_data)
|
||||
task = workflow_api.next_task
|
||||
|
||||
user = session.query(UserModel).filter_by(uid=self.test_uid).first()
|
||||
url = f'/v1.0/study/{workflow.study_id}/log'
|
||||
task_log_query = TaskLogQuery()
|
||||
|
|
|
@ -106,6 +106,21 @@ class DataStoreTest(BaseTest):
|
|||
studyreponse = session.query(DataStoreModel).filter_by(id=oldid).first()
|
||||
self.assertEqual(studyreponse,None)
|
||||
|
||||
def test_delete_study_with_datastore(self):
|
||||
study = self.create_study()
|
||||
study_data = DataStoreSchema().dump(self.TEST_STUDY_ITEM)
|
||||
study_data['study_id'] = study.id
|
||||
self.assertEqual(0, session.query(DataStoreModel).count())
|
||||
rv = self.app.post('/v1.0/datastore',
|
||||
content_type="application/json",
|
||||
headers=self.logged_in_headers(),
|
||||
data=json.dumps(study_data))
|
||||
self.assertEqual(1, session.query(DataStoreModel).count())
|
||||
rv = self.app.delete('/v1.0/study/%i' % study.id, headers=self.logged_in_headers())
|
||||
self.assertEqual(0, session.query(DataStoreModel).count())
|
||||
|
||||
|
||||
|
||||
def test_data_crosstalk(self):
|
||||
"""Test to make sure that data saved for user or study is not accessible from the other method"""
|
||||
|
||||
|
|
Loading…
Reference in New Issue