udata 9.1.2.dev30382__py2.py3-none-any.whl → 9.1.2.dev30472__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.
Files changed (32) hide show
  1. udata/api/__init__.py +1 -35
  2. udata/app.py +2 -1
  3. udata/core/reports/api.py +2 -2
  4. udata/cors.py +99 -0
  5. udata/routing.py +1 -1
  6. udata/static/chunks/{11.52e531c19f8de80c00cf.js → 11.f6ed628667c44bbad757.js} +3 -3
  7. udata/static/chunks/{11.52e531c19f8de80c00cf.js.map → 11.f6ed628667c44bbad757.js.map} +1 -1
  8. udata/static/chunks/{13.c3343a7f1070061c0e10.js → 13.a535d3f0dc1690137ebf.js} +2 -2
  9. udata/static/chunks/{13.c3343a7f1070061c0e10.js.map → 13.a535d3f0dc1690137ebf.js.map} +1 -1
  10. udata/static/chunks/{16.8fa42440ad75ca172e6d.js → 16.e499a69d451e8620b796.js} +2 -2
  11. udata/static/chunks/{16.8fa42440ad75ca172e6d.js.map → 16.e499a69d451e8620b796.js.map} +1 -1
  12. udata/static/chunks/{19.9c6c8412729cd6d59cfa.js → 19.7d96d075450c6a7f843e.js} +3 -3
  13. udata/static/chunks/{19.9c6c8412729cd6d59cfa.js.map → 19.7d96d075450c6a7f843e.js.map} +1 -1
  14. udata/static/chunks/{5.71d15c2e4f21feee2a9a.js → 5.a1a6164f9161d24acda1.js} +3 -3
  15. udata/static/chunks/{5.71d15c2e4f21feee2a9a.js.map → 5.a1a6164f9161d24acda1.js.map} +1 -1
  16. udata/static/chunks/{6.9139dc098b8ea640b890.js → 6.7d18ddefd50912448615.js} +3 -3
  17. udata/static/chunks/{6.9139dc098b8ea640b890.js.map → 6.7d18ddefd50912448615.js.map} +1 -1
  18. udata/static/chunks/{9.ba6c5ed42a4b3d1de13a.js → 9.47a0060ef619922385ad.js} +2 -2
  19. udata/static/chunks/{9.ba6c5ed42a4b3d1de13a.js.map → 9.47a0060ef619922385ad.js.map} +1 -1
  20. udata/static/common.js +1 -1
  21. udata/static/common.js.map +1 -1
  22. udata/tests/api/__init__.py +3 -0
  23. udata/tests/api/test_base_api.py +12 -12
  24. udata/tests/api/test_reports_api.py +7 -3
  25. udata/tests/plugin.py +3 -0
  26. udata/tests/test_cors.py +62 -0
  27. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/METADATA +6 -2
  28. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/RECORD +32 -30
  29. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/LICENSE +0 -0
  30. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/WHEEL +0 -0
  31. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/entry_points.txt +0 -0
  32. {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/top_level.txt +0 -0
udata/static/common.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function __webpack_require__(c){if(a[c])return a[c].exports;var r=a[c]={exports:{},id:c,loaded:!1};return e[c].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}var c=window.webpackJsonp;window.webpackJsonp=function(f,b){for(var t,_,d=0,n=[];d<f.length;d++)_=f[d],r[_]&&n.push.apply(n,r[_]),r[_]=0;for(t in b){var i=b[t];switch(typeof i){case"object":e[t]=function(c){var a=c.slice(1),r=c[0];return function(c,f,b){e[r].apply(this,[c,f,b].concat(a))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(c&&c(f,b);n.length;)n.shift().call(null,__webpack_require__);if(b[0])return a[0]=0,__webpack_require__(0)};var a={},r={31:0};__webpack_require__.e=function(e,c){if(0===r[e])return c.call(null,__webpack_require__);if(void 0!==r[e])r[e].push(c);else{r[e]=[c];var a=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.src=__webpack_require__.p+"chunks/"+e+"."+{0:"37b83c6dc990e52cc593",1:"1985566f8b821be031da",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"9e1761727aa5471aa19e",5:"71d15c2e4f21feee2a9a",6:"9139dc098b8ea640b890",7:"45d819f8edd0af6f7408",8:"37e24cb993927c0739bc",9:"ba6c5ed42a4b3d1de13a",10:"8cd46b46c57b89afe199",11:"52e531c19f8de80c00cf",12:"f063483ea9d39dab31f3",13:"c3343a7f1070061c0e10",14:"37d4cd9fe625f51e895e",15:"6f5ceeacd2b7b74d680b",16:"8fa42440ad75ca172e6d",17:"831791e0bcaf9c8ad4ba",18:"48c373a95548582ecb20",19:"9c6c8412729cd6d59cfa",20:"371472cff605ff23e70c",21:"37da7c1b1910dd87ce69",22:"be7e14bf9623297b79d9",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"bff1b2677139686b0e0c",32:"1c37209e865102e209b4",33:"70f8e7b1964892a24e67"}[e]+".js",a.appendChild(f)}},__webpack_require__.m=e,__webpack_require__.c=a,__webpack_require__.p="/static/"}(function(e){for(var c in e)if(Object.prototype.hasOwnProperty.call(e,c))switch(typeof e[c]){case"function":break;case"object":e[c]=function(c){var a=c.slice(1),r=e[c[0]];return function(e,c,f){r.apply(this,[e,c,f].concat(a))}}(e[c]);break;default:e[c]=e[e[c]]}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(f,b){for(var t,d,_=0,n=[];_<f.length;_++)d=f[_],r[d]&&n.push.apply(n,r[d]),r[d]=0;for(t in b){var i=b[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),r=a[0];return function(a,f,b){e[r].apply(this,[a,f,b].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(f,b);n.length;)n.shift().call(null,__webpack_require__);if(b[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],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.src=__webpack_require__.p+"chunks/"+e+"."+{0:"37b83c6dc990e52cc593",1:"1985566f8b821be031da",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"9e1761727aa5471aa19e",5:"a1a6164f9161d24acda1",6:"7d18ddefd50912448615",7:"45d819f8edd0af6f7408",8:"37e24cb993927c0739bc",9:"47a0060ef619922385ad",10:"8cd46b46c57b89afe199",11:"f6ed628667c44bbad757",12:"f063483ea9d39dab31f3",13:"a535d3f0dc1690137ebf",14:"37d4cd9fe625f51e895e",15:"6f5ceeacd2b7b74d680b",16:"e499a69d451e8620b796",17:"831791e0bcaf9c8ad4ba",18:"48c373a95548582ecb20",19:"7d96d075450c6a7f843e",20:"371472cff605ff23e70c",21:"37da7c1b1910dd87ce69",22:"be7e14bf9623297b79d9",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"bff1b2677139686b0e0c",32:"1c37209e865102e209b4",33:"70f8e7b1964892a24e67"}[e]+".js",c.appendChild(f)}},__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,f){r.apply(this,[e,a,f].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 dc1d57d235c3f07555da"],"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\":\"37b83c6dc990e52cc593\",\"1\":\"1985566f8b821be031da\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"9e1761727aa5471aa19e\",\"5\":\"71d15c2e4f21feee2a9a\",\"6\":\"9139dc098b8ea640b890\",\"7\":\"45d819f8edd0af6f7408\",\"8\":\"37e24cb993927c0739bc\",\"9\":\"ba6c5ed42a4b3d1de13a\",\"10\":\"8cd46b46c57b89afe199\",\"11\":\"52e531c19f8de80c00cf\",\"12\":\"f063483ea9d39dab31f3\",\"13\":\"c3343a7f1070061c0e10\",\"14\":\"37d4cd9fe625f51e895e\",\"15\":\"6f5ceeacd2b7b74d680b\",\"16\":\"8fa42440ad75ca172e6d\",\"17\":\"831791e0bcaf9c8ad4ba\",\"18\":\"48c373a95548582ecb20\",\"19\":\"9c6c8412729cd6d59cfa\",\"20\":\"371472cff605ff23e70c\",\"21\":\"37da7c1b1910dd87ce69\",\"22\":\"be7e14bf9623297b79d9\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"bff1b2677139686b0e0c\",\"32\":\"1c37209e865102e209b4\",\"33\":\"70f8e7b1964892a24e67\"}[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\":\"37b83c6dc990e52cc593\",\"1\":\"1985566f8b821be031da\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"9e1761727aa5471aa19e\",\"5\":\"71d15c2e4f21feee2a9a\",\"6\":\"9139dc098b8ea640b890\",\"7\":\"45d819f8edd0af6f7408\",\"8\":\"37e24cb993927c0739bc\",\"9\":\"ba6c5ed42a4b3d1de13a\",\"10\":\"8cd46b46c57b89afe199\",\"11\":\"52e531c19f8de80c00cf\",\"12\":\"f063483ea9d39dab31f3\",\"13\":\"c3343a7f1070061c0e10\",\"14\":\"37d4cd9fe625f51e895e\",\"15\":\"6f5ceeacd2b7b74d680b\",\"16\":\"8fa42440ad75ca172e6d\",\"17\":\"831791e0bcaf9c8ad4ba\",\"18\":\"48c373a95548582ecb20\",\"19\":\"9c6c8412729cd6d59cfa\",\"20\":\"371472cff605ff23e70c\",\"21\":\"37da7c1b1910dd87ce69\",\"22\":\"be7e14bf9623297b79d9\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"bff1b2677139686b0e0c\",\"32\":\"1c37209e865102e209b4\",\"33\":\"70f8e7b1964892a24e67\"}[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 dc1d57d235c3f07555da\n **/"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap c90f990bf8f56ea6b172"],"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\":\"37b83c6dc990e52cc593\",\"1\":\"1985566f8b821be031da\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"9e1761727aa5471aa19e\",\"5\":\"a1a6164f9161d24acda1\",\"6\":\"7d18ddefd50912448615\",\"7\":\"45d819f8edd0af6f7408\",\"8\":\"37e24cb993927c0739bc\",\"9\":\"47a0060ef619922385ad\",\"10\":\"8cd46b46c57b89afe199\",\"11\":\"f6ed628667c44bbad757\",\"12\":\"f063483ea9d39dab31f3\",\"13\":\"a535d3f0dc1690137ebf\",\"14\":\"37d4cd9fe625f51e895e\",\"15\":\"6f5ceeacd2b7b74d680b\",\"16\":\"e499a69d451e8620b796\",\"17\":\"831791e0bcaf9c8ad4ba\",\"18\":\"48c373a95548582ecb20\",\"19\":\"7d96d075450c6a7f843e\",\"20\":\"371472cff605ff23e70c\",\"21\":\"37da7c1b1910dd87ce69\",\"22\":\"be7e14bf9623297b79d9\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"bff1b2677139686b0e0c\",\"32\":\"1c37209e865102e209b4\",\"33\":\"70f8e7b1964892a24e67\"}[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\":\"37b83c6dc990e52cc593\",\"1\":\"1985566f8b821be031da\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"9e1761727aa5471aa19e\",\"5\":\"a1a6164f9161d24acda1\",\"6\":\"7d18ddefd50912448615\",\"7\":\"45d819f8edd0af6f7408\",\"8\":\"37e24cb993927c0739bc\",\"9\":\"47a0060ef619922385ad\",\"10\":\"8cd46b46c57b89afe199\",\"11\":\"f6ed628667c44bbad757\",\"12\":\"f063483ea9d39dab31f3\",\"13\":\"a535d3f0dc1690137ebf\",\"14\":\"37d4cd9fe625f51e895e\",\"15\":\"6f5ceeacd2b7b74d680b\",\"16\":\"e499a69d451e8620b796\",\"17\":\"831791e0bcaf9c8ad4ba\",\"18\":\"48c373a95548582ecb20\",\"19\":\"7d96d075450c6a7f843e\",\"20\":\"371472cff605ff23e70c\",\"21\":\"37da7c1b1910dd87ce69\",\"22\":\"be7e14bf9623297b79d9\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"bff1b2677139686b0e0c\",\"32\":\"1c37209e865102e209b4\",\"33\":\"70f8e7b1964892a24e67\"}[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 c90f990bf8f56ea6b172\n **/"],"sourceRoot":""}
@@ -33,3 +33,6 @@ class APITestCase(FrontTestCase):
33
33
 
34
34
  def delete(self, url, data=None, *args, **kwargs):
35
35
  return self.api.delete(url, data=data, *args, **kwargs)
36
+
37
+ def options(self, url, data=None, *args, **kwargs):
38
+ return self.api.options(url, data=data, *args, **kwargs)
@@ -27,29 +27,29 @@ class FakeFormAPI(API):
27
27
  class OptionsCORSTest(APITestCase):
28
28
  def test_should_allow_options_and_cors(self):
29
29
  """Should allow OPTIONS operation and give cors parameters"""
30
- response = self.client.options(url_for("api.fake-options"))
30
+ response = self.client.options(
31
+ url_for("api.fake-options"),
32
+ headers={
33
+ "Origin": "http://localhost",
34
+ "Access-Control-Request-Method": "GET",
35
+ },
36
+ )
31
37
 
32
- self.assert200(response)
33
- self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*")
34
- allowed_methods = response.headers["Allow"]
35
- self.assertIn("HEAD", allowed_methods)
36
- self.assertIn("OPTIONS", allowed_methods)
37
- self.assertIn("GET", allowed_methods)
38
+ self.assert204(response)
39
+ self.assertEqual(response.headers["Access-Control-Allow-Origin"], "http://localhost")
38
40
 
39
41
  response = self.client.options(
40
42
  url_for("api.fake-options"),
41
43
  headers={
44
+ "Origin": "http://localhost",
42
45
  "Access-Control-Request-Method": "GET",
43
46
  "Authorization": "Bearer YouWillNeverGuess",
44
47
  "Access-Control-Request-Headers": "Authorization",
45
48
  },
46
49
  )
47
- self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*")
50
+ self.assertEqual(response.headers["Access-Control-Allow-Origin"], "http://localhost")
48
51
  self.assertEqual(response.headers["Access-Control-Allow-Headers"], "Authorization")
49
- self.assertEqual(
50
- response.headers["Access-Control-Allow-Methods"],
51
- "DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT",
52
- )
52
+ self.assertEqual(response.headers["Access-Control-Allow-Methods"], "GET")
53
53
 
54
54
 
55
55
  class JSONFormRequestTest(APITestCase):
@@ -8,6 +8,7 @@ from udata.core.reports.constants import (
8
8
  reports_reasons_translations,
9
9
  )
10
10
  from udata.core.reports.models import Report
11
+ from udata.core.user.factories import UserFactory
11
12
  from udata.i18n import gettext as _
12
13
 
13
14
  from . import APITestCase
@@ -26,7 +27,8 @@ class ReportsAPITest(APITestCase):
26
27
  modules = []
27
28
 
28
29
  def test_reports_api_create(self):
29
- user = self.login()
30
+ user = UserFactory()
31
+
30
32
  illegal_dataset = DatasetFactory.create(owner=user)
31
33
  spam_dataset = DatasetFactory.create(owner=user)
32
34
 
@@ -42,6 +44,8 @@ class ReportsAPITest(APITestCase):
42
44
  self.assert201(response)
43
45
  self.assertEqual(Report.objects.count(), 1)
44
46
 
47
+ self.login(user)
48
+
45
49
  response = self.post(
46
50
  url_for("api.reports"),
47
51
  {
@@ -59,7 +63,7 @@ class ReportsAPITest(APITestCase):
59
63
  self.assertEqual(illegal_dataset.id, reports[0].object_id)
60
64
  self.assertEqual("This is not appropriate", reports[0].message)
61
65
  self.assertEqual(REASON_ILLEGAL_CONTENT, reports[0].reason)
62
- self.assertEqual(user.id, reports[0].by.id)
66
+ self.assertIsNone(reports[0].by)
63
67
 
64
68
  self.assertEqual(Dataset.__name__, reports[1].object_type)
65
69
  self.assertEqual(spam_dataset.id, reports[1].object_id)
@@ -75,7 +79,7 @@ class ReportsAPITest(APITestCase):
75
79
  self.assertEqual(illegal_dataset.id, reports[0].object_id)
76
80
  self.assertEqual("This is not appropriate", reports[0].message)
77
81
  self.assertEqual(REASON_ILLEGAL_CONTENT, reports[0].reason)
78
- self.assertEqual(user.id, reports[0].by.id)
82
+ self.assertIsNone(reports[0].by)
79
83
  self.assertIsNotNone(reports[0].object_deleted_at)
80
84
 
81
85
  reports[1].reload()
udata/tests/plugin.py CHANGED
@@ -203,6 +203,9 @@ class ApiClient(object):
203
203
  def delete(self, url, data=None, *args, **kwargs):
204
204
  return self.perform("delete", url, data=data or {}, *args, **kwargs)
205
205
 
206
+ def options(self, url, data=None, *args, **kwargs):
207
+ return self.perform("options", url, data=data or {}, *args, **kwargs)
208
+
206
209
 
207
210
  @pytest.fixture
208
211
  def api(client):
@@ -0,0 +1,62 @@
1
+ from datetime import datetime
2
+
3
+ import pytest
4
+ from flask import url_for
5
+
6
+ from udata.core.dataset.factories import DatasetFactory
7
+ from udata.core.topic.factories import TopicFactory
8
+ from udata.search import reindex
9
+ from udata.tests.api import APITestCase
10
+ from udata.tests.helpers import assert_status
11
+
12
+
13
+ class CorsTest(APITestCase):
14
+ modules = []
15
+
16
+ def test_cors_redirects(self):
17
+ dataset = DatasetFactory(title="Old title")
18
+ old_slug = dataset.slug
19
+
20
+ # New slug to force a redirect from old slug
21
+ dataset.title = "New title"
22
+ dataset.save()
23
+
24
+ response = self.get(url_for("api.dataset", dataset=old_slug))
25
+ assert_status(response, 308)
26
+
27
+ response = self.options(
28
+ url_for("api.dataset", dataset=old_slug),
29
+ headers={
30
+ "Origin": "http://localhost",
31
+ "Access-Control-Request-Method": "GET",
32
+ },
33
+ )
34
+ assert_status(response, 204)
35
+
36
+ def test_cors_404(self):
37
+ response = self.get(url_for("api.dataset", dataset="unknown-dataset"))
38
+ assert_status(response, 404)
39
+
40
+ response = self.options(
41
+ url_for("api.dataset", dataset="unknown-dataset"),
42
+ headers={
43
+ "Origin": "http://localhost",
44
+ "Access-Control-Request-Method": "GET",
45
+ },
46
+ )
47
+ assert_status(response, 204)
48
+
49
+ def test_cors_410_with_api_abort(self):
50
+ dataset = DatasetFactory(deleted=datetime.now())
51
+
52
+ response = self.get(url_for("api.dataset", dataset=dataset.id))
53
+ assert_status(response, 410)
54
+
55
+ response = self.options(
56
+ url_for("api.dataset", dataset=dataset.id),
57
+ headers={
58
+ "Origin": "http://localhost",
59
+ "Access-Control-Request-Method": "GET",
60
+ },
61
+ )
62
+ assert_status(response, 204)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 9.1.2.dev30382
3
+ Version: 9.1.2.dev30472
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -53,7 +53,6 @@ Requires-Dist: flask ==2.1.2
53
53
  Requires-Dist: flask-babel ==4.0.0
54
54
  Requires-Dist: flask-caching ==2.0.2
55
55
  Requires-Dist: flask-cdn ==1.5.3
56
- Requires-Dist: flask-cors ==3.0.8
57
56
  Requires-Dist: flask-gravatar ==0.5.0
58
57
  Requires-Dist: flask-login ==0.6.2
59
58
  Requires-Dist: flask-mail ==0.9.1
@@ -85,6 +84,7 @@ Requires-Dist: netaddr ==0.7.19
85
84
  Requires-Dist: packaging ==24.1
86
85
  Requires-Dist: passlib ==1.7.4
87
86
  Requires-Dist: pillow ==9.2.0
87
+ Requires-Dist: ply ==3.11
88
88
  Requires-Dist: prompt-toolkit ==3.0.47
89
89
  Requires-Dist: pycparser ==2.2
90
90
  Requires-Dist: pydenticon ==0.3.1
@@ -94,8 +94,10 @@ Requires-Dist: python-dateutil ==2.8.2
94
94
  Requires-Dist: pytz ==2024.1
95
95
  Requires-Dist: rdflib ==6.0.0
96
96
  Requires-Dist: redis ==4.5.2
97
+ Requires-Dist: referencing ==0.35.1
97
98
  Requires-Dist: regex ==2024.5.15
98
99
  Requires-Dist: requests ==2.24.0
100
+ Requires-Dist: rpds-py ==0.19.0
99
101
  Requires-Dist: s3transfer ==0.6.2
100
102
  Requires-Dist: six ==1.16.0
101
103
  Requires-Dist: speaklater ==1.3
@@ -138,8 +140,10 @@ It is collectively taken care of by members of the
138
140
  ## Current (in progress)
139
141
 
140
142
  - Add linter and formatter with `pyproject.toml` config, add lint and formatting step in CI, add pre-commit hook to lint and format, update docs and lint and format the code [#3085](https://github.com/opendatateam/udata/pull/3085)
143
+ - Revamp CORS: remove flask-cors to always returns 204 on OPTIONS request [#3074](https://github.com/opendatateam/udata/pull/3074)
141
144
  - Update pinned dependencies according to project dependencies, without updating any project dependencies [#3089](https://github.com/opendatateam/udata/pull/3089)
142
145
  - Add "run" button to harvesters (configurable with `HARVEST_ENABLE_MANUAL_RUN`) [#3092](https://github.com/opendatateam/udata/pull/3092)
146
+ - Allow to report without being authenticated [#3096](https://github.com/opendatateam/udata/pull/3096)
143
147
 
144
148
  ## 9.1.1 (2024-07-16)
145
149
 
@@ -2,15 +2,16 @@ tasks/__init__.py,sha256=oZ9yTY3eyOXRbN18_83l1b4BpqjIBVqw-FqD1LFWGxo,8122
2
2
  tasks/helpers.py,sha256=0a9iXzVe2GC2f6ouFoXDfMGN2s1eu4urTUuM9CCTZP8,994
3
3
  udata/__init__.py,sha256=y6WWIlMmNt4ADXtwHIWm-Dzb-txi6Y8hxw0fqe5TJwU,101
4
4
  udata/api_fields.py,sha256=YRLHniJYoRRI6cNJNgB-0U9A049_g1yV-Tp5u8VcLQs,14148
5
- udata/app.py,sha256=YZaQjL8IKLESev_LAqufuCJYte9Uy9fp_JmApe2IOxM,7255
5
+ udata/app.py,sha256=lMxCLveZyMmaimkryDjD-VpHBC5OMEgd95VszM84y-8,7284
6
6
  udata/assets.py,sha256=jGxFWVu6JvDLK1SXBZC-rY-DGkGxguF3LFikOklyzdE,645
7
+ udata/cors.py,sha256=QyhlcnkLo9SmJhgK3FRjLcD5YC-03bU514UVMAHfbSc,2995
7
8
  udata/entrypoints.py,sha256=mbAAUVT8ZenzSYdang2PbAwZcK1pENtA3axBmPRiWCw,2717
8
9
  udata/errors.py,sha256=E8W7b4PH7c5B85g_nsUMt8fHqMVpDFOZFkO6wMPl6bA,117
9
10
  udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
10
11
  udata/i18n.py,sha256=Q7UELAhKOW7DmUX8BjEMnqqhQxcR6d3ioSmj90A62cg,8992
11
12
  udata/mail.py,sha256=MShopArrtXyn8SnXtNbWUR0C4mTj1gI3a3Lf_1We-j4,2167
12
13
  udata/rdf.py,sha256=GDqnBuJd2KryJDpJjPuH0WpkZIPoOEa2uOACr5mNCik,13835
13
- udata/routing.py,sha256=vOWnlHicbRClbk93u4cL_maHhZU6e99SFKk1YTX1nSA,7165
14
+ udata/routing.py,sha256=fwtnA7mbV535Jpblm2urhUs2UBgsevYGNE711V8T5oI,7120
14
15
  udata/sentry.py,sha256=sLkVw-BF_ad4hOveDpnk6oFjLijGTAFS2STMbcg1w84,2678
15
16
  udata/settings.py,sha256=EUPPsPi3pKxnXSLxmKWhKtdBmtWfJl7torWpSWU9kbA,17817
16
17
  udata/sitemap.py,sha256=oRRWoPI7ZsFFnUAOqGT1YuXFFKHBe8EcRnUCNHD7xjM,979
@@ -24,7 +25,7 @@ udata/worker.py,sha256=K-Wafye5-uXP4kQlffRKws2J9YbJ6m6n2QjcVsY8Nsg,118
24
25
  udata/wsgi.py,sha256=MY8en9K9eDluvJYUxTdzqSDoYaDgCVZ69ZcUvxAvgqA,77
25
26
  udata/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
27
  udata/admin/views.py,sha256=00fI1O55apOlwIc0li2BdvEEGMd5l5isd5A_eHvzu3Y,331
27
- udata/api/__init__.py,sha256=pPM3wGw5XoKQ2LuUBDj5mQi0fMyyGKoX2NhFlqwreVI,11408
28
+ udata/api/__init__.py,sha256=hbld2aEAQWh5DmcWot6cYLpUf34lON0ux0aV_SFqu6E,10680
28
29
  udata/api/commands.py,sha256=jqsUetPmTrxsvvGHIAf_qNMS3Wb4auBRYVMOWMKqe_g,3266
29
30
  udata/api/errors.py,sha256=P_UigBf6HAL73LbXKULagmp5Cuw-H1Ms6LmXxOmFIeg,211
30
31
  udata/api/fields.py,sha256=FIvRmhIJivEKQWkcXeSM7c6uJwIYX3_JV9DAdMOQO_E,3077
@@ -162,7 +163,7 @@ udata/core/post/permissions.py,sha256=uofU0TehhOGYyUoRXf3wuy816_D3xwMmaJbDvV336s
162
163
  udata/core/post/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
164
  udata/core/post/tests/test_api.py,sha256=y4fXgjC0y9tqR4iOWHin9rADSPdo1BJjXJGilnqL23c,3946
164
165
  udata/core/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
- udata/core/reports/api.py,sha256=dvUQhGk76y5XBp-KD0qtf5VvAnNtCS7IvwUAQTqfJ0o,1346
166
+ udata/core/reports/api.py,sha256=wrHJempfYupq0etLWM-RPq6-f3LqXWw3hulnoPHb5v4,1376
166
167
  udata/core/reports/constants.py,sha256=g0c_Uj0qEQknj20mz_PrCp0EIu3a6dX5hHvg4YoqLwU,983
167
168
  udata/core/reports/models.py,sha256=a0Xfwt3T7lsTnGGRIv_PQmDcAZzYZx11MRVXYLra8Ys,1858
168
169
  udata/core/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -422,8 +423,8 @@ udata/static/admin.css,sha256=RC7GvbVK8c5wDuELPeVdQpy3ab7HbHl1T4hUo5n-NVk,185167
422
423
  udata/static/admin.css.map,sha256=tUhFfsJUK3RrWCih9gUkf-Ywccuztxf4tqvXcN6zP3Y,626542
423
424
  udata/static/admin.js,sha256=MqXQC-dxgrAEuESQGbLSMKyPiOs2x9KCSeXKF9OCr0k,1323952
424
425
  udata/static/admin.js.map,sha256=ovzXwNsaL4L_LrPD1AKfJfBUf1ur9Huc3tDmIRbI77Q,8503099
425
- udata/static/common.js,sha256=K_UtmpzO0wujwV4NXIoxSbmqje51NVDpOL_KRQGnsgI,2252
426
- udata/static/common.js.map,sha256=OLtlPNCbReZLET6lURZONQhna3fS4bemPqC7VURNuZs,14137
426
+ udata/static/common.js,sha256=QmmhX7btiP_xFg8QJrtSu2wpOdUmUF-7JsDTjELzHX4,2252
427
+ udata/static/common.js.map,sha256=GMiIDzsPiZdpSl7esMN50xSXghxj3TARewTRtGULGb4,14137
427
428
  udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
428
429
  udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
429
430
  udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
@@ -442,24 +443,24 @@ udata/static/chunks/1.1985566f8b821be031da.js,sha256=gwb3bofNWHNNK9aiZaZS_OGdBdc
442
443
  udata/static/chunks/1.1985566f8b821be031da.js.map,sha256=zVhRk_bX1kDqAFfB11a4ABoG9Zw19IjsT-6KfAAnmGs,1740689
443
444
  udata/static/chunks/10.8cd46b46c57b89afe199.js,sha256=a3UJM8LaPT1RI-ntRWk0BLTkVBxke7iWRP0eldf5u7E,416588
444
445
  udata/static/chunks/10.8cd46b46c57b89afe199.js.map,sha256=LzA-kgSDzI4qNdHRpIvVNQCBKz3lhd_RjvKhU14g6ug,2744182
445
- udata/static/chunks/11.52e531c19f8de80c00cf.js,sha256=yD02JunjmDb6lXzxrQK-0FXj3so7AAu84yKEwUM7PEQ,395755
446
- udata/static/chunks/11.52e531c19f8de80c00cf.js.map,sha256=hF-fUaWtV00dBWCdR82WlLf3-jDs0BEXZpPRHh-LKLw,2269851
446
+ udata/static/chunks/11.f6ed628667c44bbad757.js,sha256=u4QIKNJ8xSWM3BtjqBP_ct2GLKR4q-6BQid4QdT-kn8,395755
447
+ udata/static/chunks/11.f6ed628667c44bbad757.js.map,sha256=wU5iugFlk7d4mhAthA-ajCOtN9vJ3RRwJhYFcAY3fxI,2269851
447
448
  udata/static/chunks/12.f063483ea9d39dab31f3.js,sha256=waHKl9k496O6kDPgi86WKUES0z61Y9jdUcujCM5rSaY,421036
448
449
  udata/static/chunks/12.f063483ea9d39dab31f3.js.map,sha256=v5UP6rJJijvDZ5mMViya886UrW0SWx27FgE8Y_HV2IQ,2441628
449
- udata/static/chunks/13.c3343a7f1070061c0e10.js,sha256=Qek9O7h1_MOGcc7Cc_9CbxmLfw--3NK6LJasEFgykY8,420505
450
- udata/static/chunks/13.c3343a7f1070061c0e10.js.map,sha256=dAFibqZpSutyEV-LLlhCqiNvMipb8dERpj05lFntMe4,2430090
450
+ udata/static/chunks/13.a535d3f0dc1690137ebf.js,sha256=3tLlVOkevG9_38PuFGb85DpnI556uzy6ItRW3arMWGo,420505
451
+ udata/static/chunks/13.a535d3f0dc1690137ebf.js.map,sha256=ulnyLyByJRi2I_mUoLsYRuZDigdZepiFOWtP1HwH7aE,2430090
451
452
  udata/static/chunks/14.37d4cd9fe625f51e895e.js,sha256=paYctpJTzLyAhZ7T5kiRBucMwoHeCfxFcdZk90K8c2I,290172
452
453
  udata/static/chunks/14.37d4cd9fe625f51e895e.js.map,sha256=Une_RoV9Su6JAwdR9Z3x49nlbk2mv4OBoZaZ6fRiiUI,1635848
453
454
  udata/static/chunks/15.6f5ceeacd2b7b74d680b.js,sha256=VC7zxY5un7Yjs-ppcvrXtY80puCw27sDpe30-O-D4W0,228681
454
455
  udata/static/chunks/15.6f5ceeacd2b7b74d680b.js.map,sha256=xrBP1BUG06mOd8uVZJ_-r8vHMOdgXmSYT_Uc6nCWwYo,1575013
455
- udata/static/chunks/16.8fa42440ad75ca172e6d.js,sha256=za8KfchBrWCbf-V1a5Y7pO4VP8c9ORb14vU0d__ey-E,236580
456
- udata/static/chunks/16.8fa42440ad75ca172e6d.js.map,sha256=7jeFMoWp_2VYNpbMSzTwcDQjD9gXaHssBrOfsI0IbHk,1289130
456
+ udata/static/chunks/16.e499a69d451e8620b796.js,sha256=-r8KmWsG4rg-pwumzIcAqRUDXL-t5XH4QjcihBxTpc4,236580
457
+ udata/static/chunks/16.e499a69d451e8620b796.js.map,sha256=x4S8qpMQJN43ZyRp6TyZJXK2DaI0AyGcDHSHtrJ0zK8,1289130
457
458
  udata/static/chunks/17.831791e0bcaf9c8ad4ba.js,sha256=zCC5VzpGALI1wYDyCYgs0NS1-mtDkd_TVF5X02C6Ggo,134827
458
459
  udata/static/chunks/17.831791e0bcaf9c8ad4ba.js.map,sha256=VNvL-1xybyb_C0ug1XWeC-9IpqyRI-3jExzWBSG3LAU,681951
459
460
  udata/static/chunks/18.48c373a95548582ecb20.js,sha256=9FVbZk_OCct6XaUZa39_ynsHp3JyoJFX7EgsWCsf8mc,50722
460
461
  udata/static/chunks/18.48c373a95548582ecb20.js.map,sha256=WhUhEa3JFaFLXUH3qwKii_ZdHCDtKlOiV44KtdbXbX0,279426
461
- udata/static/chunks/19.9c6c8412729cd6d59cfa.js,sha256=0VM_HVll-iUmTL2JJlVjGyalUVGZVJjpMStMPN4XYaI,203649
462
- udata/static/chunks/19.9c6c8412729cd6d59cfa.js.map,sha256=gqFaJCrJJkl8iBoY48E2wMyiWFjYj6Ae0JeqFMs52Uo,1081064
462
+ udata/static/chunks/19.7d96d075450c6a7f843e.js,sha256=yS3dIU-CDE111C5_Dhhhkwf4wjeeQtqlCoygBT2dXJo,203649
463
+ udata/static/chunks/19.7d96d075450c6a7f843e.js.map,sha256=qaJST--AjwTwsex_A5BpnuKR3aJmEZ2GYrwhEDpK7Ew,1081064
463
464
  udata/static/chunks/2.614b3e73b072982fd9b1.js,sha256=2AjukB7x12ryFJdyKVLLyF71S3RZfQAZPhNyDQK6AD8,276355
464
465
  udata/static/chunks/2.614b3e73b072982fd9b1.js.map,sha256=z4W49Eal5baYh5brXpzITxRK6c1dl-3GmovsB95Vk2c,1554832
465
466
  udata/static/chunks/20.371472cff605ff23e70c.js,sha256=Ih7DddNITjYmPuMS1q8wUySSWEoI8nILyrUNBCCSnp8,36850
@@ -490,16 +491,16 @@ udata/static/chunks/33.70f8e7b1964892a24e67.js,sha256=CP8Hb0M4O6jXd5s8_TI1BhyKB4
490
491
  udata/static/chunks/33.70f8e7b1964892a24e67.js.map,sha256=0ejAXya7tMgkLGrybenkpOBCp5PpkIOy_WexGpcFu5k,709305
491
492
  udata/static/chunks/4.9e1761727aa5471aa19e.js,sha256=h0X95e9cNjjAfQm0wuedOScvndhlYRdfRfwzK0fezOo,608722
492
493
  udata/static/chunks/4.9e1761727aa5471aa19e.js.map,sha256=tqsP_ZQA--TRstvuqWHJsfEnnRPJ5S8CaXrvm83XbUc,3721678
493
- udata/static/chunks/5.71d15c2e4f21feee2a9a.js,sha256=L-99R-3OK5VsBKDeRjlh5tFKvQ39x-NJtKa4un70R2c,578827
494
- udata/static/chunks/5.71d15c2e4f21feee2a9a.js.map,sha256=tlZVXjZI15wmQ6Zci2XrxD8c7N-mOU42-oJxeUtADTU,3584289
495
- udata/static/chunks/6.9139dc098b8ea640b890.js,sha256=UF_ruP5Y4UaTC0RivJ0DCUNewrKlzLbF2wV1z0SdIO4,609276
496
- udata/static/chunks/6.9139dc098b8ea640b890.js.map,sha256=9b3AD9JM6vMaZTjYv2ai0jgU-Qm8EvUp7qQeIxAgW4Q,3780547
494
+ udata/static/chunks/5.a1a6164f9161d24acda1.js,sha256=ya_hn7_WjN-2UDcHzO272AHlqUBD2sv60mydRXv6048,578827
495
+ udata/static/chunks/5.a1a6164f9161d24acda1.js.map,sha256=mxRegGzm8qe7skpR2Q32sAeQYjJ3snX9PK50Z5DT9eY,3584289
496
+ udata/static/chunks/6.7d18ddefd50912448615.js,sha256=uzc2ttYXyQ8gYA2fqSyQdx5dnQ5DCnW29o37r3TnPxo,609276
497
+ udata/static/chunks/6.7d18ddefd50912448615.js.map,sha256=D9Kplv7OPSsTjrjLX0otoq5Y3B7DKI2-GEBEo8VVYok,3780547
497
498
  udata/static/chunks/7.45d819f8edd0af6f7408.js,sha256=uZ0ZLAW4dzvCMRAUvb1HD_hpGIgYSzaGczpTSbDzr8E,153160
498
499
  udata/static/chunks/7.45d819f8edd0af6f7408.js.map,sha256=aCaXMaA-yktTDgvbWXacxBC9_e22BD0Nk3-BkyQw090,793001
499
500
  udata/static/chunks/8.37e24cb993927c0739bc.js,sha256=NvCoq6YRVx_YHGJlveqYO3mN6K8evrcX5B8lWNIA1Ok,418567
500
501
  udata/static/chunks/8.37e24cb993927c0739bc.js.map,sha256=cGpmMBnu0I61gI-e1xDbcXZnXnNJoXeNWsF_gXmu_os,2754331
501
- udata/static/chunks/9.ba6c5ed42a4b3d1de13a.js,sha256=C7fdzp55HVSlmSfNqkyAOAc6nMD-ysiK42P031B4Wxo,223015
502
- udata/static/chunks/9.ba6c5ed42a4b3d1de13a.js.map,sha256=yOgFsKop8vHYkeZd9KtR1jGWIvLSlv8frYcU2eAmlUI,1205888
502
+ udata/static/chunks/9.47a0060ef619922385ad.js,sha256=-7QYdB0K8JRjCuoLqzS_09NbYCcgl1tHgH0rtDIZ5Gw,223015
503
+ udata/static/chunks/9.47a0060ef619922385ad.js.map,sha256=0mhrcYrZpiOLniXgvQjadmnSrTg2EQ3mLpG5AgkIyoQ,1205888
503
504
  udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
504
505
  udata/storage/s3.py,sha256=enxbTm1IZksiKLkbafASrO2bqO44OTCn4F7_FeMjhgg,1557
505
506
  udata/templates/admin.html,sha256=RfX03rUOW7NIlgMYNhFfx0pL-p2j8BtAKvEFUadaIIs,787
@@ -576,9 +577,10 @@ udata/tests/__init__.py,sha256=98jv17nvpQYOfUQ6ZjDPMZLag1cDrSslwCmveEqh-O8,2335
576
577
  udata/tests/es-fake-result.json,sha256=z0CX9Gs-NRj49dmtdFvw8ZKsAbMhDt97Na6JX3ucX34,3155
577
578
  udata/tests/helpers.py,sha256=VP8cz13WBxkMoTUbOwnMV2-bzE4nVHI6l_z6m3u1DIE,5975
578
579
  udata/tests/models.py,sha256=5oTC-cgKSL0sUdlqjUiJ6U8-YZBQanObb-MhZhQIV3M,238
579
- udata/tests/plugin.py,sha256=ACXcDufrJluGGKQA6po4hsaCmEpjSiVW8UZ5pLCdsEQ,11445
580
+ udata/tests/plugin.py,sha256=dT3KfQiVYwLM61TbB894wzTelnlPIsCHaiPEH-Jirfk,11580
580
581
  udata/tests/schemas.json,sha256=szM1jDpkogfOG4xWbjIGjLgG8l9-ZyE3JKQtecJyD1E,4990
581
582
  udata/tests/test_activity.py,sha256=x-pDK6VW9wAG0uxYRZQ3DWTRjfCU729iaMGMJb1rWYU,3195
583
+ udata/tests/test_cors.py,sha256=UNU-5EF1G8Znjw7s5i7uTTVgg5HpJX30NGslKtjoZTE,1879
582
584
  udata/tests/test_discussions.py,sha256=UN2mlZp-h3m3HqdF_nz9WOxwPKgXok47E2Rrp2dknYI,30464
583
585
  udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
584
586
  udata/tests/test_linkchecker.py,sha256=W8jrwKYXM8wWXZFjiaBwpWGRBhZ8bsSHGHzL9voDN7U,10218
@@ -595,9 +597,9 @@ udata/tests/test_topics.py,sha256=nBQZvbk2F1QYd6qiZDtVKuJ8_Ee8g0hT6dTGDw1Vwuk,13
595
597
  udata/tests/test_transfer.py,sha256=xhZwzkwGFvow5ejk9N_-4jS40lhJi7tEaVTWw7Do4TM,7832
596
598
  udata/tests/test_uris.py,sha256=MxafZ0SyzSNRomVpZnH1ChzWaHOi1MQiXe1gmKnBc6o,8517
597
599
  udata/tests/test_utils.py,sha256=3BGnlvw-GOE6tLHQteo-uUeYuzq4rsjePOuytFGkpOg,7967
598
- udata/tests/api/__init__.py,sha256=NLY49kejr1fb75mBS14tgWPmnDHtBK0PUngukNvcEzk,1096
600
+ udata/tests/api/__init__.py,sha256=y4sL7LD1-KwONHF0q_Rhk2W6BmGUlp7Uz2JnX3e27sk,1218
599
601
  udata/tests/api/test_auth_api.py,sha256=0Y_JXQ4x8jvc_pp4g3H6gZ_X0QVGM6TaZ2IN9LeOWEg,21657
600
- udata/tests/api/test_base_api.py,sha256=RxQJcxW5mNeiGzHGgji8KVsW9vQZuv9QkAtTDQ6HnR0,2285
602
+ udata/tests/api/test_base_api.py,sha256=ADSfG5knDp5LxCqEaidPgfo2wqhkPUglKrBx_rMghxI,2252
601
603
  udata/tests/api/test_contact_points.py,sha256=lqy-PF9ePFJB3BkPSTfAgzhw3AI7Gwl3pU2VWY4fw-k,1055
602
604
  udata/tests/api/test_dataservices_api.py,sha256=Ch7V7DXOVOQh4qU4z2kfXmH0fgUoTGRpGf1MebVsnGA,11996
603
605
  udata/tests/api/test_datasets_api.py,sha256=LSuZqJCJHXw04IXlOL2xhbWsAEMes9YX5pjFhiJk1Ag,80625
@@ -605,7 +607,7 @@ udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ
605
607
  udata/tests/api/test_follow_api.py,sha256=fccgVNfcqET221PPS3p7qzb9hpvbBBUGhV-l4UeOpyk,3352
606
608
  udata/tests/api/test_me_api.py,sha256=ZJKGH9fFv-4cSGcYAGd6IJA_PwPjVGIqWNy_DhFA8ms,13827
607
609
  udata/tests/api/test_organizations_api.py,sha256=5hBs7-gsMfy4IFsrLYyUMGyxhtCs71K4QvPFAXyDsz4,35049
608
- udata/tests/api/test_reports_api.py,sha256=g9VFlAk1CKi2iBWU2UZciM4yASy46fzetR5lbglB2GM,3548
610
+ udata/tests/api/test_reports_api.py,sha256=ee_Hrcs-rpbdUlV80ITmyrhtIC2cfg7rSwwVb3uXJgk,3604
609
611
  udata/tests/api/test_reuses_api.py,sha256=v9RJcJ_fdR8dgnq6H7j58_7n83BhoFJJ9YOd7CJwsyw,16769
610
612
  udata/tests/api/test_swagger.py,sha256=eE6La9qdTYTIUFevRVPJgtj17Jq_8uOlsDwzCNR0LL8,760
611
613
  udata/tests/api/test_tags_api.py,sha256=MgSmKZeQ8L-fO-LwOGlDm_YN7lmEyvTpkDgaPiENHw8,2429
@@ -696,9 +698,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=yfwqLHV-_mGNaDklP7T0pQP4i1y__s
696
698
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=E45ZRCW2bpedoWOztkgJ9gwBlg2L1pTcHmCXgqSdhT0,44979
697
699
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=w_x0mh_WagUuQ5QFweqHg5-HtDrsoyL66HVmUxrdR0U,28500
698
700
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=LfaUQzhrfDClLdBo_U2erasp2XR1z1_V132cewvZ9C8,51548
699
- udata-9.1.2.dev30382.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
700
- udata-9.1.2.dev30382.dist-info/METADATA,sha256=8JfhBIi48qoZwQLATrpuXoDV7LVc6aCMAHeKna5bnzo,126410
701
- udata-9.1.2.dev30382.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
702
- udata-9.1.2.dev30382.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
703
- udata-9.1.2.dev30382.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
704
- udata-9.1.2.dev30382.dist-info/RECORD,,
701
+ udata-9.1.2.dev30472.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
702
+ udata-9.1.2.dev30472.dist-info/METADATA,sha256=JROSC0pBFhtzFFgA6_Ic_TpQyd8e7OKQbz9rrXj5zLM,126704
703
+ udata-9.1.2.dev30472.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
704
+ udata-9.1.2.dev30472.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
705
+ udata-9.1.2.dev30472.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
706
+ udata-9.1.2.dev30472.dist-info/RECORD,,