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.
- udata/api/__init__.py +1 -35
- udata/app.py +2 -1
- udata/core/reports/api.py +2 -2
- udata/cors.py +99 -0
- udata/routing.py +1 -1
- udata/static/chunks/{11.52e531c19f8de80c00cf.js → 11.f6ed628667c44bbad757.js} +3 -3
- udata/static/chunks/{11.52e531c19f8de80c00cf.js.map → 11.f6ed628667c44bbad757.js.map} +1 -1
- udata/static/chunks/{13.c3343a7f1070061c0e10.js → 13.a535d3f0dc1690137ebf.js} +2 -2
- udata/static/chunks/{13.c3343a7f1070061c0e10.js.map → 13.a535d3f0dc1690137ebf.js.map} +1 -1
- udata/static/chunks/{16.8fa42440ad75ca172e6d.js → 16.e499a69d451e8620b796.js} +2 -2
- udata/static/chunks/{16.8fa42440ad75ca172e6d.js.map → 16.e499a69d451e8620b796.js.map} +1 -1
- udata/static/chunks/{19.9c6c8412729cd6d59cfa.js → 19.7d96d075450c6a7f843e.js} +3 -3
- udata/static/chunks/{19.9c6c8412729cd6d59cfa.js.map → 19.7d96d075450c6a7f843e.js.map} +1 -1
- udata/static/chunks/{5.71d15c2e4f21feee2a9a.js → 5.a1a6164f9161d24acda1.js} +3 -3
- udata/static/chunks/{5.71d15c2e4f21feee2a9a.js.map → 5.a1a6164f9161d24acda1.js.map} +1 -1
- udata/static/chunks/{6.9139dc098b8ea640b890.js → 6.7d18ddefd50912448615.js} +3 -3
- udata/static/chunks/{6.9139dc098b8ea640b890.js.map → 6.7d18ddefd50912448615.js.map} +1 -1
- udata/static/chunks/{9.ba6c5ed42a4b3d1de13a.js → 9.47a0060ef619922385ad.js} +2 -2
- udata/static/chunks/{9.ba6c5ed42a4b3d1de13a.js.map → 9.47a0060ef619922385ad.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/__init__.py +3 -0
- udata/tests/api/test_base_api.py +12 -12
- udata/tests/api/test_reports_api.py +7 -3
- udata/tests/plugin.py +3 -0
- udata/tests/test_cors.py +62 -0
- {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/METADATA +6 -2
- {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/RECORD +32 -30
- {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/LICENSE +0 -0
- {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/WHEEL +0 -0
- {udata-9.1.2.dev30382.dist-info → udata-9.1.2.dev30472.dist-info}/entry_points.txt +0 -0
- {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__(
|
|
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
|
udata/static/common.js.map
CHANGED
|
@@ -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":""}
|
udata/tests/api/__init__.py
CHANGED
|
@@ -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)
|
udata/tests/api/test_base_api.py
CHANGED
|
@@ -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(
|
|
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.
|
|
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 =
|
|
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.
|
|
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.
|
|
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):
|
udata/tests/test_cors.py
ADDED
|
@@ -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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
426
|
-
udata/static/common.js.map,sha256=
|
|
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.
|
|
446
|
-
udata/static/chunks/11.
|
|
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.
|
|
450
|
-
udata/static/chunks/13.
|
|
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.
|
|
456
|
-
udata/static/chunks/16.
|
|
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.
|
|
462
|
-
udata/static/chunks/19.
|
|
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.
|
|
494
|
-
udata/static/chunks/5.
|
|
495
|
-
udata/static/chunks/6.
|
|
496
|
-
udata/static/chunks/6.
|
|
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.
|
|
502
|
-
udata/static/chunks/9.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
700
|
-
udata-9.1.2.
|
|
701
|
-
udata-9.1.2.
|
|
702
|
-
udata-9.1.2.
|
|
703
|
-
udata-9.1.2.
|
|
704
|
-
udata-9.1.2.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|