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.

Files changed (31) hide show
  1. tasks/__init__.py +1 -1
  2. udata/api_fields.py +5 -1
  3. udata/core/dataset/events.py +14 -8
  4. udata/core/owned.py +16 -0
  5. udata/core/reuse/api.py +3 -2
  6. udata/core/reuse/models.py +1 -1
  7. udata/static/chunks/{11.16618d9eedd3f6a7a3c2.js → 11.18f1cc16362b76373c40.js} +3 -3
  8. udata/static/chunks/{11.16618d9eedd3f6a7a3c2.js.map → 11.18f1cc16362b76373c40.js.map} +1 -1
  9. udata/static/chunks/{13.7c17956e2fcfafcab22f.js → 13.066b4d36814efa6c485f.js} +2 -2
  10. udata/static/chunks/{13.7c17956e2fcfafcab22f.js.map → 13.066b4d36814efa6c485f.js.map} +1 -1
  11. udata/static/chunks/{16.b4cda3ca8dc053495fbd.js → 16.cddb601c07a2df6564b2.js} +2 -2
  12. udata/static/chunks/{16.b4cda3ca8dc053495fbd.js.map → 16.cddb601c07a2df6564b2.js.map} +1 -1
  13. udata/static/chunks/{19.f1ff6cd5816f2d9debc4.js → 19.2061dca8438f415029a3.js} +3 -3
  14. udata/static/chunks/{19.f1ff6cd5816f2d9debc4.js.map → 19.2061dca8438f415029a3.js.map} +1 -1
  15. udata/static/chunks/{5.14a4cd38c50b0559354e.js → 5.3aa55302c802f48db900.js} +3 -3
  16. udata/static/chunks/{5.14a4cd38c50b0559354e.js.map → 5.3aa55302c802f48db900.js.map} +1 -1
  17. udata/static/chunks/{6.c433506a3004b8f4d5fb.js → 6.0db5d3ff22944de7edd5.js} +3 -3
  18. udata/static/chunks/{6.c433506a3004b8f4d5fb.js.map → 6.0db5d3ff22944de7edd5.js.map} +1 -1
  19. udata/static/chunks/{8.b50a30118e9e2e1ab436.js → 8.292c6a157d71f0b21b6f.js} +2 -2
  20. udata/static/chunks/{8.b50a30118e9e2e1ab436.js.map → 8.292c6a157d71f0b21b6f.js.map} +1 -1
  21. udata/static/common.js +1 -1
  22. udata/static/common.js.map +1 -1
  23. udata/tests/api/test_reuses_api.py +105 -0
  24. udata/tests/dataset/test_dataset_events.py +6 -6
  25. udata/tests/test_owned.py +100 -1
  26. {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/METADATA +3 -1
  27. {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/RECORD +31 -31
  28. {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/LICENSE +0 -0
  29. {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/WHEEL +0 -0
  30. {udata-9.1.5.dev31458.dist-info → udata-9.1.5.dev31476.dist-info}/entry_points.txt +0 -0
  31. {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:"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"}[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}([]));
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
@@ -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/resource/created/",
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/resource/created/",
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.post")
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/resource/updated/",
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.post")
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/resource/deleted/",
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.dev31458
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=jKwrWhJecOzLqFj2SjOt7yxA4HUB9mD1HMjkKpCnow0,8143
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=dXrhl_H-r5tj39dNXgmPgkFV2s6PCbRuWN89ZCud6Kw,19306
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=UEg5tp-ZunzC2avCdholpqibDIUZgFBsXS7BEcdnBy0,4567
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=LEL9_iMTZ0bZlli2TdkQtV8pCRbFQBd91Hqh_WCW84c,3444
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=jSBrkDuGoC8ZJhNkEjeurgccEBiu53d_fKkJ7b78D74,10468
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=UPlpix-nCCpXE7b5NN0LpjG62gB7uvylJdjXpvY53NM,7930
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=5d4fvKNnYLuZktVKrjnBLplsNxbtfwBvhpEUyjwnEIo,2252
426
- udata/static/common.js.map,sha256=_s1o2ysOWxsKDz26Dp3FbGsnje2iBD4_Y9qXgK3v3ss,14137
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.16618d9eedd3f6a7a3c2.js,sha256=EBll9dfAFZA4Z86G7E_adNi-UV4nZ8cEX_8K1a04Xgs,395574
446
- udata/static/chunks/11.16618d9eedd3f6a7a3c2.js.map,sha256=jyCpZ2tWjIPiOR8ULTXaT8aU7MjDbWSYVDdEEOLwDYg,2268995
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.7c17956e2fcfafcab22f.js,sha256=qxo6QdrJGkM2hDTHiXnU5s6bGG5mi_WKChLeSk7U4i4,420602
450
- udata/static/chunks/13.7c17956e2fcfafcab22f.js.map,sha256=JdA5K7HQ4HrZZKjuYKICFSAECr4Cn-3IE0_22W9UJ3Y,2430671
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.b4cda3ca8dc053495fbd.js,sha256=c3MKd33GDrIbC-6MnWcr_DN1AbyS5_4Oco-QSHCfBDQ,236713
456
- udata/static/chunks/16.b4cda3ca8dc053495fbd.js.map,sha256=7vw4UT388S8ofgF0V6N6kqD3UrZV5W7kuv05xjZrmME,1289902
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.f1ff6cd5816f2d9debc4.js,sha256=riNMFNYXFRPzsyfCRLnjTIELGotE4oVPwch0sjtwK7E,203430
462
- udata/static/chunks/19.f1ff6cd5816f2d9debc4.js.map,sha256=QL1ZHCSFK8L7FBqdmgr0wuhMnoajNd7Nur3OSA2i5XM,1080009
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.14a4cd38c50b0559354e.js,sha256=kaftMCf8JmijD2ya6frH2ABGlkInwaJkSpDfaC6E-8E,578925
494
- udata/static/chunks/5.14a4cd38c50b0559354e.js.map,sha256=JGbqgqibDs2TcR5nKeu2gBvgqc_PdzSIHKV0p8Os9CQ,3584879
495
- udata/static/chunks/6.c433506a3004b8f4d5fb.js,sha256=01IbKOG3MtmNwquDkVQaKNQMfYujRMlDmdBXyQhzSnU,609578
496
- udata/static/chunks/6.c433506a3004b8f4d5fb.js.map,sha256=TrU2oHFEGSuzEFGG_UuxnsK9gdFqqkFZMweSQGU61fc,3781963
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.b50a30118e9e2e1ab436.js,sha256=wNBoAvguhP2Lc9t8fVLd_6gWxot0AFezgr4Prmj_RkM,222870
500
- udata/static/chunks/8.b50a30118e9e2e1ab436.js.map,sha256=0y14R9_cJ3XE3dN5Y_2BrcMTxLjRXefhABfkCIZ0aJs,1205115
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=adygSUX0OuBZzZ3f37Y_qm21lSpypBDJpLUkZ7kfRaM,5662
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=7XfkDAI2NukJQspbU6unrcBFNgfN_vjkikvfJc5U5qs,19200
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=JP-qC9wxaCFn4CLUI3WWCqiDinXgfaa5nF9j-YhB0iQ,4034
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.dev31458.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
701
- udata-9.1.5.dev31458.dist-info/METADATA,sha256=tYAIqrcCVcBHvi2K4sGXywT2SOi8mVjvc0zq0-12NTQ,130233
702
- udata-9.1.5.dev31458.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
703
- udata-9.1.5.dev31458.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
704
- udata-9.1.5.dev31458.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
705
- udata-9.1.5.dev31458.dist-info/RECORD,,
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,,