udata 9.1.5.dev31458__py2.py3-none-any.whl → 9.1.5.dev31476__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- tasks/__init__.py +1 -1
- udata/api_fields.py +5 -1
- udata/core/dataset/events.py +14 -8
- udata/core/owned.py +16 -0
- udata/core/reuse/api.py +3 -2
- udata/core/reuse/models.py +1 -1
- udata/static/chunks/{11.16618d9eedd3f6a7a3c2.js → 11.18f1cc16362b76373c40.js} +3 -3
- udata/static/chunks/{11.16618d9eedd3f6a7a3c2.js.map → 11.18f1cc16362b76373c40.js.map} +1 -1
- udata/static/chunks/{13.7c17956e2fcfafcab22f.js → 13.066b4d36814efa6c485f.js} +2 -2
- udata/static/chunks/{13.7c17956e2fcfafcab22f.js.map → 13.066b4d36814efa6c485f.js.map} +1 -1
- udata/static/chunks/{16.b4cda3ca8dc053495fbd.js → 16.cddb601c07a2df6564b2.js} +2 -2
- udata/static/chunks/{16.b4cda3ca8dc053495fbd.js.map → 16.cddb601c07a2df6564b2.js.map} +1 -1
- udata/static/chunks/{19.f1ff6cd5816f2d9debc4.js → 19.2061dca8438f415029a3.js} +3 -3
- udata/static/chunks/{19.f1ff6cd5816f2d9debc4.js.map → 19.2061dca8438f415029a3.js.map} +1 -1
- udata/static/chunks/{5.14a4cd38c50b0559354e.js → 5.3aa55302c802f48db900.js} +3 -3
- udata/static/chunks/{5.14a4cd38c50b0559354e.js.map → 5.3aa55302c802f48db900.js.map} +1 -1
- udata/static/chunks/{6.c433506a3004b8f4d5fb.js → 6.0db5d3ff22944de7edd5.js} +3 -3
- udata/static/chunks/{6.c433506a3004b8f4d5fb.js.map → 6.0db5d3ff22944de7edd5.js.map} +1 -1
- udata/static/chunks/{8.b50a30118e9e2e1ab436.js → 8.292c6a157d71f0b21b6f.js} +2 -2
- udata/static/chunks/{8.b50a30118e9e2e1ab436.js.map → 8.292c6a157d71f0b21b6f.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_reuses_api.py +105 -0
- udata/tests/dataset/test_dataset_events.py +6 -6
- udata/tests/test_owned.py +100 -1
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/METADATA +3 -1
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/RECORD +31 -31
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/LICENSE +0 -0
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/WHEEL +0 -0
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/entry_points.txt +0 -0
- {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/top_level.txt +0 -0
udata/static/common.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var r=c[a]={exports:{},id:a,loaded:!1};return e[a].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}var a=window.webpackJsonp;window.webpackJsonp=function(b,f){for(var t,d,_=0,n=[];_<b.length;_++)d=b[_],r[d]&&n.push.apply(n,r[d]),r[d]=0;for(t in f){var i=f[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),r=a[0];return function(a,b,f){e[r].apply(this,[a,b,f].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(b,f);n.length;)n.shift().call(null,__webpack_require__);if(f[0])return c[0]=0,__webpack_require__(0)};var c={},r={31:0};__webpack_require__.e=function(e,a){if(0===r[e])return a.call(null,__webpack_require__);if(void 0!==r[e])r[e].push(a);else{r[e]=[a];var c=document.getElementsByTagName("head")[0],b=document.createElement("script");b.type="text/javascript",b.charset="utf-8",b.async=!0,b.src=__webpack_require__.p+"chunks/"+e+"."+{0:"285786eca84d7b7471ac",1:"765e28a442160395e71a",2:"f6372652ce6895fe1fad",3:"31f4515503a814e0e3a3",4:"ef9b48820b09477986b5",5:"
|
|
1
|
+
!function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var r=c[a]={exports:{},id:a,loaded:!1};return e[a].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}var a=window.webpackJsonp;window.webpackJsonp=function(b,f){for(var t,d,_=0,n=[];_<b.length;_++)d=b[_],r[d]&&n.push.apply(n,r[d]),r[d]=0;for(t in f){var i=f[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),r=a[0];return function(a,b,f){e[r].apply(this,[a,b,f].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(b,f);n.length;)n.shift().call(null,__webpack_require__);if(f[0])return c[0]=0,__webpack_require__(0)};var c={},r={31:0};__webpack_require__.e=function(e,a){if(0===r[e])return a.call(null,__webpack_require__);if(void 0!==r[e])r[e].push(a);else{r[e]=[a];var c=document.getElementsByTagName("head")[0],b=document.createElement("script");b.type="text/javascript",b.charset="utf-8",b.async=!0,b.src=__webpack_require__.p+"chunks/"+e+"."+{0:"285786eca84d7b7471ac",1:"765e28a442160395e71a",2:"f6372652ce6895fe1fad",3:"31f4515503a814e0e3a3",4:"ef9b48820b09477986b5",5:"3aa55302c802f48db900",6:"0db5d3ff22944de7edd5",7:"b2e2b3f88a04f6b296dd",8:"292c6a157d71f0b21b6f",9:"8ad948dd393d38f07a7a",10:"c1c9496ebfc8949f3de2",11:"18f1cc16362b76373c40",12:"f6b6e770dfe4a5949444",13:"066b4d36814efa6c485f",14:"72a6fc22c9b0cc8bcd14",15:"7de380008f4ec6ea4b5b",16:"cddb601c07a2df6564b2",17:"26a29ec18e773c2be9b2",18:"b7098bfe5401f75973fa",19:"2061dca8438f415029a3",20:"17e9e766625991aa0a7b",21:"2b48c7e5fe59775d5eb3",22:"2a919b7f6014457264e8",23:"18bb4231e440e17f29a2",24:"bb29ce250a1b77491420",25:"6cb865e768a122d52b4d",26:"2bd61452982a0d4de0a3",27:"1872ae081edb64216589",28:"1e240391cc0358805408",29:"556152a9334761b0d972",30:"a2eb870c6d29644ed9b5",32:"92a026dcad120ccdf15f",33:"6636c1fd8aec6fc072b8"}[e]+".js",c.appendChild(b)}},__webpack_require__.m=e,__webpack_require__.c=c,__webpack_require__.p="/static/"}(function(e){for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a))switch(typeof e[a]){case"function":break;case"object":e[a]=function(a){var c=a.slice(1),r=e[a[0]];return function(e,a,b){r.apply(this,[e,a,b].concat(c))}}(e[a]);break;default:e[a]=e[e[a]]}return e}([]));
|
|
2
2
|
//# sourceMappingURL=common.js.map
|
udata/static/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap a6610dd55016d760e724"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","_m","args","slice","templateId","a","b","c","this","concat","shift","31","e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","32","33","appendChild","m","Object","prototype","hasOwnProperty","fn"],"mappings":"CAAS,SAAUA,GCwDnB,QAAAC,qBAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,qBAGAI,EAAAE,QAAA,EAGAF,EAAAD,QA3EA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GAAA,CACA,GAAAQ,GAAAR,EAAAV,EAGA,cAAAkB,IACA,aAEApB,EAAAE,GAAA,SAAAkB,GACA,GAAAC,GAAAD,EAAAE,MAAA,GAAAC,EAAAH,EAAA,EACA,iBAAAI,EAAAC,EAAAC,GACA1B,EAAAuB,GAAAJ,MAAAQ,MAAAH,EAAAC,EAAAC,GAAAE,OAAAP,MAEMD,EACN,MACA,gBAEApB,EAAAE,GAAAkB,CACA,MACA,SAEApB,EAAAE,GAAAF,EAAAoB,IAKA,IADAX,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAc,QAAArB,KAAA,KAAAP,oBACA,IAAAW,EAAA,GAEA,MADAT,GAAA,KACAF,oBAAA,GAKA,IAAAE,MAKAc,GACAa,GAAA,EA6BA7B,qBAAA8B,EAAA,SAAAlB,EAAAmB,GAEA,OAAAf,EAAAJ,GACA,MAAAmB,GAAAxB,KAAA,KAAAP,oBAGA,IAAAgC,SAAAhB,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAc,OACI,CAEJf,EAAAJ,IAAAmB,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAzC,oBAAA0C,EAAA,UAAA9B,EAAA,KAAsE+B,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAAk5B/D,GAAA,MACx9BqB,EAAA2C,YAAAxC,KAKApC,oBAAA6E,EAAA9E,EAGAC,oBAAAyB,EAAAvB,EAGAF,oBAAA0C,EAAA,YDIW,SAAS3C,GAEnB,IAAI,GAAIc,KAAKd,GACZ,GAAG+E,OAAOC,UAAUC,eAAezE,KAAKR,EAASc,GAChD,aAAcd,GAAQc,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJd,EAAQc,GAAM,SAASM,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAI4D,EAAKlF,EAAQoB,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEC,GACpBwD,EAAG/D,MAAMQ,MAAOH,EAAEC,EAAEC,GAAGE,OAAOP,MAE9BrB,EAAQc,GACV,MACD,SAECd,EAAQc,GAAKd,EAAQA,EAAQc,IAKhC,MAAOd","file":"common.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tvar _m = moreModules[moduleId];\n/******/\n/******/ \t\t\t// Check if module is deduplicated\n/******/ \t\t\tswitch(typeof _m) {\n/******/ \t\t\tcase \"object\":\n/******/ \t\t\t\t// Module can be created from a template\n/******/ \t\t\t\tmodules[moduleId] = (function(_m) {\n/******/ \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n/******/ \t\t\t\t\treturn function (a,b,c) {\n/******/ \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}(_m));\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tcase \"function\":\n/******/ \t\t\t\t// Normal module\n/******/ \t\t\t\tmodules[moduleId] = _m;\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tdefault:\n/******/ \t\t\t\t// Module is a copy of another module\n/******/ \t\t\t\tmodules[moduleId] = modules[_m];\n/******/ \t\t\t\tbreak;\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t31:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"285786eca84d7b7471ac\",\"1\":\"765e28a442160395e71a\",\"2\":\"f6372652ce6895fe1fad\",\"3\":\"31f4515503a814e0e3a3\",\"4\":\"ef9b48820b09477986b5\",\"5\":\"14a4cd38c50b0559354e\",\"6\":\"c433506a3004b8f4d5fb\",\"7\":\"b2e2b3f88a04f6b296dd\",\"8\":\"b50a30118e9e2e1ab436\",\"9\":\"8ad948dd393d38f07a7a\",\"10\":\"c1c9496ebfc8949f3de2\",\"11\":\"16618d9eedd3f6a7a3c2\",\"12\":\"f6b6e770dfe4a5949444\",\"13\":\"7c17956e2fcfafcab22f\",\"14\":\"72a6fc22c9b0cc8bcd14\",\"15\":\"7de380008f4ec6ea4b5b\",\"16\":\"b4cda3ca8dc053495fbd\",\"17\":\"26a29ec18e773c2be9b2\",\"18\":\"b7098bfe5401f75973fa\",\"19\":\"f1ff6cd5816f2d9debc4\",\"20\":\"17e9e766625991aa0a7b\",\"21\":\"2b48c7e5fe59775d5eb3\",\"22\":\"2a919b7f6014457264e8\",\"23\":\"18bb4231e440e17f29a2\",\"24\":\"bb29ce250a1b77491420\",\"25\":\"6cb865e768a122d52b4d\",\"26\":\"2bd61452982a0d4de0a3\",\"27\":\"1872ae081edb64216589\",\"28\":\"1e240391cc0358805408\",\"29\":\"556152a9334761b0d972\",\"30\":\"a2eb870c6d29644ed9b5\",\"32\":\"92a026dcad120ccdf15f\",\"33\":\"6636c1fd8aec6fc072b8\"}[chunkId] + \".js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/static/\";\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([])));\n\n\n/** WEBPACK FOOTER **\n ** common.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tvar _m = moreModules[moduleId];\n\n \t\t\t// Check if module is deduplicated\n \t\t\tswitch(typeof _m) {\n \t\t\tcase \"object\":\n \t\t\t\t// Module can be created from a template\n \t\t\t\tmodules[moduleId] = (function(_m) {\n \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n \t\t\t\t\treturn function (a,b,c) {\n \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n \t\t\t\t\t};\n \t\t\t\t}(_m));\n \t\t\t\tbreak;\n \t\t\tcase \"function\":\n \t\t\t\t// Normal module\n \t\t\t\tmodules[moduleId] = _m;\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\t// Module is a copy of another module\n \t\t\t\tmodules[moduleId] = modules[_m];\n \t\t\t\tbreak;\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t31:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"285786eca84d7b7471ac\",\"1\":\"765e28a442160395e71a\",\"2\":\"f6372652ce6895fe1fad\",\"3\":\"31f4515503a814e0e3a3\",\"4\":\"ef9b48820b09477986b5\",\"5\":\"14a4cd38c50b0559354e\",\"6\":\"c433506a3004b8f4d5fb\",\"7\":\"b2e2b3f88a04f6b296dd\",\"8\":\"b50a30118e9e2e1ab436\",\"9\":\"8ad948dd393d38f07a7a\",\"10\":\"c1c9496ebfc8949f3de2\",\"11\":\"16618d9eedd3f6a7a3c2\",\"12\":\"f6b6e770dfe4a5949444\",\"13\":\"7c17956e2fcfafcab22f\",\"14\":\"72a6fc22c9b0cc8bcd14\",\"15\":\"7de380008f4ec6ea4b5b\",\"16\":\"b4cda3ca8dc053495fbd\",\"17\":\"26a29ec18e773c2be9b2\",\"18\":\"b7098bfe5401f75973fa\",\"19\":\"f1ff6cd5816f2d9debc4\",\"20\":\"17e9e766625991aa0a7b\",\"21\":\"2b48c7e5fe59775d5eb3\",\"22\":\"2a919b7f6014457264e8\",\"23\":\"18bb4231e440e17f29a2\",\"24\":\"bb29ce250a1b77491420\",\"25\":\"6cb865e768a122d52b4d\",\"26\":\"2bd61452982a0d4de0a3\",\"27\":\"1872ae081edb64216589\",\"28\":\"1e240391cc0358805408\",\"29\":\"556152a9334761b0d972\",\"30\":\"a2eb870c6d29644ed9b5\",\"32\":\"92a026dcad120ccdf15f\",\"33\":\"6636c1fd8aec6fc072b8\"}[chunkId] + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a6610dd55016d760e724\n **/"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap aae90f74dc2315755797"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","_m","args","slice","templateId","a","b","c","this","concat","shift","31","e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","32","33","appendChild","m","Object","prototype","hasOwnProperty","fn"],"mappings":"CAAS,SAAUA,GCwDnB,QAAAC,qBAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,qBAGAI,EAAAE,QAAA,EAGAF,EAAAD,QA3EA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GAAA,CACA,GAAAQ,GAAAR,EAAAV,EAGA,cAAAkB,IACA,aAEApB,EAAAE,GAAA,SAAAkB,GACA,GAAAC,GAAAD,EAAAE,MAAA,GAAAC,EAAAH,EAAA,EACA,iBAAAI,EAAAC,EAAAC,GACA1B,EAAAuB,GAAAJ,MAAAQ,MAAAH,EAAAC,EAAAC,GAAAE,OAAAP,MAEMD,EACN,MACA,gBAEApB,EAAAE,GAAAkB,CACA,MACA,SAEApB,EAAAE,GAAAF,EAAAoB,IAKA,IADAX,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAc,QAAArB,KAAA,KAAAP,oBACA,IAAAW,EAAA,GAEA,MADAT,GAAA,KACAF,oBAAA,GAKA,IAAAE,MAKAc,GACAa,GAAA,EA6BA7B,qBAAA8B,EAAA,SAAAlB,EAAAmB,GAEA,OAAAf,EAAAJ,GACA,MAAAmB,GAAAxB,KAAA,KAAAP,oBAGA,IAAAgC,SAAAhB,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAc,OACI,CAEJf,EAAAJ,IAAAmB,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAzC,oBAAA0C,EAAA,UAAA9B,EAAA,KAAsE+B,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAAk5B/D,GAAA,MACx9BqB,EAAA2C,YAAAxC,KAKApC,oBAAA6E,EAAA9E,EAGAC,oBAAAyB,EAAAvB,EAGAF,oBAAA0C,EAAA,YDIW,SAAS3C,GAEnB,IAAI,GAAIc,KAAKd,GACZ,GAAG+E,OAAOC,UAAUC,eAAezE,KAAKR,EAASc,GAChD,aAAcd,GAAQc,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJd,EAAQc,GAAM,SAASM,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAI4D,EAAKlF,EAAQoB,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEC,GACpBwD,EAAG/D,MAAMQ,MAAOH,EAAEC,EAAEC,GAAGE,OAAOP,MAE9BrB,EAAQc,GACV,MACD,SAECd,EAAQc,GAAKd,EAAQA,EAAQc,IAKhC,MAAOd","file":"common.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tvar _m = moreModules[moduleId];\n/******/\n/******/ \t\t\t// Check if module is deduplicated\n/******/ \t\t\tswitch(typeof _m) {\n/******/ \t\t\tcase \"object\":\n/******/ \t\t\t\t// Module can be created from a template\n/******/ \t\t\t\tmodules[moduleId] = (function(_m) {\n/******/ \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n/******/ \t\t\t\t\treturn function (a,b,c) {\n/******/ \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}(_m));\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tcase \"function\":\n/******/ \t\t\t\t// Normal module\n/******/ \t\t\t\tmodules[moduleId] = _m;\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tdefault:\n/******/ \t\t\t\t// Module is a copy of another module\n/******/ \t\t\t\tmodules[moduleId] = modules[_m];\n/******/ \t\t\t\tbreak;\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t31:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"285786eca84d7b7471ac\",\"1\":\"765e28a442160395e71a\",\"2\":\"f6372652ce6895fe1fad\",\"3\":\"31f4515503a814e0e3a3\",\"4\":\"ef9b48820b09477986b5\",\"5\":\"3aa55302c802f48db900\",\"6\":\"0db5d3ff22944de7edd5\",\"7\":\"b2e2b3f88a04f6b296dd\",\"8\":\"292c6a157d71f0b21b6f\",\"9\":\"8ad948dd393d38f07a7a\",\"10\":\"c1c9496ebfc8949f3de2\",\"11\":\"18f1cc16362b76373c40\",\"12\":\"f6b6e770dfe4a5949444\",\"13\":\"066b4d36814efa6c485f\",\"14\":\"72a6fc22c9b0cc8bcd14\",\"15\":\"7de380008f4ec6ea4b5b\",\"16\":\"cddb601c07a2df6564b2\",\"17\":\"26a29ec18e773c2be9b2\",\"18\":\"b7098bfe5401f75973fa\",\"19\":\"2061dca8438f415029a3\",\"20\":\"17e9e766625991aa0a7b\",\"21\":\"2b48c7e5fe59775d5eb3\",\"22\":\"2a919b7f6014457264e8\",\"23\":\"18bb4231e440e17f29a2\",\"24\":\"bb29ce250a1b77491420\",\"25\":\"6cb865e768a122d52b4d\",\"26\":\"2bd61452982a0d4de0a3\",\"27\":\"1872ae081edb64216589\",\"28\":\"1e240391cc0358805408\",\"29\":\"556152a9334761b0d972\",\"30\":\"a2eb870c6d29644ed9b5\",\"32\":\"92a026dcad120ccdf15f\",\"33\":\"6636c1fd8aec6fc072b8\"}[chunkId] + \".js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/static/\";\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([])));\n\n\n/** WEBPACK FOOTER **\n ** common.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tvar _m = moreModules[moduleId];\n\n \t\t\t// Check if module is deduplicated\n \t\t\tswitch(typeof _m) {\n \t\t\tcase \"object\":\n \t\t\t\t// Module can be created from a template\n \t\t\t\tmodules[moduleId] = (function(_m) {\n \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n \t\t\t\t\treturn function (a,b,c) {\n \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n \t\t\t\t\t};\n \t\t\t\t}(_m));\n \t\t\t\tbreak;\n \t\t\tcase \"function\":\n \t\t\t\t// Normal module\n \t\t\t\tmodules[moduleId] = _m;\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\t// Module is a copy of another module\n \t\t\t\tmodules[moduleId] = modules[_m];\n \t\t\t\tbreak;\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t31:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"285786eca84d7b7471ac\",\"1\":\"765e28a442160395e71a\",\"2\":\"f6372652ce6895fe1fad\",\"3\":\"31f4515503a814e0e3a3\",\"4\":\"ef9b48820b09477986b5\",\"5\":\"3aa55302c802f48db900\",\"6\":\"0db5d3ff22944de7edd5\",\"7\":\"b2e2b3f88a04f6b296dd\",\"8\":\"292c6a157d71f0b21b6f\",\"9\":\"8ad948dd393d38f07a7a\",\"10\":\"c1c9496ebfc8949f3de2\",\"11\":\"18f1cc16362b76373c40\",\"12\":\"f6b6e770dfe4a5949444\",\"13\":\"066b4d36814efa6c485f\",\"14\":\"72a6fc22c9b0cc8bcd14\",\"15\":\"7de380008f4ec6ea4b5b\",\"16\":\"cddb601c07a2df6564b2\",\"17\":\"26a29ec18e773c2be9b2\",\"18\":\"b7098bfe5401f75973fa\",\"19\":\"2061dca8438f415029a3\",\"20\":\"17e9e766625991aa0a7b\",\"21\":\"2b48c7e5fe59775d5eb3\",\"22\":\"2a919b7f6014457264e8\",\"23\":\"18bb4231e440e17f29a2\",\"24\":\"bb29ce250a1b77491420\",\"25\":\"6cb865e768a122d52b4d\",\"26\":\"2bd61452982a0d4de0a3\",\"27\":\"1872ae081edb64216589\",\"28\":\"1e240391cc0358805408\",\"29\":\"556152a9334761b0d972\",\"30\":\"a2eb870c6d29644ed9b5\",\"32\":\"92a026dcad120ccdf15f\",\"33\":\"6636c1fd8aec6fc072b8\"}[chunkId] + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap aae90f74dc2315755797\n **/"],"sourceRoot":""}
|
|
@@ -2,6 +2,7 @@ from datetime import datetime
|
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
4
|
from flask import url_for
|
|
5
|
+
from werkzeug.test import TestResponse
|
|
5
6
|
|
|
6
7
|
from udata.core.badges.factories import badge_factory
|
|
7
8
|
from udata.core.dataset.factories import DatasetFactory
|
|
@@ -25,6 +26,11 @@ pytestmark = [
|
|
|
25
26
|
]
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
def reuse_in_response(response: TestResponse, reuse: Reuse) -> bool:
|
|
30
|
+
only_reuse = [r for r in response.json["data"] if r["id"] == str(reuse.id)]
|
|
31
|
+
return len(only_reuse) > 0
|
|
32
|
+
|
|
33
|
+
|
|
28
34
|
class ReuseAPITest:
|
|
29
35
|
modules = []
|
|
30
36
|
|
|
@@ -88,6 +94,7 @@ class ReuseAPITest:
|
|
|
88
94
|
# Keep only featured reuses (if any)
|
|
89
95
|
data = [reuse for reuse in response.json["data"] if reuse["featured"]]
|
|
90
96
|
assert len(data) == 0 # It did not return any featured reuse
|
|
97
|
+
|
|
91
98
|
# filter on topic
|
|
92
99
|
response = api.get(url_for("api.reuses", topic=topic_reuse.topic))
|
|
93
100
|
assert200(response)
|
|
@@ -118,6 +125,104 @@ class ReuseAPITest:
|
|
|
118
125
|
response = api.get(url_for("api.reuses", organization="org-id"))
|
|
119
126
|
assert400(response)
|
|
120
127
|
|
|
128
|
+
def test_reuse_api_list_filter_private(self, api) -> None:
|
|
129
|
+
"""Should filters reuses results based on the `private` filter"""
|
|
130
|
+
user = UserFactory()
|
|
131
|
+
public_reuse: Reuse = ReuseFactory()
|
|
132
|
+
private_reuse: Reuse = ReuseFactory(private=True, owner=user)
|
|
133
|
+
|
|
134
|
+
# Only public reuses for non-authenticated user.
|
|
135
|
+
response: TestResponse = api.get(url_for("api.reuses"))
|
|
136
|
+
assert200(response)
|
|
137
|
+
assert len(response.json["data"]) == 1
|
|
138
|
+
assert reuse_in_response(response, public_reuse)
|
|
139
|
+
|
|
140
|
+
# With an authenticated user.
|
|
141
|
+
api.login(user)
|
|
142
|
+
# all the reuses (by default)
|
|
143
|
+
response = api.get(url_for("api.reuses"))
|
|
144
|
+
assert200(response)
|
|
145
|
+
assert len(response.json["data"]) == 2 # Return everything
|
|
146
|
+
assert reuse_in_response(response, public_reuse)
|
|
147
|
+
assert reuse_in_response(response, private_reuse)
|
|
148
|
+
|
|
149
|
+
# only public
|
|
150
|
+
response = api.get(url_for("api.reuses", private="false"))
|
|
151
|
+
assert200(response)
|
|
152
|
+
assert len(response.json["data"]) == 1 # Don't return the private reuse
|
|
153
|
+
assert reuse_in_response(response, public_reuse)
|
|
154
|
+
|
|
155
|
+
# only private
|
|
156
|
+
response = api.get(url_for("api.reuses", private="true"))
|
|
157
|
+
assert200(response)
|
|
158
|
+
assert len(response.json["data"]) == 1 # Return only the private
|
|
159
|
+
assert reuse_in_response(response, private_reuse)
|
|
160
|
+
|
|
161
|
+
def test_reuse_api_list_filter_private_only_owned_by_user(self, api) -> None:
|
|
162
|
+
"""Should only return private reuses that are owned."""
|
|
163
|
+
user = UserFactory()
|
|
164
|
+
member = Member(user=user, role="editor")
|
|
165
|
+
org = OrganizationFactory(members=[member])
|
|
166
|
+
private_owned: Reuse = ReuseFactory(private=True, owner=user)
|
|
167
|
+
private_owned_through_org: Reuse = ReuseFactory(private=True, organization=org)
|
|
168
|
+
private_not_owned: Reuse = ReuseFactory(private=True)
|
|
169
|
+
|
|
170
|
+
# Only public reuses for non-authenticated user.
|
|
171
|
+
response: TestResponse = api.get(url_for("api.reuses"))
|
|
172
|
+
assert200(response)
|
|
173
|
+
assert len(response.json["data"]) == 0
|
|
174
|
+
|
|
175
|
+
# With an authenticated user.
|
|
176
|
+
api.login(user)
|
|
177
|
+
response = api.get(url_for("api.reuses"))
|
|
178
|
+
assert200(response)
|
|
179
|
+
assert len(response.json["data"]) == 2 # Only the owned reuses
|
|
180
|
+
assert reuse_in_response(response, private_owned)
|
|
181
|
+
assert reuse_in_response(response, private_owned_through_org)
|
|
182
|
+
assert not reuse_in_response(response, private_not_owned)
|
|
183
|
+
|
|
184
|
+
# Still no private returned if `private=False`
|
|
185
|
+
response = api.get(url_for("api.reuses", private=False))
|
|
186
|
+
assert200(response)
|
|
187
|
+
assert len(response.json["data"]) == 0
|
|
188
|
+
|
|
189
|
+
# Still only return owned private reuses
|
|
190
|
+
response = api.get(url_for("api.reuses", private=True))
|
|
191
|
+
assert200(response)
|
|
192
|
+
assert len(response.json["data"]) == 2 # Only the owned reuses
|
|
193
|
+
assert reuse_in_response(response, private_owned)
|
|
194
|
+
assert reuse_in_response(response, private_owned_through_org)
|
|
195
|
+
assert not reuse_in_response(response, private_not_owned)
|
|
196
|
+
|
|
197
|
+
def test_reuse_api_list_filter_private_only_owned_by_user_no_user(self, api) -> None:
|
|
198
|
+
"""Shouldn't return any private reuses for non logged in users."""
|
|
199
|
+
user = UserFactory()
|
|
200
|
+
member = Member(user=user, role="editor")
|
|
201
|
+
org = OrganizationFactory(members=[member])
|
|
202
|
+
public_owned: Reuse = ReuseFactory(owner=user)
|
|
203
|
+
public_not_owned: Reuse = ReuseFactory()
|
|
204
|
+
_private_owned: Reuse = ReuseFactory(private=True, owner=user)
|
|
205
|
+
_private_owned_through_org: Reuse = ReuseFactory(private=True, organization=org)
|
|
206
|
+
_private_not_owned: Reuse = ReuseFactory(private=True)
|
|
207
|
+
|
|
208
|
+
response: TestResponse = api.get(url_for("api.reuses"))
|
|
209
|
+
assert200(response)
|
|
210
|
+
assert len(response.json["data"]) == 2
|
|
211
|
+
assert reuse_in_response(response, public_owned)
|
|
212
|
+
assert reuse_in_response(response, public_not_owned)
|
|
213
|
+
|
|
214
|
+
# Still no private returned if `private=False`
|
|
215
|
+
response = api.get(url_for("api.reuses", private=False))
|
|
216
|
+
assert200(response)
|
|
217
|
+
assert len(response.json["data"]) == 2
|
|
218
|
+
assert reuse_in_response(response, public_owned)
|
|
219
|
+
assert reuse_in_response(response, public_not_owned)
|
|
220
|
+
|
|
221
|
+
# Still no private returned if `private=True`
|
|
222
|
+
response = api.get(url_for("api.reuses", private=True))
|
|
223
|
+
assert200(response)
|
|
224
|
+
assert len(response.json["data"]) == 0
|
|
225
|
+
|
|
121
226
|
def test_reuse_api_get(self, api):
|
|
122
227
|
"""It should fetch a reuse from the API"""
|
|
123
228
|
reuse = ReuseFactory()
|
|
@@ -31,7 +31,7 @@ class DatasetEventsTest:
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
mock_req.assert_called_with(
|
|
34
|
-
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/
|
|
34
|
+
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/resources/",
|
|
35
35
|
json=expected_value,
|
|
36
36
|
headers={}, # No RESOURCES_ANALYSER_API_KEY, no headers.
|
|
37
37
|
)
|
|
@@ -53,12 +53,12 @@ class DatasetEventsTest:
|
|
|
53
53
|
dataset.add_resource(resource)
|
|
54
54
|
|
|
55
55
|
mock_req.assert_called_with(
|
|
56
|
-
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/
|
|
56
|
+
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/resources/",
|
|
57
57
|
json=expected_value,
|
|
58
58
|
headers={"Authorization": "Bearer foobar-api-key"},
|
|
59
59
|
)
|
|
60
60
|
|
|
61
|
-
@patch("requests.
|
|
61
|
+
@patch("requests.put")
|
|
62
62
|
@pytest.mark.options(RESOURCES_ANALYSER_API_KEY="foobar-api-key")
|
|
63
63
|
def test_publish_message_resource_modified(self, mock_req):
|
|
64
64
|
resource = ResourceFactory(schema=Schema(url="http://localhost/my-schema"))
|
|
@@ -77,7 +77,7 @@ class DatasetEventsTest:
|
|
|
77
77
|
dataset.update_resource(resource)
|
|
78
78
|
|
|
79
79
|
mock_req.assert_called_with(
|
|
80
|
-
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/
|
|
80
|
+
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/resources/",
|
|
81
81
|
json=expected_value,
|
|
82
82
|
headers={"Authorization": "Bearer foobar-api-key"},
|
|
83
83
|
)
|
|
@@ -87,7 +87,7 @@ class DatasetEventsTest:
|
|
|
87
87
|
# (for example, encoding Embeds fails)
|
|
88
88
|
complexjson.dumps(expected_value)
|
|
89
89
|
|
|
90
|
-
@patch("requests.
|
|
90
|
+
@patch("requests.delete")
|
|
91
91
|
@pytest.mark.options(RESOURCES_ANALYSER_API_KEY="foobar-api-key")
|
|
92
92
|
def test_publish_message_resource_removed(self, mock_req):
|
|
93
93
|
resource = ResourceFactory()
|
|
@@ -104,7 +104,7 @@ class DatasetEventsTest:
|
|
|
104
104
|
dataset.remove_resource(resource)
|
|
105
105
|
|
|
106
106
|
mock_req.assert_called_with(
|
|
107
|
-
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/
|
|
107
|
+
f"{current_app.config['RESOURCES_ANALYSER_URI']}/api/resources/",
|
|
108
108
|
json=expected_value,
|
|
109
109
|
headers={"Authorization": "Bearer foobar-api-key"},
|
|
110
110
|
)
|
udata/tests/test_owned.py
CHANGED
|
@@ -3,14 +3,25 @@ from mongoengine import post_save
|
|
|
3
3
|
import udata.core.owned as owned
|
|
4
4
|
from udata.core.organization.factories import OrganizationFactory
|
|
5
5
|
from udata.core.organization.models import Organization
|
|
6
|
-
from udata.core.user.factories import UserFactory
|
|
6
|
+
from udata.core.user.factories import AdminFactory, UserFactory
|
|
7
7
|
from udata.core.user.models import User
|
|
8
|
+
from udata.models import Member
|
|
8
9
|
from udata.mongo import db
|
|
9
10
|
from udata.tests import DBTestMixin, TestCase
|
|
10
11
|
|
|
11
12
|
|
|
13
|
+
class CustomQuerySet(owned.OwnedQuerySet):
|
|
14
|
+
def visible(self):
|
|
15
|
+
return self(private__ne=True)
|
|
16
|
+
|
|
17
|
+
|
|
12
18
|
class Owned(owned.Owned, db.Document):
|
|
13
19
|
name = db.StringField()
|
|
20
|
+
private = db.BooleanField()
|
|
21
|
+
|
|
22
|
+
meta = {
|
|
23
|
+
"queryset_class": CustomQuerySet,
|
|
24
|
+
}
|
|
14
25
|
|
|
15
26
|
|
|
16
27
|
class OwnedPostSave(owned.Owned, db.Document):
|
|
@@ -166,3 +177,91 @@ class OwnedQuerysetTest(DBTestMixin, TestCase):
|
|
|
166
177
|
|
|
167
178
|
for owned_ in excluded:
|
|
168
179
|
self.assertNotIn(owned_, result)
|
|
180
|
+
|
|
181
|
+
def test_visible_by_user(self) -> None:
|
|
182
|
+
admin: User = AdminFactory()
|
|
183
|
+
user: User = UserFactory()
|
|
184
|
+
member = Member(user=user, role="editor")
|
|
185
|
+
other_user: User = UserFactory()
|
|
186
|
+
org: Organization = OrganizationFactory(members=[member])
|
|
187
|
+
other_org: Organization = OrganizationFactory()
|
|
188
|
+
owned_by_user: Owned = Owned.objects.create(owner=user, name="owned_by_user")
|
|
189
|
+
owned_by_org: Owned = Owned.objects.create(organization=org, name="owned_by_org")
|
|
190
|
+
owned_by_other_user: Owned = Owned.objects.create(
|
|
191
|
+
owner=other_user, name="owned_by_other_user"
|
|
192
|
+
)
|
|
193
|
+
owned_by_other_org: Owned = Owned.objects.create(
|
|
194
|
+
organization=other_org, name="owned_by_other_org"
|
|
195
|
+
)
|
|
196
|
+
private_owned_by_user: Owned = Owned.objects.create(
|
|
197
|
+
owner=user, private=True, name="private_owned_by_user"
|
|
198
|
+
)
|
|
199
|
+
private_owned_by_org: Owned = Owned.objects.create(
|
|
200
|
+
organization=org, private=True, name="private_owned_by_org"
|
|
201
|
+
)
|
|
202
|
+
private_owned_by_other_user: Owned = Owned.objects.create(
|
|
203
|
+
owner=other_user, private=True, name="private_owned_by_other_user"
|
|
204
|
+
)
|
|
205
|
+
private_owned_by_other_org: Owned = Owned.objects.create(
|
|
206
|
+
organization=other_org, private=True, name="private_owned_by_other_org"
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
visible_by_user: list[Owned] = [
|
|
210
|
+
owned_by_user,
|
|
211
|
+
owned_by_org,
|
|
212
|
+
owned_by_other_user,
|
|
213
|
+
owned_by_other_org,
|
|
214
|
+
private_owned_by_user,
|
|
215
|
+
private_owned_by_org,
|
|
216
|
+
]
|
|
217
|
+
visible_by_other_user: list[Owned] = [
|
|
218
|
+
private_owned_by_other_user,
|
|
219
|
+
private_owned_by_other_org,
|
|
220
|
+
]
|
|
221
|
+
|
|
222
|
+
# Admin can view everything.
|
|
223
|
+
result: owned.OwnedQuerySet = Owned.objects.visible_by_user(
|
|
224
|
+
admin, Owned.objects.visible()._query_obj
|
|
225
|
+
)
|
|
226
|
+
# 4 public + 1 private owned by user + 1 private owned by the user's org.
|
|
227
|
+
self.assertEqual(len(result), 8)
|
|
228
|
+
for owned_ in visible_by_user + visible_by_other_user:
|
|
229
|
+
self.assertIn(owned_, result)
|
|
230
|
+
|
|
231
|
+
result = Owned.objects.visible_by_user(user, Owned.objects.visible()._query_obj)
|
|
232
|
+
# 4 public + 1 private owned by user + 1 private owned by the user's org.
|
|
233
|
+
self.assertEqual(len(result), 6)
|
|
234
|
+
for owned_ in visible_by_user:
|
|
235
|
+
self.assertIn(owned_, result)
|
|
236
|
+
|
|
237
|
+
# `.visible_by_user` does not reset other queries.
|
|
238
|
+
result = Owned.objects(name="owned_by_user").visible_by_user(
|
|
239
|
+
user, Owned.objects.visible()._query_obj
|
|
240
|
+
)
|
|
241
|
+
self.assertEqual(len(result), 1)
|
|
242
|
+
self.assertIn(owned_by_user, result)
|
|
243
|
+
result = Owned.objects.visible_by_user(user, Owned.objects.visible()._query_obj).filter(
|
|
244
|
+
name="owned_by_user"
|
|
245
|
+
)
|
|
246
|
+
self.assertEqual(len(result), 1)
|
|
247
|
+
self.assertIn(owned_by_user, result)
|
|
248
|
+
|
|
249
|
+
result = Owned.objects(name="private_owned_by_user").visible_by_user(
|
|
250
|
+
user, Owned.objects.visible()._query_obj
|
|
251
|
+
)
|
|
252
|
+
self.assertEqual(len(result), 1)
|
|
253
|
+
self.assertIn(private_owned_by_user, result)
|
|
254
|
+
result = Owned.objects.visible_by_user(user, Owned.objects.visible()._query_obj).filter(
|
|
255
|
+
name="private_owned_by_user"
|
|
256
|
+
)
|
|
257
|
+
self.assertEqual(len(result), 1)
|
|
258
|
+
self.assertIn(private_owned_by_user, result)
|
|
259
|
+
|
|
260
|
+
result = Owned.objects(name="private_owned_by_other_user").visible_by_user(
|
|
261
|
+
user, Owned.objects.visible()._query_obj
|
|
262
|
+
)
|
|
263
|
+
self.assertEqual(len(result), 0)
|
|
264
|
+
result = Owned.objects.visible_by_user(user, Owned.objects.visible()._query_obj).filter(
|
|
265
|
+
name="private_owned_by_other_user"
|
|
266
|
+
)
|
|
267
|
+
self.assertEqual(len(result), 0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 9.1.5.
|
|
3
|
+
Version: 9.1.5.dev31476
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -140,10 +140,12 @@ It is collectively taken care of by members of the
|
|
|
140
140
|
|
|
141
141
|
## Current (in progress)
|
|
142
142
|
|
|
143
|
+
- **breaking change** Return all the reuses available to a user on the /reuses endpoint, including the private and deleted ones they own [#3140](https://github.com/opendatateam/udata/pull/3140).
|
|
143
144
|
- Fix undelete reuse and dataservices [#3141](https://github.com/opendatateam/udata/pull/3141)
|
|
144
145
|
- Add a minimal publiccode.yml [#3144](https://github.com/opendatateam/udata/pull/3144)
|
|
145
146
|
- Fix the boolean filters in the API for the "new system" endpoints [#3139](https://github.com/opendatateam/udata/pull/3139)
|
|
146
147
|
- Update authlib dependency from 0.14.3 to 1.3.1 [#3135](https://github.com/opendatateam/udata/pull/3135)
|
|
148
|
+
- Use hydra's RESTful endpoint URLs [#3142](https://github.com/opendatateam/udata/pull/3142)
|
|
147
149
|
|
|
148
150
|
## 9.1.4 (2024-08-26)
|
|
149
151
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
tasks/__init__.py,sha256=
|
|
1
|
+
tasks/__init__.py,sha256=nubUI6ljumym4uv6NvAJEkWHtsdurFpEGSq-AxDWYDM,8153
|
|
2
2
|
tasks/helpers.py,sha256=70fS9tI_m0DTWmKx9Zl5-LG-nxdz_ZaPyvvsFkN2r48,1091
|
|
3
3
|
udata/__init__.py,sha256=enNs52eaNpjDjWyix7yBTjNLTYjHdP2jxLdiKyFGvJo,101
|
|
4
|
-
udata/api_fields.py,sha256=
|
|
4
|
+
udata/api_fields.py,sha256=Oq0WTuI2b-TZXcxr_RExxKHT1wQYlqmDo1gKJsOfXp8,19369
|
|
5
5
|
udata/app.py,sha256=xjk2D3EgboYBpTwBwdIxd2klt2yMoWMyCrkry5fz0LA,7292
|
|
6
6
|
udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
|
|
7
7
|
udata/cors.py,sha256=m4_AttmBwUEI_njVJkGDFMCpCD3Tvt9k7xBjuQTDqbU,2987
|
|
@@ -54,7 +54,7 @@ udata/commands/worker.py,sha256=bjXQGCwkbZxkcxLMPA2Lr0nkNjXLpGNDMkkQXjwBLPI,3976
|
|
|
54
54
|
udata/commands/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
55
|
udata/commands/tests/test_fixtures.py,sha256=ZDps7ao6r86SV1Gv0Aftq4Ly1sdDnrUQGMNUz6LMTIo,5012
|
|
56
56
|
udata/core/__init__.py,sha256=O7C9WWCXiLWnWPnPbFRszWhOmvRQiI4gD-5qkWvPGRo,385
|
|
57
|
-
udata/core/owned.py,sha256=
|
|
57
|
+
udata/core/owned.py,sha256=dFGY_DTiZYZ1gyRd6HqsNgAazQ-J7Q7ZbVDWyNjZnQw,5150
|
|
58
58
|
udata/core/activity/__init__.py,sha256=OaiFyq7HB4xL4SuMPD1N8IFNpntwx9ZayVzelciOieI,298
|
|
59
59
|
udata/core/activity/api.py,sha256=QFSLSVf65f-jz0dyVuMqaXm6qB4m-YlGnjqK33suwI8,3854
|
|
60
60
|
udata/core/activity/models.py,sha256=Ln9YUsdCBMFmUlw5GA2gIJ50sMorMFzZGo8u8sy7pIE,2072
|
|
@@ -95,7 +95,7 @@ udata/core/dataset/apiv2.py,sha256=VTE4eYx5udzOdHDUkD7TYpuCtppZMKp1okTSEE1fcgI,1
|
|
|
95
95
|
udata/core/dataset/commands.py,sha256=__hPAk_6iHtgMnEG51ux0vbNWJHxUjXhi1ukH4hF5jY,3714
|
|
96
96
|
udata/core/dataset/constants.py,sha256=pkOvrdNBq3k1ojJcv6oSg7kK1IUtb3PqLni-YJ3rKSY,2880
|
|
97
97
|
udata/core/dataset/csv.py,sha256=XMl8MaYCEyGmkCZqRSWrGRxCht2C9e3aQYGwDQLXYT0,3618
|
|
98
|
-
udata/core/dataset/events.py,sha256=
|
|
98
|
+
udata/core/dataset/events.py,sha256=LGSTwipns0H6141jaupLdEdrJhvcyhzL7yRUNBWWi9Q,3712
|
|
99
99
|
udata/core/dataset/exceptions.py,sha256=uKiayLSpSzsnLvClObS6hOO0qXEqvURKN7_w8eimQNU,498
|
|
100
100
|
udata/core/dataset/factories.py,sha256=fRDWDlybR_ud4pDs1-ntWuYHKtV9LMHeBOBp2SmTT6M,9006
|
|
101
101
|
udata/core/dataset/forms.py,sha256=H2oeAD8XckMugnwUcyuKv7o1Xq1rEIlLz9FtxujqbIE,6196
|
|
@@ -168,14 +168,14 @@ udata/core/reports/constants.py,sha256=LRZSX3unyqZeB4yQjK3ws_hGbJcXYk4bu1Rhnhi5D
|
|
|
168
168
|
udata/core/reports/models.py,sha256=AsW5p2ZIdR4c6vNzglEN7MX03It-t9u7ktOsVZqvzSs,2702
|
|
169
169
|
udata/core/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
170
|
udata/core/reuse/activities.py,sha256=mAdHhqqpUF5zSh4e5AEo0J7alc3RflTbudDaKOzyTQw,1406
|
|
171
|
-
udata/core/reuse/api.py,sha256=
|
|
171
|
+
udata/core/reuse/api.py,sha256=jfPuZaTmbQ-57qzf0hq7UKHdRJ08Ig32fDFB4OvqYMc,10534
|
|
172
172
|
udata/core/reuse/api_fields.py,sha256=c61Gl56UjiBpXS0Nbvcoi_QHdUmhnBtqWm6nNHRYKyc,1232
|
|
173
173
|
udata/core/reuse/apiv2.py,sha256=nZe-v8713aXKuv2B578NdxfrIckjbxhS3zUXAKSIKTI,835
|
|
174
174
|
udata/core/reuse/constants.py,sha256=JgDBrjOKSt9q0auv9rjzbGsch83H-Oi8YXAKeI5hO4o,1215
|
|
175
175
|
udata/core/reuse/csv.py,sha256=4TcQbk4kWN_HbnpEUfgfW9_x7ZqNDk5s4YuJ839p3EE,896
|
|
176
176
|
udata/core/reuse/factories.py,sha256=GrQqYTIvwQrwkvJrbTr38-2faFW_PC99gn3yOVpgFec,850
|
|
177
177
|
udata/core/reuse/metrics.py,sha256=sVh7BlW3OKRvFDHFyD4pPUV91jOOhj8qeWbBkLPn5Gg,176
|
|
178
|
-
udata/core/reuse/models.py,sha256=
|
|
178
|
+
udata/core/reuse/models.py,sha256=xepmtMIN7LymmsQiVxh-zwud1QAvRaYMEQ1UXqsRmVY,7945
|
|
179
179
|
udata/core/reuse/permissions.py,sha256=j-ancS7gvLl5vJu0TNYqpYD-2So-UzoDE4IHLxRoMGg,621
|
|
180
180
|
udata/core/reuse/search.py,sha256=NkCRE8mGBdmlau0S9SsNPG0_zvB7MMNws64HGsq4yWM,3056
|
|
181
181
|
udata/core/reuse/signals.py,sha256=nDrEUpYKN0AdYiEbrR0z3nzXzjaRcD8SAMutwIDsQPM,155
|
|
@@ -422,8 +422,8 @@ udata/static/admin.css,sha256=RC7GvbVK8c5wDuELPeVdQpy3ab7HbHl1T4hUo5n-NVk,185167
|
|
|
422
422
|
udata/static/admin.css.map,sha256=tUhFfsJUK3RrWCih9gUkf-Ywccuztxf4tqvXcN6zP3Y,626542
|
|
423
423
|
udata/static/admin.js,sha256=4dT1TxL-t0lHOWeuQNv4UNQdBPdNeNI1HyoAKdJ1oag,1327903
|
|
424
424
|
udata/static/admin.js.map,sha256=rYa-YLNxQK7QNoMSkGC2Gg26sb6qtqhj6rWm2B5laMk,8511948
|
|
425
|
-
udata/static/common.js,sha256=
|
|
426
|
-
udata/static/common.js.map,sha256=
|
|
425
|
+
udata/static/common.js,sha256=8COMVymBwsAXrw0ut26r3snSKZPpVXiWxH4Jho2TZ50,2252
|
|
426
|
+
udata/static/common.js.map,sha256=3xGW90wG3dzvoo55UoIJOl5nDBTjiHBNXJAlNevpMLo,14137
|
|
427
427
|
udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
|
|
428
428
|
udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
|
|
429
429
|
udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
|
|
@@ -442,24 +442,24 @@ udata/static/chunks/1.765e28a442160395e71a.js,sha256=QmEnJzEqg8IYdn1q6Aa0phrK3Je
|
|
|
442
442
|
udata/static/chunks/1.765e28a442160395e71a.js.map,sha256=xHG3d2YuEGQCz8iJ3kktKQrVdVbHcRdHLVVTUw7SAY0,1741781
|
|
443
443
|
udata/static/chunks/10.c1c9496ebfc8949f3de2.js,sha256=_c1TZ9A3QYiV16Ia4ZTOtCdgS4JcJroS6UsJpvJXpGo,414754
|
|
444
444
|
udata/static/chunks/10.c1c9496ebfc8949f3de2.js.map,sha256=nUjRgXE2w07GZL2B3pmsW7PFExt9O1V7r7WeGs2IITo,2736101
|
|
445
|
-
udata/static/chunks/11.
|
|
446
|
-
udata/static/chunks/11.
|
|
445
|
+
udata/static/chunks/11.18f1cc16362b76373c40.js,sha256=OsdV4LAscV5dG4OZr6Iz7s43SX4bRX47VO_w3sTTAHw,395574
|
|
446
|
+
udata/static/chunks/11.18f1cc16362b76373c40.js.map,sha256=r3Qy-8c3rm4xyZPhiVNdBpCvQF0skPASzssvQ683oZ0,2268995
|
|
447
447
|
udata/static/chunks/12.f6b6e770dfe4a5949444.js,sha256=VcDbizd51KRtn5nfLuX6O4iWzXjW9pJyc9nTLyjdoA4,421111
|
|
448
448
|
udata/static/chunks/12.f6b6e770dfe4a5949444.js.map,sha256=3qy1SeMiEIlEWiZWZt2IOtPPY8Ra8OtdOjJDcSahl3o,2442272
|
|
449
|
-
udata/static/chunks/13.
|
|
450
|
-
udata/static/chunks/13.
|
|
449
|
+
udata/static/chunks/13.066b4d36814efa6c485f.js,sha256=OFopfD5_VFB5JnYr8uy8wUhu1pknFRfjwmgujlPInTU,420602
|
|
450
|
+
udata/static/chunks/13.066b4d36814efa6c485f.js.map,sha256=adJsfT0CT3yjzwEyzReV6vGiuivjw_JyNad9pfDCNz8,2430671
|
|
451
451
|
udata/static/chunks/14.72a6fc22c9b0cc8bcd14.js,sha256=MihplpI0AWfpUVZf0mbxIgIv7P7UpS0AlzowfHOkZdM,290380
|
|
452
452
|
udata/static/chunks/14.72a6fc22c9b0cc8bcd14.js.map,sha256=MWgBgVEAzuEOV7JDIjP16_OPwEN4bNEm8deUtMpNmAs,1636958
|
|
453
453
|
udata/static/chunks/15.7de380008f4ec6ea4b5b.js,sha256=XXTC9s-FlP7vOI5HL55ucXyDCSRdixSj6MuWmG8Q0j4,228573
|
|
454
454
|
udata/static/chunks/15.7de380008f4ec6ea4b5b.js.map,sha256=kASNYsUarGRLBj7FOVG8KwUtYjmVqnhhEzwHVf6gkPo,1574491
|
|
455
|
-
udata/static/chunks/16.
|
|
456
|
-
udata/static/chunks/16.
|
|
455
|
+
udata/static/chunks/16.cddb601c07a2df6564b2.js,sha256=tykeZoMDn_Q3oPtApVSRo2OICw8MWogOaPUPCOlOgpU,236713
|
|
456
|
+
udata/static/chunks/16.cddb601c07a2df6564b2.js.map,sha256=BMdN69BaUj2oo6Ls8TcLGFljpr2PCr69B7KpXKpDNnY,1289902
|
|
457
457
|
udata/static/chunks/17.26a29ec18e773c2be9b2.js,sha256=dIudcBaTVp60ns0Yx3CvDth77x1EZjcHRgoMz0QQk18,135069
|
|
458
458
|
udata/static/chunks/17.26a29ec18e773c2be9b2.js.map,sha256=1juFn_nNXsM1TG0lNRRmhPyZfKXOvTUpNontHi-QNQA,683202
|
|
459
459
|
udata/static/chunks/18.b7098bfe5401f75973fa.js,sha256=ntlr4y2ssL4wG8pPprUu7x23Uq81n7pSQym1nwQb1jk,50398
|
|
460
460
|
udata/static/chunks/18.b7098bfe5401f75973fa.js.map,sha256=tPyhZOsDl9NOfS9X8c9e80nShe6OztZ-ZrS9e2Rq1co,277843
|
|
461
|
-
udata/static/chunks/19.
|
|
462
|
-
udata/static/chunks/19.
|
|
461
|
+
udata/static/chunks/19.2061dca8438f415029a3.js,sha256=nERvnckvH5VSiFvBTAhq7ACCaaUAW1T5P6lZebOZYwU,203430
|
|
462
|
+
udata/static/chunks/19.2061dca8438f415029a3.js.map,sha256=cqUcf1oMihUoiExcnuxCHss33qcb11NIOZx_fTYVzeI,1080009
|
|
463
463
|
udata/static/chunks/2.f6372652ce6895fe1fad.js,sha256=QMrZDZdtmrH4OnIMkFnYbTdFc9GWwradajfpiAyC6TA,276597
|
|
464
464
|
udata/static/chunks/2.f6372652ce6895fe1fad.js.map,sha256=iBdK6vfsRyC95O8YxO9NcDd_C-pWtQvRLMp6lkw83eg,1556097
|
|
465
465
|
udata/static/chunks/20.17e9e766625991aa0a7b.js,sha256=3d-hTgMZBST-fYU7dJyJaAQgMBUzqbfWKxMuImrfoX8,36778
|
|
@@ -490,14 +490,14 @@ udata/static/chunks/33.6636c1fd8aec6fc072b8.js,sha256=yycCLINhwwn5C5otnrrjDzkzgi
|
|
|
490
490
|
udata/static/chunks/33.6636c1fd8aec6fc072b8.js.map,sha256=_lic7_Z1titG5g0Z3wGkDYavzgihDuoN4vpeVr4OmuM,708253
|
|
491
491
|
udata/static/chunks/4.ef9b48820b09477986b5.js,sha256=MCqA0hSqGL0T9kY25f9JeGnY-mvrUkFCQFa7ko4y568,606944
|
|
492
492
|
udata/static/chunks/4.ef9b48820b09477986b5.js.map,sha256=xP6_2ZM6zYiV099kR7MohFPfFQBE16h5gpQ1-E3RKfI,3714087
|
|
493
|
-
udata/static/chunks/5.
|
|
494
|
-
udata/static/chunks/5.
|
|
495
|
-
udata/static/chunks/6.
|
|
496
|
-
udata/static/chunks/6.
|
|
493
|
+
udata/static/chunks/5.3aa55302c802f48db900.js,sha256=aOIeork5rsXkFH3vd89KYNxhfqnVNTVUO_JQQ6ykqZM,578925
|
|
494
|
+
udata/static/chunks/5.3aa55302c802f48db900.js.map,sha256=N8ruCOptq7qpr1_BpRB5gZwNYWeG4r2pNUWtuEGv6aw,3584879
|
|
495
|
+
udata/static/chunks/6.0db5d3ff22944de7edd5.js,sha256=psE775ajRzyqoiAUwB5iPPJKzzSeqjQxj6krR2bvhGc,609578
|
|
496
|
+
udata/static/chunks/6.0db5d3ff22944de7edd5.js.map,sha256=nIrUBSXBUfYuWsLDFxazvWVYSX3rOuDm-ajJphmYMKc,3781963
|
|
497
497
|
udata/static/chunks/7.b2e2b3f88a04f6b296dd.js,sha256=HzSg1w0EnSVt6cj-XZMV2JMgdTn8DPoqqXkcmAOd9HA,153255
|
|
498
498
|
udata/static/chunks/7.b2e2b3f88a04f6b296dd.js.map,sha256=AfuYi_i7eyZfuNVEiZUin06xjGi5xJt4bo9Wo9l0D1s,793535
|
|
499
|
-
udata/static/chunks/8.
|
|
500
|
-
udata/static/chunks/8.
|
|
499
|
+
udata/static/chunks/8.292c6a157d71f0b21b6f.js,sha256=EpgPzfJnTbz-RfxtpU4RjjZQjOiqxUxAdxg49W2yEwA,222870
|
|
500
|
+
udata/static/chunks/8.292c6a157d71f0b21b6f.js.map,sha256=8kPWd385Fi0nBGzpqalgcY0-dl0Fc5-8MflO722IqYc,1205115
|
|
501
501
|
udata/static/chunks/9.8ad948dd393d38f07a7a.js,sha256=f_STNW3kkPshGI2BcDnlvQybcrxP0tBq_w0sBig0u7E,416730
|
|
502
502
|
udata/static/chunks/9.8ad948dd393d38f07a7a.js.map,sha256=FCjw1dvwaZ3duUHvwFqKTUKIDYrWqm7OPQ_MRG9-tso,2746345
|
|
503
503
|
udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -587,7 +587,7 @@ udata/tests/test_mail.py,sha256=ijcrniawbvftm5UF8KDApBoxMHyZwULAA25LrnLmeI8,1629
|
|
|
587
587
|
udata/tests/test_migrations.py,sha256=Iq0gt3hjK6ohliIvEpqyt0tYJz0MKIzBg_yfw7dOcHo,15698
|
|
588
588
|
udata/tests/test_model.py,sha256=JWY6GKLk4fyIQoJiijH1yqC3o709vuYm5ljtMia-xIc,20525
|
|
589
589
|
udata/tests/test_notifications.py,sha256=m8G-fwBgOP5JQud5QMWVC6CBQL_h042VgrGMowK5ow0,2333
|
|
590
|
-
udata/tests/test_owned.py,sha256=
|
|
590
|
+
udata/tests/test_owned.py,sha256=3WGtAGT15RQPf2Swme8xPmflelI3I9rqTkVhSV-wf6E,9703
|
|
591
591
|
udata/tests/test_rdf.py,sha256=HtGgUtUH2Q8hFuIYvz8Pk3ctcM_egaUkRn7n8ID0Ldk,2828
|
|
592
592
|
udata/tests/test_routing.py,sha256=8AWHQ2yeT7jWycz9JDdSMpMe3HjLPpO_y1jGJ2DwzhE,10035
|
|
593
593
|
udata/tests/test_storages.py,sha256=OG_PnKtPlZmmhKnbbLrvL-EMEg35wAMsTC76jVEAOLU,9602
|
|
@@ -608,7 +608,7 @@ udata/tests/api/test_follow_api.py,sha256=fccgVNfcqET221PPS3p7qzb9hpvbBBUGhV-l4U
|
|
|
608
608
|
udata/tests/api/test_me_api.py,sha256=ZJKGH9fFv-4cSGcYAGd6IJA_PwPjVGIqWNy_DhFA8ms,13827
|
|
609
609
|
udata/tests/api/test_organizations_api.py,sha256=YcO2fWELdmPD4Oc8h5MTrLI-Gfbx16RN4nE14zzKGFw,35049
|
|
610
610
|
udata/tests/api/test_reports_api.py,sha256=fCSz9NwMXBs6cxdXBVVI6y564AtovmZYw3xkgxQ9KE8,6217
|
|
611
|
-
udata/tests/api/test_reuses_api.py,sha256=
|
|
611
|
+
udata/tests/api/test_reuses_api.py,sha256=ywN8f54wugeG1x_2GA_CtZk1z9jV25Dms1LNlMJNJ3k,23922
|
|
612
612
|
udata/tests/api/test_swagger.py,sha256=eE6La9qdTYTIUFevRVPJgtj17Jq_8uOlsDwzCNR0LL8,760
|
|
613
613
|
udata/tests/api/test_tags_api.py,sha256=36zEBgthVEn6pctJ0kDgPmEaUr-iqRAHeZRcRG2LEXQ,2425
|
|
614
614
|
udata/tests/api/test_topics_api.py,sha256=s4pqHTWl3ly8HQd2YmVclHFrjrf0212u5iDSOTSBbZg,9375
|
|
@@ -629,7 +629,7 @@ udata/tests/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
629
629
|
udata/tests/dataset/test_csv_adapter.py,sha256=Bupsw2vmkZjFLAbVATSek-6M_WZRsidXNGd28UQRVdE,3444
|
|
630
630
|
udata/tests/dataset/test_dataset_actions.py,sha256=bgDjVYjOvu3sX_FCTCzf2snZYSprsqor2nAhIVuokSs,722
|
|
631
631
|
udata/tests/dataset/test_dataset_commands.py,sha256=zMPJG2wYwKBee2zI65kmboxf59Zqa84DDjT8V5wj9uo,801
|
|
632
|
-
udata/tests/dataset/test_dataset_events.py,sha256=
|
|
632
|
+
udata/tests/dataset/test_dataset_events.py,sha256=SYYvtK_YjPUoMzw44CfoVtXn5gOcc7i0PqApcwRZkOw,4007
|
|
633
633
|
udata/tests/dataset/test_dataset_model.py,sha256=oaqm7q3DwZa4GLCyv7rj3rvtBIKxdCf4wUQdYo1pOiU,29745
|
|
634
634
|
udata/tests/dataset/test_dataset_rdf.py,sha256=EAUYrM2es4WFOcTh42j1h3CzYTW6p0JfYQddHdiLln8,30082
|
|
635
635
|
udata/tests/dataset/test_dataset_tasks.py,sha256=rSafDjCiOyEb2_tVUDN4wqGylF6Yf9VNB769SLmxlwI,2283
|
|
@@ -697,9 +697,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=WpPzAqVd2Onv_kz45ULUySKPLrpjcc
|
|
|
697
697
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=18Op9RUITewoDRewlOdYzzq6gjsf1lsvepACV1d7zxs,44976
|
|
698
698
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=NIYRNhVoETZUvIvWm3cCW7DtMBAnS2vXzZjMF5ZzD_c,28500
|
|
699
699
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=rQB-4V4WJ7bURj6g2j653vItr5TMHadcLQxec7_fDmg,51545
|
|
700
|
-
udata-9.1.5.
|
|
701
|
-
udata-9.1.5.
|
|
702
|
-
udata-9.1.5.
|
|
703
|
-
udata-9.1.5.
|
|
704
|
-
udata-9.1.5.
|
|
705
|
-
udata-9.1.5.
|
|
700
|
+
udata-9.1.5.dev31476.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
701
|
+
udata-9.1.5.dev31476.dist-info/METADATA,sha256=bMXc881-T_lSN5FOuwQI8YacVf-1J3AdhVYSVhefjIQ,130521
|
|
702
|
+
udata-9.1.5.dev31476.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
703
|
+
udata-9.1.5.dev31476.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
|
|
704
|
+
udata-9.1.5.dev31476.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
705
|
+
udata-9.1.5.dev31476.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|