Merged in feature/new-licenses (pull request #70)
Feature/new licenses Approved-by: Ramon Wenger
This commit is contained in:
commit
886f9d958e
|
|
@ -23,12 +23,20 @@
|
|||
],
|
||||
"version": "==7.0.0"
|
||||
},
|
||||
"appnope": {
|
||||
"hashes": [
|
||||
"sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0",
|
||||
"sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"
|
||||
],
|
||||
"markers": "sys_platform == 'darwin'",
|
||||
"version": "==0.1.0"
|
||||
},
|
||||
"backcall": {
|
||||
"hashes": [
|
||||
"sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4",
|
||||
"sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"
|
||||
"sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e",
|
||||
"sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"
|
||||
],
|
||||
"version": "==0.1.0"
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"beautifulsoup4": {
|
||||
"hashes": [
|
||||
|
|
@ -48,25 +56,25 @@
|
|||
},
|
||||
"boto3": {
|
||||
"hashes": [
|
||||
"sha256:009d0b483513e4c8639895c2b8dc451b41c9b863116d0234506b8b88b30a3d1b",
|
||||
"sha256:f5218afc43c4c21ae2e8a1d4620d27ab6765250fe1f913ab234fbb686de87ae1"
|
||||
"sha256:ae57df1fbad7e29954a160d77cbf650d6562eb0d304c1206afa71d914e771a66",
|
||||
"sha256:cbe618d61cb8f75cd9495ea36e69bad7c8984eb11f02ad247be4c9a2eb7eb647"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.13.17"
|
||||
"version": "==1.14.17"
|
||||
},
|
||||
"botocore": {
|
||||
"hashes": [
|
||||
"sha256:cca04cd4bdb092a727772c38808f97e15f07dc609f6fbd7d7ba09c7734058794",
|
||||
"sha256:f9627c718d480225cbfeeeb7b4a694b9cea3cae67940a4b673770cfaca328a81"
|
||||
"sha256:5528c04c360019c24f2706ce82872c9ab767a8c581beffdfdaf006cce7499cac",
|
||||
"sha256:d65b5574dad8c221344496352245828d9ffecaa0868199eb04ccd2eb2ff09133"
|
||||
],
|
||||
"version": "==1.16.17"
|
||||
"version": "==1.17.17"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304",
|
||||
"sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519"
|
||||
"sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
|
||||
"sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
|
||||
],
|
||||
"version": "==2020.4.5.1"
|
||||
"version": "==2020.6.20"
|
||||
},
|
||||
"chardet": {
|
||||
"hashes": [
|
||||
|
|
@ -91,11 +99,11 @@
|
|||
},
|
||||
"django": {
|
||||
"hashes": [
|
||||
"sha256:69897097095f336d5aeef45b4103dceae51c00afa6d3ae198a2a18e519791b7a",
|
||||
"sha256:6ecd229e1815d4fc5240fc98f1cca78c41e7a8cd3e3f2eefadc4735031077916"
|
||||
"sha256:edf0ecf6657713b0435b6757e6069466925cae70d634a3283c96b80c01e06191",
|
||||
"sha256:f2250bd35d0f6c23e930c544629934144e5dd39a4c06092e1050c731c1712ba8"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.2.12"
|
||||
"version": "==2.2.14"
|
||||
},
|
||||
"django-appconf": {
|
||||
"hashes": [
|
||||
|
|
@ -198,7 +206,8 @@
|
|||
},
|
||||
"draftjs-exporter": {
|
||||
"hashes": [
|
||||
"sha256:5839cbc29d7bce2fb99837a404ca40c3a07313f2a20e2700de7ad6aa9a9a18fb"
|
||||
"sha256:5839cbc29d7bce2fb99837a404ca40c3a07313f2a20e2700de7ad6aa9a9a18fb",
|
||||
"sha256:d415a9964690a2cddb66a31ef32dd46c277e9b80434b94e39e3043188ed83e33"
|
||||
],
|
||||
"version": "==2.1.7"
|
||||
},
|
||||
|
|
@ -212,10 +221,10 @@
|
|||
},
|
||||
"faker": {
|
||||
"hashes": [
|
||||
"sha256:103c46b9701a151299c5bffe6fefcd4fb5fb04c3b5d06bee4952d36255d44ea2",
|
||||
"sha256:34ae397aef03a0a17910452f1e8430d57fa59e2d67b20e9b637218e8f7dd22b3"
|
||||
"sha256:1290f589648bc470b8d98fff1fdff773fe3f46b4ca2cac73ac74668b12cf008e",
|
||||
"sha256:c006b3664c270a2cfd4785c5e41ff263d48101c4e920b5961cf9c237131d8418"
|
||||
],
|
||||
"version": "==4.1.0"
|
||||
"version": "==4.1.1"
|
||||
},
|
||||
"future": {
|
||||
"hashes": [
|
||||
|
|
@ -262,25 +271,25 @@
|
|||
},
|
||||
"html5lib": {
|
||||
"hashes": [
|
||||
"sha256:20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3",
|
||||
"sha256:66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736"
|
||||
"sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d",
|
||||
"sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"
|
||||
],
|
||||
"version": "==1.0.1"
|
||||
"version": "==1.1"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb",
|
||||
"sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"
|
||||
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
|
||||
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
|
||||
],
|
||||
"version": "==2.9"
|
||||
"version": "==2.10"
|
||||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:5b241b84bbf0eb085d43ae9d46adf38a13b45929ca7774a740990c2c242534bb",
|
||||
"sha256:f0126781d0f959da852fb3089e170ed807388e986a8dd4e6ac44855845b0fb1c"
|
||||
"sha256:2dbcc8c27ca7d3cfe4fcdff7f45b27f9a8d3edfa70ff8024a71c7a8eb5f09d64",
|
||||
"sha256:9f4fcb31d3b2c533333893b9172264e4821c1ac91839500f31bd43f2c59b3ccf"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==7.14.0"
|
||||
"version": "==7.16.1"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
|
|
@ -291,10 +300,10 @@
|
|||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
"sha256:cd60c93b71944d628ccac47df9a60fec53150de53d42dc10a7fc4b5ba6aae798",
|
||||
"sha256:df40c97641cb943661d2db4c33c2e1ff75d491189423249e989bcea4464f3030"
|
||||
"sha256:1ddb0ec78059e8e27ec9eb5098360b4ea0a3dd840bedf21415ea820c21b40a22",
|
||||
"sha256:807d5d4f96711a2bcfdd5dfa3b1ae6d09aa53832b182090b222b5efb81f52f63"
|
||||
],
|
||||
"version": "==0.17.0"
|
||||
"version": "==0.17.1"
|
||||
},
|
||||
"jmespath": {
|
||||
"hashes": [
|
||||
|
|
@ -323,10 +332,10 @@
|
|||
},
|
||||
"newrelic": {
|
||||
"hashes": [
|
||||
"sha256:43dbaf5227b647c1b4b206064fc3367ac14f7b99ce38d11d50e82d49d21ccb76"
|
||||
"sha256:340ebcdb0dd08bfb597c71598d6d8f746a93f7e4921f10b3616c9142c608a14d"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==5.12.1.141"
|
||||
"version": "==5.14.1.144"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
|
|
@ -362,30 +371,19 @@
|
|||
"sha256:0013f590a8f260df60bcfd65db19d18efc04e7f046c3c82a40e2e2b3292a937c",
|
||||
"sha256:0b899ee80920bb533f26581af9b4660bc12aff4562555afe74e429101ebf3c94",
|
||||
"sha256:12f29d6c23424f704c66b5b68c02fe0b571504459605cfe36ab8158359b0e1bb",
|
||||
"sha256:135e9aa65150c53f7db85bf2bebb8a0e1a48ea850e80cf66e16dd04fa09d309c",
|
||||
"sha256:153ec6f18f7b61641e0e6e502acfaf4a06c9aba2ea11c0b4b3578ea9f13a4a4a",
|
||||
"sha256:17fe25efc785194d48c38fad85dce470013ba19d2fb66639e149f14bccf1327f",
|
||||
"sha256:1912b7230459fd53682dae32b83cbd8e5d642ba36d4be18566f00a9c063aa13d",
|
||||
"sha256:1a5b93084e01328a1cb1ecdad99d11d75e881e89a95f88d85b523646553b36c2",
|
||||
"sha256:25193f934d37d836a6b1f4c062ce574a96cbca7c6d9dc8ddfbbac7f9c54deaa4",
|
||||
"sha256:2c042352b430d678db50c78c5214e19638eff8b688941271da2de21fd298dfe5",
|
||||
"sha256:2e818dbe445e86fc6c266973fe540c35125c42eb2cf13a6095e9adaa89c0deb5",
|
||||
"sha256:2fcde9954c8882d1c7f93bb828caa34a4c5e3ee69dbc7895dc8652ad972b455a",
|
||||
"sha256:35f7d998b8e82fb3fb51ff88b30485eb81cd7dd56ec7e1a8deba23eb88532d44",
|
||||
"sha256:37cc0339abfa9e295c75d9a7f227d35cb44716feb95057f9449c4a9e9a17daf7",
|
||||
"sha256:43334f9581cd067945b8898cef9eb5714ee4883f8de0304c011f1dbdb1d4e2aa",
|
||||
"sha256:4bd4a71501b6d51db4abc07e1f43f5a6fed0a1a9583cca0b401d6af50284b0db",
|
||||
"sha256:57aa6198ba8acba1313c3b743e267d821a60cac77e6026caf0b55ca58d3d23be",
|
||||
"sha256:5b0d657460d9f3615876fec6306e97ca15a471f6169b622d76a47e270998acf1",
|
||||
"sha256:5cd36804f9f06a914a883fe682df5711d16d7b4f44d43189c5f013e7cd91e149",
|
||||
"sha256:6977cf073d83358b34f93abf5c1f1193b88675fe0e4441e0e28318bc3dcba7a0",
|
||||
"sha256:718ec7a122b28d64afc5fbc3a9b99bb0545ef511373cac06fe7624520e82cb20",
|
||||
"sha256:7dfbefdb3fb911ca9faed307bf309861e9995e36cca6b761c7ba6d9b77a9744a",
|
||||
"sha256:801cca8923508311bf5d6d0f7da5362552e8208ebd8ec0d7b9f2cd2ff5705734",
|
||||
"sha256:82b172e3264e62372c01b5b009b5b1a02fbb9276cbe5cc57ab00a6d6e5ed9a18",
|
||||
"sha256:82d1ff571489765df2816785d532e243bde213752156c227fca595723ec5ff42",
|
||||
"sha256:8580fc58074a16b749905b26cf8363f7b628dd167ba0130f5382cdc91c86b509",
|
||||
"sha256:931030d1d6282b7900e6b0a7ff9ecdb503b5e1e6781800dab2b71a9f39405bff",
|
||||
"sha256:9525cd680a6f9e80c6c0af03cf973e6505c59f60b4745f682cd1a449e54b31bb",
|
||||
"sha256:a224651a81e45ef4f1d0164e256c5f6b4abb49f2ae8f22ba2f3a9d0ff338e608",
|
||||
"sha256:a370d1c570f1d72e877099651e752332444b1c5009381f043c9da5fd47f3ebae",
|
||||
|
|
@ -394,12 +392,7 @@
|
|||
"sha256:b85f703c2ffe539313e39ce0676bed0f355cec45a16e58c9ab7417445843047c",
|
||||
"sha256:b9f63451084a718eccdeb1e382768c94647915653af4d6019f64560d9e98642b",
|
||||
"sha256:c793dfaa130847ccff958492b76ae8b9304e60b8a79a92962cb19e368276a22b",
|
||||
"sha256:d60c1625b108432ace8b1fa1a584017e5efa73f107d0f493c7f39c79bebf1d41",
|
||||
"sha256:dc4b018d5c9b636f7546583c5591b9ea00c328c3e5871992ef5b95bac353f097",
|
||||
"sha256:ddd16ab250b4fc97db1c47407e78c25216a75c29d29d10ad37e51b7a2ec7b2c3",
|
||||
"sha256:e126ff4fed71e78333840c07279e1617f63cfca76d63ad5b27d65a7277206a3d",
|
||||
"sha256:f8d49be8c282df8d2e1ab6ab53ab8abd859b1fa6fed384457ee85c9eff64ef97",
|
||||
"sha256:fcf64c91fd44485100a2965d23bb0e227d093e91f7e776c5ca3b32574766eb56"
|
||||
"sha256:ddd16ab250b4fc97db1c47407e78c25216a75c29d29d10ad37e51b7a2ec7b2c3"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==5.0.0"
|
||||
|
|
@ -522,11 +515,11 @@
|
|||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee",
|
||||
"sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
|
||||
"sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
|
||||
"sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.23.0"
|
||||
"version": "==2.24.0"
|
||||
},
|
||||
"rjsmin": {
|
||||
"hashes": [
|
||||
|
|
@ -562,10 +555,10 @@
|
|||
},
|
||||
"sendgrid": {
|
||||
"hashes": [
|
||||
"sha256:38c0853494c7bfbef64f33934c25bf98bb7648cf0e66a0cfb22410927e4ef4c7",
|
||||
"sha256:838e1f7b0f84d56714be6a18ef66fbcf8fba0bda782eee35c47c04d7a16efde8"
|
||||
"sha256:54e51ca9afbfe1a4706864f42eb1a12d597e375249d80a8ce679e7a4fa91e776",
|
||||
"sha256:dd0eddf079be040172a4d0afdf9b9becb4e53210ead015a0e6b2d680eea92ac0"
|
||||
],
|
||||
"version": "==6.3.1"
|
||||
"version": "==6.4.1"
|
||||
},
|
||||
"sentry-sdk": {
|
||||
"hashes": [
|
||||
|
|
@ -596,6 +589,12 @@
|
|||
],
|
||||
"version": "==0.3.1"
|
||||
},
|
||||
"starkbank-ecdsa": {
|
||||
"hashes": [
|
||||
"sha256:cd17ec9fa7ad8ae3fc81a63ddb7e0d7fb798a048e40c1a9c55afd1a207d1eff9"
|
||||
],
|
||||
"version": "==1.0.0"
|
||||
},
|
||||
"text-unidecode": {
|
||||
"hashes": [
|
||||
"sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8",
|
||||
|
|
@ -638,6 +637,7 @@
|
|||
"sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
|
||||
"sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
|
||||
],
|
||||
"markers": "python_version != '3.4'",
|
||||
"version": "==1.25.9"
|
||||
},
|
||||
"wagtail": {
|
||||
|
|
@ -658,10 +658,10 @@
|
|||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
"sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1",
|
||||
"sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"
|
||||
"sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
|
||||
"sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
|
||||
],
|
||||
"version": "==0.1.9"
|
||||
"version": "==0.2.5"
|
||||
},
|
||||
"webencodings": {
|
||||
"hashes": [
|
||||
|
|
@ -687,47 +687,55 @@
|
|||
}
|
||||
},
|
||||
"develop": {
|
||||
"appnope": {
|
||||
"hashes": [
|
||||
"sha256:5b26757dc6f79a3b7dc9fab95359328d5747fcb2409d331ea66d0272b90ab2a0",
|
||||
"sha256:8b995ffe925347a2138d7ac0fe77155e4311a0ea6d6da4f5128fe4b3cbe5ed71"
|
||||
],
|
||||
"markers": "sys_platform == 'darwin'",
|
||||
"version": "==0.1.0"
|
||||
},
|
||||
"asgiref": {
|
||||
"hashes": [
|
||||
"sha256:8036f90603c54e93521e5777b2b9a39ba1bad05773fcf2d208f0299d1df58ce5",
|
||||
"sha256:9ca8b952a0a9afa61d30aa6d3d9b570bb3fd6bafcf7ec9e6bed43b936133db1c"
|
||||
"sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a",
|
||||
"sha256:9fc6fb5d39b8af147ba40765234fa822b39818b12cc80b35ad9b0cef3a476aed"
|
||||
],
|
||||
"version": "==3.2.7"
|
||||
"version": "==3.2.10"
|
||||
},
|
||||
"autopep8": {
|
||||
"hashes": [
|
||||
"sha256:152fd8fe47d02082be86e05001ec23d6f420086db56b17fc883f3f965fb34954"
|
||||
"sha256:60fd8c4341bab59963dafd5d2a566e94f547e660b9b396f772afe67d8481dbf0"
|
||||
],
|
||||
"version": "==1.5.2"
|
||||
"version": "==1.5.3"
|
||||
},
|
||||
"awscli": {
|
||||
"hashes": [
|
||||
"sha256:23a65b27b732b00ff42162b03334771f54ff84ade91cff504f870cb931e67a95",
|
||||
"sha256:d853d0d81ef17eb02f9703dca9f221beee0efe8edbb7acb4ec7e2ffdef792eb3"
|
||||
"sha256:42f880165290d1eff48e4cca1d7577fb98ee75d5dd295cf63a2963ffa2569137",
|
||||
"sha256:d1d2f8defdf83e2d405ca909f94b1007f85edaf1cf7d92cebde69fc480fbf7a9"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.18.67"
|
||||
"version": "==1.18.94"
|
||||
},
|
||||
"backcall": {
|
||||
"hashes": [
|
||||
"sha256:38ecd85be2c1e78f77fd91700c76e14667dc21e2713b63876c0eb901196e01e4",
|
||||
"sha256:bbbf4b1e5cd2bdb08f915895b51081c041bac22394fdfcfdfbe9f14b77c08bf2"
|
||||
"sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e",
|
||||
"sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"
|
||||
],
|
||||
"version": "==0.1.0"
|
||||
"version": "==0.2.0"
|
||||
},
|
||||
"botocore": {
|
||||
"hashes": [
|
||||
"sha256:cca04cd4bdb092a727772c38808f97e15f07dc609f6fbd7d7ba09c7734058794",
|
||||
"sha256:f9627c718d480225cbfeeeb7b4a694b9cea3cae67940a4b673770cfaca328a81"
|
||||
"sha256:5528c04c360019c24f2706ce82872c9ab767a8c581beffdfdaf006cce7499cac",
|
||||
"sha256:d65b5574dad8c221344496352245828d9ffecaa0868199eb04ccd2eb2ff09133"
|
||||
],
|
||||
"version": "==1.16.17"
|
||||
"version": "==1.17.17"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304",
|
||||
"sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519"
|
||||
"sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
|
||||
"sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
|
||||
],
|
||||
"version": "==2020.4.5.1"
|
||||
"version": "==2020.6.20"
|
||||
},
|
||||
"chardet": {
|
||||
"hashes": [
|
||||
|
|
@ -746,40 +754,43 @@
|
|||
},
|
||||
"coverage": {
|
||||
"hashes": [
|
||||
"sha256:00f1d23f4336efc3b311ed0d807feb45098fc86dee1ca13b3d6768cdab187c8a",
|
||||
"sha256:01333e1bd22c59713ba8a79f088b3955946e293114479bbfc2e37d522be03355",
|
||||
"sha256:0cb4be7e784dcdc050fc58ef05b71aa8e89b7e6636b99967fadbdba694cf2b65",
|
||||
"sha256:0e61d9803d5851849c24f78227939c701ced6704f337cad0a91e0972c51c1ee7",
|
||||
"sha256:1601e480b9b99697a570cea7ef749e88123c04b92d84cedaa01e117436b4a0a9",
|
||||
"sha256:2742c7515b9eb368718cd091bad1a1b44135cc72468c731302b3d641895b83d1",
|
||||
"sha256:2d27a3f742c98e5c6b461ee6ef7287400a1956c11421eb574d843d9ec1f772f0",
|
||||
"sha256:402e1744733df483b93abbf209283898e9f0d67470707e3c7516d84f48524f55",
|
||||
"sha256:5c542d1e62eece33c306d66fe0a5c4f7f7b3c08fecc46ead86d7916684b36d6c",
|
||||
"sha256:5f2294dbf7875b991c381e3d5af2bcc3494d836affa52b809c91697449d0eda6",
|
||||
"sha256:6402bd2fdedabbdb63a316308142597534ea8e1895f4e7d8bf7476c5e8751fef",
|
||||
"sha256:66460ab1599d3cf894bb6baee8c684788819b71a5dc1e8fa2ecc152e5d752019",
|
||||
"sha256:782caea581a6e9ff75eccda79287daefd1d2631cc09d642b6ee2d6da21fc0a4e",
|
||||
"sha256:79a3cfd6346ce6c13145731d39db47b7a7b859c0272f02cdb89a3bdcbae233a0",
|
||||
"sha256:7a5bdad4edec57b5fb8dae7d3ee58622d626fd3a0be0dfceda162a7035885ecf",
|
||||
"sha256:8fa0cbc7ecad630e5b0f4f35b0f6ad419246b02bc750de7ac66db92667996d24",
|
||||
"sha256:a027ef0492ede1e03a8054e3c37b8def89a1e3c471482e9f046906ba4f2aafd2",
|
||||
"sha256:a3f3654d5734a3ece152636aad89f58afc9213c6520062db3978239db122f03c",
|
||||
"sha256:a82b92b04a23d3c8a581fc049228bafde988abacba397d57ce95fe95e0338ab4",
|
||||
"sha256:acf3763ed01af8410fc36afea23707d4ea58ba7e86a8ee915dfb9ceff9ef69d0",
|
||||
"sha256:adeb4c5b608574a3d647011af36f7586811a2c1197c861aedb548dd2453b41cd",
|
||||
"sha256:b83835506dfc185a319031cf853fa4bb1b3974b1f913f5bb1a0f3d98bdcded04",
|
||||
"sha256:bb28a7245de68bf29f6fb199545d072d1036a1917dca17a1e75bbb919e14ee8e",
|
||||
"sha256:bf9cb9a9fd8891e7efd2d44deb24b86d647394b9705b744ff6f8261e6f29a730",
|
||||
"sha256:c317eaf5ff46a34305b202e73404f55f7389ef834b8dbf4da09b9b9b37f76dd2",
|
||||
"sha256:dbe8c6ae7534b5b024296464f387d57c13caa942f6d8e6e0346f27e509f0f768",
|
||||
"sha256:de807ae933cfb7f0c7d9d981a053772452217df2bf38e7e6267c9cbf9545a796",
|
||||
"sha256:dead2ddede4c7ba6cb3a721870f5141c97dc7d85a079edb4bd8d88c3ad5b20c7",
|
||||
"sha256:dec5202bfe6f672d4511086e125db035a52b00f1648d6407cc8e526912c0353a",
|
||||
"sha256:e1ea316102ea1e1770724db01998d1603ed921c54a86a2efcb03428d5417e489",
|
||||
"sha256:f90bfc4ad18450c80b024036eaf91e4a246ae287701aaa88eaebebf150868052"
|
||||
"sha256:0fc4e0d91350d6f43ef6a61f64a48e917637e1dcfcba4b4b7d543c628ef82c2d",
|
||||
"sha256:10f2a618a6e75adf64329f828a6a5b40244c1c50f5ef4ce4109e904e69c71bd2",
|
||||
"sha256:12eaccd86d9a373aea59869bc9cfa0ab6ba8b1477752110cb4c10d165474f703",
|
||||
"sha256:1874bdc943654ba46d28f179c1846f5710eda3aeb265ff029e0ac2b52daae404",
|
||||
"sha256:1dcebae667b73fd4aa69237e6afb39abc2f27520f2358590c1b13dd90e32abe7",
|
||||
"sha256:1e58fca3d9ec1a423f1b7f2aa34af4f733cbfa9020c8fe39ca451b6071237405",
|
||||
"sha256:214eb2110217f2636a9329bc766507ab71a3a06a8ea30cdeebb47c24dce5972d",
|
||||
"sha256:25fe74b5b2f1b4abb11e103bb7984daca8f8292683957d0738cd692f6a7cc64c",
|
||||
"sha256:32ecee61a43be509b91a526819717d5e5650e009a8d5eda8631a59c721d5f3b6",
|
||||
"sha256:3740b796015b889e46c260ff18b84683fa2e30f0f75a171fb10d2bf9fb91fc70",
|
||||
"sha256:3b2c34690f613525672697910894b60d15800ac7e779fbd0fccf532486c1ba40",
|
||||
"sha256:41d88736c42f4a22c494c32cc48a05828236e37c991bd9760f8923415e3169e4",
|
||||
"sha256:42fa45a29f1059eda4d3c7b509589cc0343cd6bbf083d6118216830cd1a51613",
|
||||
"sha256:4bb385a747e6ae8a65290b3df60d6c8a692a5599dc66c9fa3520e667886f2e10",
|
||||
"sha256:509294f3e76d3f26b35083973fbc952e01e1727656d979b11182f273f08aa80b",
|
||||
"sha256:5c74c5b6045969b07c9fb36b665c9cac84d6c174a809fc1b21bdc06c7836d9a0",
|
||||
"sha256:60a3d36297b65c7f78329b80120f72947140f45b5c7a017ea730f9112b40f2ec",
|
||||
"sha256:6f91b4492c5cde83bfe462f5b2b997cdf96a138f7c58b1140f05de5751623cf1",
|
||||
"sha256:7403675df5e27745571aba1c957c7da2dacb537c21e14007ec3a417bf31f7f3d",
|
||||
"sha256:87bdc8135b8ee739840eee19b184804e5d57f518578ffc797f5afa2c3c297913",
|
||||
"sha256:8a3decd12e7934d0254939e2bf434bf04a5890c5bf91a982685021786a08087e",
|
||||
"sha256:9702e2cb1c6dec01fb8e1a64c015817c0800a6eca287552c47a5ee0ebddccf62",
|
||||
"sha256:a4d511012beb967a39580ba7d2549edf1e6865a33e5fe51e4dce550522b3ac0e",
|
||||
"sha256:bbb387811f7a18bdc61a2ea3d102be0c7e239b0db9c83be7bfa50f095db5b92a",
|
||||
"sha256:bfcc811883699ed49afc58b1ed9f80428a18eb9166422bce3c31a53dba00fd1d",
|
||||
"sha256:c32aa13cc3fe86b0f744dfe35a7f879ee33ac0a560684fef0f3e1580352b818f",
|
||||
"sha256:ca63dae130a2e788f2b249200f01d7fa240f24da0596501d387a50e57aa7075e",
|
||||
"sha256:d54d7ea74cc00482a2410d63bf10aa34ebe1c49ac50779652106c867f9986d6b",
|
||||
"sha256:d67599521dff98ec8c34cd9652cbcfe16ed076a2209625fca9dc7419b6370e5c",
|
||||
"sha256:d82db1b9a92cb5c67661ca6616bdca6ff931deceebb98eecbd328812dab52032",
|
||||
"sha256:d9ad0a988ae20face62520785ec3595a5e64f35a21762a57d115dae0b8fb894a",
|
||||
"sha256:ebf2431b2d457ae5217f3a1179533c456f3272ded16f8ed0b32961a6d90e38ee",
|
||||
"sha256:ed9a21502e9223f563e071759f769c3d6a2e1ba5328c31e86830368e8d78bc9c",
|
||||
"sha256:f50632ef2d749f541ca8e6c07c9928a37f87505ce3a9f20c8446ad310f1aa87b"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==5.1"
|
||||
"version": "==5.2"
|
||||
},
|
||||
"decorator": {
|
||||
"hashes": [
|
||||
|
|
@ -790,11 +801,11 @@
|
|||
},
|
||||
"django": {
|
||||
"hashes": [
|
||||
"sha256:69897097095f336d5aeef45b4103dceae51c00afa6d3ae198a2a18e519791b7a",
|
||||
"sha256:6ecd229e1815d4fc5240fc98f1cca78c41e7a8cd3e3f2eefadc4735031077916"
|
||||
"sha256:edf0ecf6657713b0435b6757e6069466925cae70d634a3283c96b80c01e06191",
|
||||
"sha256:f2250bd35d0f6c23e930c544629934144e5dd39a4c06092e1050c731c1712ba8"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.2.12"
|
||||
"version": "==2.2.14"
|
||||
},
|
||||
"django-silk": {
|
||||
"hashes": [
|
||||
|
|
@ -819,25 +830,25 @@
|
|||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb",
|
||||
"sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa"
|
||||
"sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
|
||||
"sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
|
||||
],
|
||||
"version": "==2.9"
|
||||
"version": "==2.10"
|
||||
},
|
||||
"ipdb": {
|
||||
"hashes": [
|
||||
"sha256:77fb1c2a6fccdfee0136078c9ed6fe547ab00db00bebff181f1e8c9e13418d49"
|
||||
"sha256:d6f46d261c45a65e65a2f7ec69288a1c511e16206edb2875e7ec6b2f66997e78"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==0.13.2"
|
||||
"version": "==0.13.3"
|
||||
},
|
||||
"ipython": {
|
||||
"hashes": [
|
||||
"sha256:5b241b84bbf0eb085d43ae9d46adf38a13b45929ca7774a740990c2c242534bb",
|
||||
"sha256:f0126781d0f959da852fb3089e170ed807388e986a8dd4e6ac44855845b0fb1c"
|
||||
"sha256:2dbcc8c27ca7d3cfe4fcdff7f45b27f9a8d3edfa70ff8024a71c7a8eb5f09d64",
|
||||
"sha256:9f4fcb31d3b2c533333893b9172264e4821c1ac91839500f31bd43f2c59b3ccf"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==7.14.0"
|
||||
"version": "==7.16.1"
|
||||
},
|
||||
"ipython-genutils": {
|
||||
"hashes": [
|
||||
|
|
@ -848,10 +859,10 @@
|
|||
},
|
||||
"jedi": {
|
||||
"hashes": [
|
||||
"sha256:cd60c93b71944d628ccac47df9a60fec53150de53d42dc10a7fc4b5ba6aae798",
|
||||
"sha256:df40c97641cb943661d2db4c33c2e1ff75d491189423249e989bcea4464f3030"
|
||||
"sha256:1ddb0ec78059e8e27ec9eb5098360b4ea0a3dd840bedf21415ea820c21b40a22",
|
||||
"sha256:807d5d4f96711a2bcfdd5dfa3b1ae6d09aa53832b182090b222b5efb81f52f63"
|
||||
],
|
||||
"version": "==0.17.0"
|
||||
"version": "==0.17.1"
|
||||
},
|
||||
"jinja2": {
|
||||
"hashes": [
|
||||
|
|
@ -943,19 +954,8 @@
|
|||
},
|
||||
"pyasn1": {
|
||||
"hashes": [
|
||||
"sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359",
|
||||
"sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576",
|
||||
"sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf",
|
||||
"sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7",
|
||||
"sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d",
|
||||
"sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00",
|
||||
"sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8",
|
||||
"sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86",
|
||||
"sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12",
|
||||
"sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776",
|
||||
"sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba",
|
||||
"sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2",
|
||||
"sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3"
|
||||
"sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba"
|
||||
],
|
||||
"version": "==0.4.8"
|
||||
},
|
||||
|
|
@ -1006,11 +1006,11 @@
|
|||
},
|
||||
"requests": {
|
||||
"hashes": [
|
||||
"sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee",
|
||||
"sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"
|
||||
"sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
|
||||
"sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==2.23.0"
|
||||
"version": "==2.24.0"
|
||||
},
|
||||
"rsa": {
|
||||
"hashes": [
|
||||
|
|
@ -1040,6 +1040,13 @@
|
|||
],
|
||||
"version": "==0.3.1"
|
||||
},
|
||||
"toml": {
|
||||
"hashes": [
|
||||
"sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f",
|
||||
"sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"
|
||||
],
|
||||
"version": "==0.10.1"
|
||||
},
|
||||
"traitlets": {
|
||||
"hashes": [
|
||||
"sha256:70b4c6a1d9019d7b4f6846832288f86998aa3b9207c6821f3578a6a6a467fe44",
|
||||
|
|
@ -1052,14 +1059,15 @@
|
|||
"sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
|
||||
"sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
|
||||
],
|
||||
"markers": "python_version != '3.4'",
|
||||
"version": "==1.25.9"
|
||||
},
|
||||
"wcwidth": {
|
||||
"hashes": [
|
||||
"sha256:cafe2186b3c009a04067022ce1dcd79cb38d8d65ee4f4791b8888d6599d1bbe1",
|
||||
"sha256:ee73862862a156bf77ff92b09034fc4825dd3af9cf81bc5b360668d425f3c5f1"
|
||||
"sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
|
||||
"sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
|
||||
],
|
||||
"version": "==0.1.9"
|
||||
"version": "==0.2.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,14 +6,36 @@ import requests
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
TEACHER_EDITION_DURATION = 365
|
||||
STUDENT_EDITION_DURATION = 4*365
|
||||
|
||||
TEACHER_KEY = 'teacher'
|
||||
STUDENT_KEY = 'student'
|
||||
|
||||
MYSKILLBOX_TEACHER_EDITION_ISBN = "978-3-0355-1823-8"
|
||||
MYSKILLBOX_STUDENT_EDITION_ISBN = "978-3-0355-1397-4"
|
||||
MYSKILLBOX_LICENSES = {
|
||||
"978-3-0355-1397-4": {
|
||||
'edition': STUDENT_KEY,
|
||||
'duration': 4 * 365,
|
||||
'name': 'Student 4 years'
|
||||
},
|
||||
"978-3-0355-1860-3": {
|
||||
'edition': STUDENT_KEY,
|
||||
'duration': 365,
|
||||
'name': 'Student 1 year'
|
||||
},
|
||||
"978-3-0355-1862-7": {
|
||||
'edition': STUDENT_KEY,
|
||||
'duration': 30,
|
||||
'name': 'Student test 1 month'
|
||||
},
|
||||
"978-3-0355-1861-0": {
|
||||
'edition': TEACHER_KEY,
|
||||
'duration': 30,
|
||||
'name': 'Teacher test 1 month'
|
||||
},
|
||||
"978-3-0355-1823-8": {
|
||||
'edition': TEACHER_KEY,
|
||||
'duration': 365,
|
||||
'name': 'Teacher 1 year'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class HepClientException(Exception):
|
||||
|
|
@ -151,22 +173,16 @@ class HepClient:
|
|||
if 'order_id' in item:
|
||||
order_id = item['order_id']
|
||||
|
||||
if item['sku'] == MYSKILLBOX_TEACHER_EDITION_ISBN or \
|
||||
item['sku'] == MYSKILLBOX_STUDENT_EDITION_ISBN:
|
||||
|
||||
if item['sku'] in list(MYSKILLBOX_LICENSES.keys()):
|
||||
product = {
|
||||
'raw': item,
|
||||
'activated': self._get_item_activation(order_item),
|
||||
'status': status,
|
||||
'order_id': order_id
|
||||
'order_id': order_id,
|
||||
'license': MYSKILLBOX_LICENSES[item['sku']],
|
||||
'isbn': item['sku']
|
||||
}
|
||||
|
||||
if item['sku'] == MYSKILLBOX_TEACHER_EDITION_ISBN:
|
||||
product['edition'] = TEACHER_KEY
|
||||
|
||||
else:
|
||||
product['edition'] = STUDENT_KEY
|
||||
|
||||
products.append(product)
|
||||
|
||||
return products
|
||||
|
|
@ -182,12 +198,9 @@ class HepClient:
|
|||
if product['status'] != 'complete':
|
||||
return False
|
||||
|
||||
if product['edition'] == TEACHER_KEY:
|
||||
expiry_delta = product['activated'] + timedelta(TEACHER_EDITION_DURATION)
|
||||
else:
|
||||
expiry_delta = product['activated'] + timedelta(STUDENT_EDITION_DURATION)
|
||||
expiry_delta = product['activated'] + timedelta(product['license']['duration'])
|
||||
|
||||
if HepClient.is_product_active(expiry_delta, product['edition']):
|
||||
if HepClient.is_product_active(expiry_delta, product['isbn']):
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
|
@ -206,7 +219,7 @@ class HepClient:
|
|||
|
||||
# select first teacher product, as they are all valid it does not matter which one
|
||||
for product in active_products:
|
||||
if product['edition'] == TEACHER_KEY:
|
||||
if product['license']['edition'] == TEACHER_KEY:
|
||||
teacher_edition = product
|
||||
break
|
||||
|
||||
|
|
@ -217,12 +230,7 @@ class HepClient:
|
|||
return teacher_edition
|
||||
|
||||
@staticmethod
|
||||
def is_product_active(expiry_date, edition):
|
||||
if edition == TEACHER_KEY:
|
||||
duration = TEACHER_EDITION_DURATION
|
||||
else:
|
||||
duration = STUDENT_EDITION_DURATION
|
||||
|
||||
def is_product_active(expiry_date, isbn):
|
||||
now = datetime.now()
|
||||
|
||||
return expiry_date >= now >= expiry_date - timedelta(days=duration)
|
||||
return expiry_date >= now >= expiry_date - timedelta(days=MYSKILLBOX_LICENSES[isbn]['duration'])
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class ApiAccessTestCase(TestCase):
|
|||
|
||||
def test_publicGraphqlEndpoint_shouldBeAccessibleWithoutLogin(self):
|
||||
|
||||
query= json.dumps({
|
||||
query = json.dumps({
|
||||
'operationName': 'BetaLogin',
|
||||
'query': '''
|
||||
mutation BetaLogin($input: BetaLoginInput!){
|
||||
|
|
|
|||
|
|
@ -2,7 +2,15 @@ import json
|
|||
from datetime import datetime, timedelta
|
||||
|
||||
from django.test import TestCase
|
||||
from core.hep_client import HepClient, TEACHER_EDITION_DURATION
|
||||
from core.hep_client import HepClient, MYSKILLBOX_LICENSES
|
||||
|
||||
ISBNS = list(MYSKILLBOX_LICENSES.keys())
|
||||
|
||||
STUDENT_ISBN = ISBNS[0]
|
||||
STUDENT_LICENSE = MYSKILLBOX_LICENSES[STUDENT_ISBN]
|
||||
|
||||
TEACHER_ISBN = ISBNS[-1]
|
||||
TEACHER_LICENSE = MYSKILLBOX_LICENSES[TEACHER_ISBN]
|
||||
|
||||
|
||||
class HepClientTestCases(TestCase):
|
||||
|
|
@ -13,21 +21,24 @@ class HepClientTestCases(TestCase):
|
|||
def test_has_no_valid_product(self):
|
||||
products = [
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {},
|
||||
'activated': self.now - timedelta(2*TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(2*TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {},
|
||||
'activated': self.now - timedelta(3 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(3 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {},
|
||||
'activated': self.now - timedelta(4 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(4 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
}
|
||||
]
|
||||
|
|
@ -38,7 +49,8 @@ class HepClientTestCases(TestCase):
|
|||
def test_has_no_not_completed_product(self):
|
||||
products = [
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {},
|
||||
'activated': self.now - timedelta(7),
|
||||
'status': 'not'
|
||||
|
|
@ -51,7 +63,8 @@ class HepClientTestCases(TestCase):
|
|||
def test_has_valid_product(self):
|
||||
products = [
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 0
|
||||
},
|
||||
|
|
@ -59,19 +72,21 @@ class HepClientTestCases(TestCase):
|
|||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 1
|
||||
},
|
||||
'activated': self.now - timedelta(3 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(3 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 2
|
||||
},
|
||||
'activated': self.now - timedelta(4 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(4 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
}
|
||||
]
|
||||
|
|
@ -82,7 +97,8 @@ class HepClientTestCases(TestCase):
|
|||
def test_has_multiple_valid_teacher_products_but_only_one_active(self):
|
||||
products = [
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 0
|
||||
},
|
||||
|
|
@ -90,19 +106,21 @@ class HepClientTestCases(TestCase):
|
|||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 1
|
||||
},
|
||||
'activated': self.now - timedelta(3 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(3 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 2
|
||||
},
|
||||
'activated': self.now - timedelta(4 * TEACHER_EDITION_DURATION),
|
||||
'activated': self.now - timedelta(4 * TEACHER_LICENSE['duration']),
|
||||
'status': 'complete'
|
||||
}
|
||||
]
|
||||
|
|
@ -113,7 +131,8 @@ class HepClientTestCases(TestCase):
|
|||
def test_has_valid_student_and_teacher_edition(self):
|
||||
products = [
|
||||
{
|
||||
'edition': 'student',
|
||||
'license': STUDENT_LICENSE,
|
||||
'isbn': STUDENT_ISBN,
|
||||
'raw': {
|
||||
'id': 0
|
||||
},
|
||||
|
|
@ -121,7 +140,8 @@ class HepClientTestCases(TestCase):
|
|||
'status': 'complete'
|
||||
},
|
||||
{
|
||||
'edition': 'teacher',
|
||||
'license': TEACHER_LICENSE,
|
||||
'isbn': TEACHER_ISBN,
|
||||
'raw': {
|
||||
'id': 1
|
||||
},
|
||||
|
|
@ -137,12 +157,12 @@ class HepClientTestCases(TestCase):
|
|||
|
||||
expiry_date = self.now + timedelta(3)
|
||||
|
||||
is_active = HepClient.is_product_active(expiry_date, 'teacher')
|
||||
is_active = HepClient.is_product_active(expiry_date, TEACHER_ISBN)
|
||||
self.assertTrue(is_active)
|
||||
|
||||
def test_product_is_not_active(self):
|
||||
|
||||
expiry_date = self.now - timedelta(3 * TEACHER_EDITION_DURATION)
|
||||
expiry_date = self.now - timedelta(3 * TEACHER_LICENSE['duration'])
|
||||
|
||||
is_active = HepClient.is_product_active(expiry_date, 'teacher')
|
||||
is_active = HepClient.is_product_active(expiry_date, TEACHER_ISBN)
|
||||
self.assertFalse(is_active)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ from django.contrib import admin
|
|||
from django.contrib.auth.admin import UserAdmin
|
||||
|
||||
from users.forms import CustomUserCreationForm, CustomUserChangeForm
|
||||
from .models import User, SchoolClass, Role, UserRole, UserSetting, License
|
||||
from .models import User, SchoolClass, Role, UserRole, UserSetting, License, UserData
|
||||
|
||||
|
||||
class SchoolClassInline(admin.TabularInline):
|
||||
|
|
@ -72,6 +72,13 @@ class UserSettingAdmin(admin.ModelAdmin):
|
|||
|
||||
@admin.register(License)
|
||||
class LicenseAdmin(admin.ModelAdmin):
|
||||
list_display = ('licensee',)
|
||||
list_filter = ('licensee',)
|
||||
list_display = ('licensee', 'for_role', 'expire_date', 'isbn')
|
||||
list_filter = ('licensee', 'expire_date')
|
||||
raw_id_fields = ('licensee',)
|
||||
|
||||
|
||||
@admin.register(UserData)
|
||||
class UserDataAdmin(admin.ModelAdmin):
|
||||
list_display = ('user', 'accepted_terms')
|
||||
list_filter = ('accepted_terms',)
|
||||
raw_id_fields = ('user',)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ class Command(BaseCommand):
|
|||
|
||||
if product and License.objects.filter(licensee=hep_user, order_id=product['order_id']).count() == 0:
|
||||
license = License.objects.create_license_for_role(hep_user, product['activated'], product['raw'],
|
||||
product['edition'], product['order_id'])
|
||||
product['license']['edition'], product['order_id'],
|
||||
product['isbn'])
|
||||
|
||||
if license.is_valid():
|
||||
hep_user.license_expiry_date = license.expire_date
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||
from django.db import models
|
||||
from django.contrib.auth.models import UserManager as DjangoUserManager
|
||||
|
||||
from core.hep_client import TEACHER_EDITION_DURATION, STUDENT_EDITION_DURATION
|
||||
from core.hep_client import MYSKILLBOX_LICENSES
|
||||
|
||||
|
||||
class RoleManager(models.Manager):
|
||||
|
|
@ -129,14 +129,14 @@ class UserManager(DjangoUserManager):
|
|||
|
||||
class LicenseManager(models.Manager):
|
||||
|
||||
def create_license_for_role(self, licensee, activation_date, raw, role, order_id):
|
||||
def create_license_for_role(self, licensee, activation_date, raw, role, order_id, isbn):
|
||||
Role = apps.get_model('users', 'Role')
|
||||
expiry_date = activation_date + timedelta(MYSKILLBOX_LICENSES[isbn]['duration'])
|
||||
|
||||
if role == 'teacher':
|
||||
user_role = Role.objects.get_default_teacher_role()
|
||||
expiry_date = activation_date + timedelta(TEACHER_EDITION_DURATION)
|
||||
else:
|
||||
user_role = Role.objects.get_default_student_role()
|
||||
expiry_date = activation_date + timedelta(STUDENT_EDITION_DURATION)
|
||||
|
||||
new_license = self._create_license_for_role(licensee, expiry_date, raw, user_role, order_id)
|
||||
new_license.licensee.license_expiry_date = new_license.expire_date
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 2.1.15 on 2020-07-01 12:37
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0020_user_recent_modules'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='license',
|
||||
name='isbn',
|
||||
field=models.CharField(default='978-3-0355-1397-48', max_length=50),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Generated by Django 2.1.15 on 2020-07-01 13:42
|
||||
|
||||
from django.db import migrations
|
||||
from users.managers import RoleManager
|
||||
|
||||
STUDENT_4Y_ISBN = '978-3-0355-1397-4'
|
||||
TEACHER_1Y_ISBN = '978-3-0355-1823-8'
|
||||
|
||||
|
||||
def add_isbn_to_license(apps, schema_editor):
|
||||
License = apps.get_model('users', 'License')
|
||||
for existing_license in License.objects.all():
|
||||
if existing_license.for_role.key == RoleManager.TEACHER_KEY:
|
||||
existing_license.isbn = TEACHER_1Y_ISBN
|
||||
else:
|
||||
existing_license.isbn = STUDENT_4Y_ISBN
|
||||
|
||||
existing_license.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0021_license_isbn'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(add_isbn_to_license, migrations.RunPython.noop),
|
||||
]
|
||||
|
|
@ -9,7 +9,7 @@ from django.core.exceptions import ObjectDoesNotExist
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from core.hep_client import HepClient
|
||||
from core.hep_client import HepClient, MYSKILLBOX_LICENSES
|
||||
from users.managers import RoleManager, UserRoleManager, UserManager, LicenseManager
|
||||
|
||||
DEFAULT_SCHOOL_ID = 1
|
||||
|
|
@ -248,6 +248,8 @@ class License(models.Model):
|
|||
expire_date = models.DateField(blank=False, null=True, )
|
||||
order_id = models.IntegerField(blank=False, null=False, default=-1)
|
||||
raw = models.TextField(default='')
|
||||
isbn = models.CharField(max_length=50, blank=False, null=False,
|
||||
default=list(MYSKILLBOX_LICENSES.keys())[0]) # student license
|
||||
|
||||
objects = LicenseManager()
|
||||
|
||||
|
|
@ -256,8 +258,7 @@ class License(models.Model):
|
|||
|
||||
def is_valid(self):
|
||||
return HepClient.is_product_active(
|
||||
datetime(self.expire_date.year, self.expire_date.month, self.expire_date.day),
|
||||
self.for_role.key)
|
||||
datetime(self.expire_date.year, self.expire_date.month, self.expire_date.day), self.isbn)
|
||||
|
||||
def __str__(self):
|
||||
return f'License for role: {self.for_role}'
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ def check_and_create_licenses(hep_client, user):
|
|||
|
||||
if product:
|
||||
license = License.objects.create_license_for_role(user, product['activated'], product['raw'],
|
||||
product['edition'], product['order_id'])
|
||||
product['license']['edition'],
|
||||
product['order_id'], product['isbn'])
|
||||
# todo handle no license case
|
||||
else:
|
||||
return None, NO_VALID_LICENSE
|
||||
|
|
|
|||
Loading…
Reference in New Issue