udata 10.0.1.dev32334__py2.py3-none-any.whl → 10.0.1.dev32350__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- udata/api_fields.py +131 -70
- udata/static/chunks/{10.a99bb538cfbadb38dbcb.js → 10.dac55d18d0b4ef3cdacf.js} +3 -3
- udata/static/chunks/{10.a99bb538cfbadb38dbcb.js.map → 10.dac55d18d0b4ef3cdacf.js.map} +1 -1
- udata/static/chunks/{11.727465d72948bc466d43.js → 11.4a20a75f827c5a1125c3.js} +3 -3
- udata/static/chunks/{11.727465d72948bc466d43.js.map → 11.4a20a75f827c5a1125c3.js.map} +1 -1
- udata/static/chunks/{13.3c8337bec315adcd2700.js → 13.645dd0b7c0b9210f1b56.js} +2 -2
- udata/static/chunks/{13.3c8337bec315adcd2700.js.map → 13.645dd0b7c0b9210f1b56.js.map} +1 -1
- udata/static/chunks/{17.cbeb6d95129cad6481c2.js → 17.8e19985c4d12a3b7b0c0.js} +2 -2
- udata/static/chunks/{17.cbeb6d95129cad6481c2.js.map → 17.8e19985c4d12a3b7b0c0.js.map} +1 -1
- udata/static/chunks/{19.4f7a5b71ef006ac268c1.js → 19.825a43c330157e351fca.js} +3 -3
- udata/static/chunks/{19.4f7a5b71ef006ac268c1.js.map → 19.825a43c330157e351fca.js.map} +1 -1
- udata/static/chunks/{8.60610fd40b95ca119141.js → 8.5ee0cf635c848abbfc05.js} +2 -2
- udata/static/chunks/{8.60610fd40b95ca119141.js.map → 8.5ee0cf635c848abbfc05.js.map} +1 -1
- udata/static/chunks/{9.985935421e62c97a9f86.js → 9.df3c36f8d0d210621fbb.js} +3 -3
- udata/static/chunks/{9.985935421e62c97a9f86.js.map → 9.df3c36f8d0d210621fbb.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/test_api_fields.py +285 -0
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/METADATA +2 -2
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/RECORD +24 -23
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/LICENSE +0 -0
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/WHEEL +0 -0
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/entry_points.txt +0 -0
- {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.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 f=a[c]={exports:{},id:c,loaded:!1};return e[c].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var c=window.webpackJsonp;window.webpackJsonp=function(r,
|
|
1
|
+
!function(e){function __webpack_require__(c){if(a[c])return a[c].exports;var f=a[c]={exports:{},id:c,loaded:!1};return e[c].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var c=window.webpackJsonp;window.webpackJsonp=function(r,t){for(var b,d,_=0,n=[];_<r.length;_++)d=r[_],f[d]&&n.push.apply(n,f[d]),f[d]=0;for(b in t){var i=t[b];switch(typeof i){case"object":e[b]=function(c){var a=c.slice(1),f=c[0];return function(c,r,t){e[f].apply(this,[c,r,t].concat(a))}}(i);break;case"function":e[b]=i;break;default:e[b]=e[i]}}for(c&&c(r,t);n.length;)n.shift().call(null,__webpack_require__);if(t[0])return a[0]=0,__webpack_require__(0)};var a={},f={31:0};__webpack_require__.e=function(e,c){if(0===f[e])return c.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(c);else{f[e]=[c];var a=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.charset="utf-8",r.async=!0,r.src=__webpack_require__.p+"chunks/"+e+"."+{0:"f575c19b056e559584d4",1:"c78e30240d3784c22a76",2:"c67aa76cc078c193aed5",3:"174a03e48d267820919b",4:"bfba880427270ef61dfd",5:"448ccace1bf3389d9b38",6:"037369868acc94a7533f",7:"5237c02df1fdd7c2449a",8:"5ee0cf635c848abbfc05",9:"df3c36f8d0d210621fbb",10:"dac55d18d0b4ef3cdacf",11:"4a20a75f827c5a1125c3",12:"50d20132d60ff7279de9",13:"645dd0b7c0b9210f1b56",14:"8b85221f000b80696e52",15:"10e44b70e118e7ebc13a",16:"a43cef89812c95f1b02e",17:"8e19985c4d12a3b7b0c0",18:"3b5ad23785c7be62ee30",19:"825a43c330157e351fca",20:"727bc4349ebdc499fff7",21:"3a20f161cfa3ff59cb67",22:"4289d31d931fb184a394",23:"32fd0887bdcc0b87a7c5",24:"a8d73082a87feb753036",25:"334bb014e5afb23064f1",26:"0f8affafd27dcc123fc0",27:"10a6d497f15faa1ddeee",28:"06100ef3e7e642814327",29:"4d752ece5790785c5889",30:"e97e10c9246818e2b4b2",32:"55f052535c5ecc898d67",33:"98be721e901eda7ed45c"}[e]+".js",a.appendChild(r)}},__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),f=e[c[0]];return function(e,c,r){f.apply(this,[e,c,r].concat(a))}}(e[c]);break;default:e[c]=e[e[c]]}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 00c6fca82036a5785d9f"],"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\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"60610fd40b95ca119141\",\"9\":\"985935421e62c97a9f86\",\"10\":\"a99bb538cfbadb38dbcb\",\"11\":\"727465d72948bc466d43\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"3c8337bec315adcd2700\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"cbeb6d95129cad6481c2\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"4f7a5b71ef006ac268c1\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[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\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"60610fd40b95ca119141\",\"9\":\"985935421e62c97a9f86\",\"10\":\"a99bb538cfbadb38dbcb\",\"11\":\"727465d72948bc466d43\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"3c8337bec315adcd2700\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"cbeb6d95129cad6481c2\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"4f7a5b71ef006ac268c1\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[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 00c6fca82036a5785d9f\n **/"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap e8f17647963f318d0de5"],"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\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"5ee0cf635c848abbfc05\",\"9\":\"df3c36f8d0d210621fbb\",\"10\":\"dac55d18d0b4ef3cdacf\",\"11\":\"4a20a75f827c5a1125c3\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"645dd0b7c0b9210f1b56\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"8e19985c4d12a3b7b0c0\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"825a43c330157e351fca\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[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\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"5ee0cf635c848abbfc05\",\"9\":\"df3c36f8d0d210621fbb\",\"10\":\"dac55d18d0b4ef3cdacf\",\"11\":\"4a20a75f827c5a1125c3\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"645dd0b7c0b9210f1b56\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"8e19985c4d12a3b7b0c0\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"825a43c330157e351fca\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[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 e8f17647963f318d0de5\n **/"],"sourceRoot":""}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import factory
|
|
2
|
+
import pytest
|
|
3
|
+
from flask_restx.reqparse import Argument, RequestParser
|
|
4
|
+
from werkzeug.exceptions import BadRequest
|
|
5
|
+
|
|
6
|
+
from udata.api_fields import field, function_field, generate_fields, patch, patch_and_save
|
|
7
|
+
from udata.core.dataset.api_fields import dataset_fields
|
|
8
|
+
from udata.core.organization import constants as org_constants
|
|
9
|
+
from udata.core.organization.factories import OrganizationFactory
|
|
10
|
+
from udata.core.organization.models import Organization
|
|
11
|
+
from udata.core.owned import Owned
|
|
12
|
+
from udata.core.storages import default_image_basename, images
|
|
13
|
+
from udata.factories import ModelFactory
|
|
14
|
+
from udata.models import Badge, BadgeMixin, BadgesList, WithMetrics, db
|
|
15
|
+
from udata.mongo.queryset import DBPaginator
|
|
16
|
+
from udata.utils import faker
|
|
17
|
+
|
|
18
|
+
pytestmark = [
|
|
19
|
+
pytest.mark.usefixtures("clean_db"),
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
BIGGEST_IMAGE_SIZE: int = 500
|
|
23
|
+
|
|
24
|
+
BADGES: dict[str, str] = {
|
|
25
|
+
"badge-1": "badge 1",
|
|
26
|
+
"badge-2": "badge 2",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
URL_RAISE_ERROR: str = "/raise/validation/error"
|
|
30
|
+
URL_EXISTS_ERROR_MESSAGE: str = "Url exists"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def check_url(url: str = "") -> None:
|
|
34
|
+
if url == URL_RAISE_ERROR:
|
|
35
|
+
raise ValueError(URL_EXISTS_ERROR_MESSAGE)
|
|
36
|
+
return
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class FakeBadge(Badge):
|
|
40
|
+
kind = db.StringField(required=True, choices=list(BADGES.keys()))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class FakeBadgeMixin(BadgeMixin):
|
|
44
|
+
badges = field(BadgesList(FakeBadge), **BadgeMixin.default_badges_list_params)
|
|
45
|
+
__badges__ = BADGES
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@generate_fields(
|
|
49
|
+
searchable=True,
|
|
50
|
+
additional_sorts=[
|
|
51
|
+
{"key": "datasets", "value": "metrics.datasets"},
|
|
52
|
+
{"key": "followers", "value": "metrics.followers"},
|
|
53
|
+
{"key": "views", "value": "metrics.views"},
|
|
54
|
+
],
|
|
55
|
+
additional_filters={"organization_badge": "organization.badges"},
|
|
56
|
+
)
|
|
57
|
+
class Fake(WithMetrics, FakeBadgeMixin, Owned, db.Document):
|
|
58
|
+
filter_field = field(db.StringField(), filterable={"key": "filter_field_name"})
|
|
59
|
+
title = field(
|
|
60
|
+
db.StringField(required=True),
|
|
61
|
+
sortable=True,
|
|
62
|
+
show_as_ref=True,
|
|
63
|
+
)
|
|
64
|
+
slug = field(
|
|
65
|
+
db.SlugField(
|
|
66
|
+
max_length=255, required=True, populate_from="title", update=True, follow=True
|
|
67
|
+
),
|
|
68
|
+
readonly=True,
|
|
69
|
+
)
|
|
70
|
+
description = field(
|
|
71
|
+
db.StringField(required=True),
|
|
72
|
+
markdown=True,
|
|
73
|
+
)
|
|
74
|
+
url = field(
|
|
75
|
+
db.StringField(required=True),
|
|
76
|
+
description="The remote URL (website)",
|
|
77
|
+
check=check_url,
|
|
78
|
+
)
|
|
79
|
+
image_url = db.StringField()
|
|
80
|
+
image = field(
|
|
81
|
+
db.ImageField(
|
|
82
|
+
fs=images,
|
|
83
|
+
basename=default_image_basename,
|
|
84
|
+
),
|
|
85
|
+
readonly=True,
|
|
86
|
+
show_as_ref=True,
|
|
87
|
+
thumbnail_info={
|
|
88
|
+
"size": BIGGEST_IMAGE_SIZE,
|
|
89
|
+
},
|
|
90
|
+
)
|
|
91
|
+
datasets = field(
|
|
92
|
+
db.ListField(
|
|
93
|
+
field(
|
|
94
|
+
db.ReferenceField("Dataset", reverse_delete_rule=db.PULL),
|
|
95
|
+
nested_fields=dataset_fields,
|
|
96
|
+
),
|
|
97
|
+
),
|
|
98
|
+
filterable={
|
|
99
|
+
"key": "dataset",
|
|
100
|
+
},
|
|
101
|
+
)
|
|
102
|
+
tags = field(
|
|
103
|
+
db.TagListField(),
|
|
104
|
+
filterable={
|
|
105
|
+
"key": "tag",
|
|
106
|
+
},
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
deleted = field(
|
|
110
|
+
db.DateTimeField(),
|
|
111
|
+
)
|
|
112
|
+
archived = field(
|
|
113
|
+
db.DateTimeField(),
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def __str__(self) -> str:
|
|
117
|
+
return self.title or ""
|
|
118
|
+
|
|
119
|
+
@function_field(description="Link to the API endpoint for this fake", show_as_ref=True)
|
|
120
|
+
def uri(self) -> str:
|
|
121
|
+
return "fake/foobar/endpoint/"
|
|
122
|
+
|
|
123
|
+
__metrics_keys__: list[str] = [
|
|
124
|
+
"datasets",
|
|
125
|
+
"followers",
|
|
126
|
+
"views",
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
meta: dict = {
|
|
130
|
+
"indexes": [
|
|
131
|
+
"$title",
|
|
132
|
+
],
|
|
133
|
+
"auto_create_index_on_save": True,
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class FakeFactory(ModelFactory):
|
|
138
|
+
class Meta:
|
|
139
|
+
model = Fake
|
|
140
|
+
|
|
141
|
+
title = factory.Faker("sentence")
|
|
142
|
+
description = factory.Faker("text")
|
|
143
|
+
url = factory.LazyAttribute(lambda o: "/".join([faker.url(), faker.unique_string()]))
|
|
144
|
+
archived = None
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class IndexParserTest:
|
|
148
|
+
index_parser: RequestParser = Fake.__index_parser__
|
|
149
|
+
index_parser_args: list[Argument] = Fake.__index_parser__.args
|
|
150
|
+
index_parser_args_names: set[str] = set([field.name for field in Fake.__index_parser__.args])
|
|
151
|
+
|
|
152
|
+
def test_index_parser(self) -> None:
|
|
153
|
+
assert type(self.index_parser) is RequestParser
|
|
154
|
+
|
|
155
|
+
def test_filterable_fields_in_parser(self) -> None:
|
|
156
|
+
"""All filterable fields should have a parser arg.
|
|
157
|
+
|
|
158
|
+
The parser arg uses the `key` provided instead of the field name, so
|
|
159
|
+
- dataset instead of datasets
|
|
160
|
+
- tag instead of tags
|
|
161
|
+
|
|
162
|
+
"""
|
|
163
|
+
assert set(
|
|
164
|
+
[
|
|
165
|
+
"dataset",
|
|
166
|
+
"tag",
|
|
167
|
+
]
|
|
168
|
+
).issubset(self.index_parser_args_names)
|
|
169
|
+
|
|
170
|
+
def test_readonly_and_non_wrapped_fields_not_in_parser(self) -> None:
|
|
171
|
+
"""Readonly fields() and non wrapped fields should not have a parser arg."""
|
|
172
|
+
for field_ in ["slug", "image_url"]:
|
|
173
|
+
assert field_ not in self.index_parser_args_names
|
|
174
|
+
|
|
175
|
+
def test_filterable_fields_from_mixins_in_parser(self) -> None:
|
|
176
|
+
"""Filterable fields from mixins should have a parser arg."""
|
|
177
|
+
assert set(["owner", "organization"]).issubset(self.index_parser_args_names)
|
|
178
|
+
|
|
179
|
+
def test_additional_filters_in_parser(self) -> None:
|
|
180
|
+
"""Filterable fields from the `additional_filters` decorater parameter should have a parser arg."""
|
|
181
|
+
assert "organization_badge" in self.index_parser_args_names
|
|
182
|
+
|
|
183
|
+
def test_pagination_fields_in_parser(self) -> None:
|
|
184
|
+
"""Pagination fields should have a parser arg."""
|
|
185
|
+
assert "page" in self.index_parser_args_names
|
|
186
|
+
assert "page_size" in self.index_parser_args_names
|
|
187
|
+
|
|
188
|
+
def test_searchable(self) -> None:
|
|
189
|
+
"""Searchable documents have a `q` parser arg."""
|
|
190
|
+
assert "q" in self.index_parser_args_names
|
|
191
|
+
|
|
192
|
+
def test_sortable_fields_in_parser(self) -> None:
|
|
193
|
+
"""Sortable fields are listed in the `sort` parser arg choices."""
|
|
194
|
+
sort_arg: Argument = next(arg for arg in self.index_parser_args if arg.name == "sort")
|
|
195
|
+
choices: list[str] = sort_arg.choices
|
|
196
|
+
assert "title" in choices
|
|
197
|
+
assert "-title" in choices
|
|
198
|
+
|
|
199
|
+
def test_additional_sorts_in_parser(self) -> None:
|
|
200
|
+
"""Additional sorts are listed in the `sort` parser arg choices."""
|
|
201
|
+
sort_arg: Argument = next(arg for arg in self.index_parser_args if arg.name == "sort")
|
|
202
|
+
choices: list[str] = sort_arg.choices
|
|
203
|
+
additional_sorts: list[str] = [
|
|
204
|
+
"datasets",
|
|
205
|
+
"-datasets",
|
|
206
|
+
"followers",
|
|
207
|
+
"-followers",
|
|
208
|
+
"views",
|
|
209
|
+
"-views",
|
|
210
|
+
]
|
|
211
|
+
assert set(additional_sorts).issubset(set(choices))
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class PatchTest:
|
|
215
|
+
class FakeRequest:
|
|
216
|
+
json = {"url": URL_RAISE_ERROR, "description": None}
|
|
217
|
+
|
|
218
|
+
def test_patch_check(self) -> None:
|
|
219
|
+
fake: Fake = FakeFactory.create()
|
|
220
|
+
with pytest.raises(ValueError, match=URL_EXISTS_ERROR_MESSAGE):
|
|
221
|
+
patch(fake, self.FakeRequest())
|
|
222
|
+
|
|
223
|
+
def test_patch_and_save(self) -> None:
|
|
224
|
+
fake: Fake = FakeFactory.create()
|
|
225
|
+
fake_request = self.FakeRequest()
|
|
226
|
+
fake_request.json["url"] = "ok url"
|
|
227
|
+
with pytest.raises(BadRequest):
|
|
228
|
+
patch_and_save(fake, fake_request)
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class ApplySortAndFiltersTest:
|
|
232
|
+
def test_filterable_field(self, app) -> None:
|
|
233
|
+
"""A filterable field filters the results."""
|
|
234
|
+
fake1: Fake = FakeFactory(filter_field="test filter")
|
|
235
|
+
fake2: Fake = FakeFactory(filter_field="some other filter")
|
|
236
|
+
with app.test_request_context("/foobar", query_string={"filter_field_name": "test filter"}):
|
|
237
|
+
results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
238
|
+
assert fake1 in results
|
|
239
|
+
assert fake2 not in results
|
|
240
|
+
|
|
241
|
+
def test_additional_filters(self, app) -> None:
|
|
242
|
+
"""Filtering on an additional filter filters the results."""
|
|
243
|
+
org_public_service: Organization = OrganizationFactory()
|
|
244
|
+
org_public_service.add_badge(org_constants.PUBLIC_SERVICE)
|
|
245
|
+
org_company: Organization = OrganizationFactory()
|
|
246
|
+
org_company.add_badge(org_constants.COMPANY)
|
|
247
|
+
fake1: Fake = FakeFactory(organization=org_public_service)
|
|
248
|
+
fake2: Fake = FakeFactory(organization=org_company)
|
|
249
|
+
with app.test_request_context(
|
|
250
|
+
"/foobar", query_string={"organization_badge": org_constants.PUBLIC_SERVICE}
|
|
251
|
+
):
|
|
252
|
+
results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
253
|
+
assert fake1 in results
|
|
254
|
+
assert fake2 not in results
|
|
255
|
+
|
|
256
|
+
def test_searchable(self, app) -> None:
|
|
257
|
+
"""If `@generate_fields(searchable=True)`, then the document can be full-text searched."""
|
|
258
|
+
fake1: Fake = FakeFactory(title="foobar crux")
|
|
259
|
+
fake2: Fake = FakeFactory(title="barbaz crux")
|
|
260
|
+
with app.test_request_context("/foobar", query_string={"q": "foobar"}):
|
|
261
|
+
results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
262
|
+
assert fake1 in results
|
|
263
|
+
assert fake2 not in results
|
|
264
|
+
|
|
265
|
+
def test_sortable_field(self, app) -> None:
|
|
266
|
+
"""A sortable field should sort the results."""
|
|
267
|
+
fake1: Fake = FakeFactory(title="abc")
|
|
268
|
+
fake2: Fake = FakeFactory(title="def")
|
|
269
|
+
with app.test_request_context("/foobar", query_string={"sort": "title"}):
|
|
270
|
+
results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
271
|
+
assert tuple(results) == (fake1, fake2)
|
|
272
|
+
with app.test_request_context("/foobar", query_string={"sort": "-title"}):
|
|
273
|
+
results = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
274
|
+
assert tuple(results) == (fake2, fake1)
|
|
275
|
+
|
|
276
|
+
def test_additional_sorts(self, app) -> None:
|
|
277
|
+
"""Sorting on additional sort sorts the results."""
|
|
278
|
+
fake1: Fake = FakeFactory(metrics={"datasets": 1})
|
|
279
|
+
fake2: Fake = FakeFactory(metrics={"datasets": 2})
|
|
280
|
+
with app.test_request_context("/foobar", query_string={"sort": "datasets"}):
|
|
281
|
+
results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
282
|
+
assert tuple(results) == (fake1, fake2)
|
|
283
|
+
with app.test_request_context("/foobar", query_string={"sort": "-datasets"}):
|
|
284
|
+
results = Fake.apply_sort_filters_and_pagination(Fake.objects)
|
|
285
|
+
assert tuple(results) == (fake2, fake1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 10.0.1.
|
|
3
|
+
Version: 10.0.1.dev32350
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -140,7 +140,7 @@ It is collectively taken care of by members of the
|
|
|
140
140
|
|
|
141
141
|
## Current (in progress)
|
|
142
142
|
|
|
143
|
-
-
|
|
143
|
+
- Add more comments and types in the `api_field.py` "lib" [#3174](https://github.com/opendatateam/udata/pull/3174)
|
|
144
144
|
|
|
145
145
|
## 10.0.0 (2024-11-07)
|
|
146
146
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
tasks/__init__.py,sha256=nubUI6ljumym4uv6NvAJEkWHtsdurFpEGSq-AxDWYDM,8153
|
|
2
2
|
tasks/helpers.py,sha256=70fS9tI_m0DTWmKx9Zl5-LG-nxdz_ZaPyvvsFkN2r48,1091
|
|
3
3
|
udata/__init__.py,sha256=VLpep3pCtT5bA1tTfgPooU04eEqTfDj4l1Ji5umePX0,102
|
|
4
|
-
udata/api_fields.py,sha256=
|
|
4
|
+
udata/api_fields.py,sha256=z1L_ykNO6GoZP0i-RvlYTv6GwoP0NtGFdfZMLWe8qTc,28784
|
|
5
5
|
udata/app.py,sha256=xjk2D3EgboYBpTwBwdIxd2klt2yMoWMyCrkry5fz0LA,7292
|
|
6
6
|
udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
|
|
7
7
|
udata/cors.py,sha256=gPTIXnO5nWziCKAHqU9GNuBKaIzr7RRtbjZBd2RdE2k,3155
|
|
@@ -429,8 +429,8 @@ udata/static/admin.css,sha256=RC7GvbVK8c5wDuELPeVdQpy3ab7HbHl1T4hUo5n-NVk,185167
|
|
|
429
429
|
udata/static/admin.css.map,sha256=tUhFfsJUK3RrWCih9gUkf-Ywccuztxf4tqvXcN6zP3Y,626542
|
|
430
430
|
udata/static/admin.js,sha256=d6LMGEm9HmvpxYuje1Ng7HIgJv5XglBHFzBwA-o2Wb8,1329286
|
|
431
431
|
udata/static/admin.js.map,sha256=EcZ_4LEvKmf_8_2afyXGjfJpTAHttTE3zLMX94fe9MY,8515202
|
|
432
|
-
udata/static/common.js,sha256=
|
|
433
|
-
udata/static/common.js.map,sha256=
|
|
432
|
+
udata/static/common.js,sha256=8gbPeIW6r9nb63wnElw9F-XQX5ZyK0jZ1icZctuclRk,2252
|
|
433
|
+
udata/static/common.js.map,sha256=Q66zdvkC5iTFbLMWxJmIZYXAEGiRrFmZ1GQZkPCwJBk,14137
|
|
434
434
|
udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
|
|
435
435
|
udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
|
|
436
436
|
udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
|
|
@@ -447,26 +447,26 @@ udata/static/chunks/0.f575c19b056e559584d4.js,sha256=-MNQyped3n5XBxxnSb-hxUAQfe0
|
|
|
447
447
|
udata/static/chunks/0.f575c19b056e559584d4.js.map,sha256=smlw1AMEgvFomvGx8Hgbl89rYFu2lRbDolbUu2rlA_k,1671645
|
|
448
448
|
udata/static/chunks/1.c78e30240d3784c22a76.js,sha256=eQa2yj1yebZyod1hqSMn6q7lWAR4QlfslsTfAop-hfU,304260
|
|
449
449
|
udata/static/chunks/1.c78e30240d3784c22a76.js.map,sha256=rHMOsawr20JJrmXoEdXBJ_B7KwsCTIQqj4Bv7Sa7DIk,1741781
|
|
450
|
-
udata/static/chunks/10.
|
|
451
|
-
udata/static/chunks/10.
|
|
452
|
-
udata/static/chunks/11.
|
|
453
|
-
udata/static/chunks/11.
|
|
450
|
+
udata/static/chunks/10.dac55d18d0b4ef3cdacf.js,sha256=c3ejDZX8oodAICnsK9DD7XiTkXcwdpg9n6yZERMRAS8,414754
|
|
451
|
+
udata/static/chunks/10.dac55d18d0b4ef3cdacf.js.map,sha256=BfJN2xNQn2SzMBi7YdFcHr1tewmZ3XFcPoSpZMVIXak,2736101
|
|
452
|
+
udata/static/chunks/11.4a20a75f827c5a1125c3.js,sha256=cLd6OKdXjQ_d5Qmr4LmICq7gYEL8ts8Jly0NL8GskzY,395574
|
|
453
|
+
udata/static/chunks/11.4a20a75f827c5a1125c3.js.map,sha256=iQCrqSBVgnAjqpa0o23BBaX-BcZIZW92039V32-F0TQ,2268995
|
|
454
454
|
udata/static/chunks/12.50d20132d60ff7279de9.js,sha256=lRNALcaIjoAGN9QM5IZUlqhBpm5dK4CbztsivF2Fyao,421111
|
|
455
455
|
udata/static/chunks/12.50d20132d60ff7279de9.js.map,sha256=r-tf7oHdBfmLrVTvjTHLngL6zmnTQKv4cWCvAKM5eU0,2442272
|
|
456
|
-
udata/static/chunks/13.
|
|
457
|
-
udata/static/chunks/13.
|
|
456
|
+
udata/static/chunks/13.645dd0b7c0b9210f1b56.js,sha256=zrRt72PIX18yLCDj3H39yxnFt7DkDC_3-oa0jmz9Y88,420602
|
|
457
|
+
udata/static/chunks/13.645dd0b7c0b9210f1b56.js.map,sha256=aFy9nWtbaIdFCbh2G8sZ_67wQBR8PNnsId938DV4cqs,2430671
|
|
458
458
|
udata/static/chunks/14.8b85221f000b80696e52.js,sha256=vOHALILZfLu8rO9JL4gqj4nPOkM-6xtgNEDkN_55qAg,290380
|
|
459
459
|
udata/static/chunks/14.8b85221f000b80696e52.js.map,sha256=JSIqNCUualQT7ToosUasQSYNzyjiOZgz2gVZxuIAh1Q,1636958
|
|
460
460
|
udata/static/chunks/15.10e44b70e118e7ebc13a.js,sha256=Zpij6dc8Ez3ICH_mmu0ZewDV1BrA3cqRdfAsEsr1k2E,138978
|
|
461
461
|
udata/static/chunks/15.10e44b70e118e7ebc13a.js.map,sha256=kb98MHzOFYpoQBU0JE_ZtjGhUIovXDjn1H15SVcimY0,702655
|
|
462
462
|
udata/static/chunks/16.a43cef89812c95f1b02e.js,sha256=0ac9EXmEmDqN5p7wupMAro-6MAKOBgPCHVa0rAQghwY,228573
|
|
463
463
|
udata/static/chunks/16.a43cef89812c95f1b02e.js.map,sha256=qf44iF_w2_I9Qkb43pyLQ7-11nIM1hCGhKlhcWSD_UI,1574433
|
|
464
|
-
udata/static/chunks/17.
|
|
465
|
-
udata/static/chunks/17.
|
|
464
|
+
udata/static/chunks/17.8e19985c4d12a3b7b0c0.js,sha256=JNS-jE2C1z-hCUZJFFMIeXyD2aBfq_JQ4hLYl6zukWg,236713
|
|
465
|
+
udata/static/chunks/17.8e19985c4d12a3b7b0c0.js.map,sha256=BFOTMP5OaCfqn99a9J2qunMDjxuSYZCMVdnmWxshLUQ,1290033
|
|
466
466
|
udata/static/chunks/18.3b5ad23785c7be62ee30.js,sha256=CSsL3HD_l4R_WFDi-dmdUfjmBg_3rHSHIOqX2lqkLvQ,50398
|
|
467
467
|
udata/static/chunks/18.3b5ad23785c7be62ee30.js.map,sha256=yQyQTLhjMCVwf0A-GvXp_aiuBj4RNUIDLjI9JoZWSGw,277843
|
|
468
|
-
udata/static/chunks/19.
|
|
469
|
-
udata/static/chunks/19.
|
|
468
|
+
udata/static/chunks/19.825a43c330157e351fca.js,sha256=p466HYvdKK2GZpZ-TlcwvCPcf2qxCwD70J0S2Cl9h_0,203430
|
|
469
|
+
udata/static/chunks/19.825a43c330157e351fca.js.map,sha256=bfMKGTcY8JCx6QJiRKvdvB2xLmK4fb9PCnLjw1q_IPA,1080009
|
|
470
470
|
udata/static/chunks/2.c67aa76cc078c193aed5.js,sha256=BjpQndwBdg9AT2lrY1TAgMfPbMvRytp33yI9YOgCOqc,276597
|
|
471
471
|
udata/static/chunks/2.c67aa76cc078c193aed5.js.map,sha256=FnPh12lCwilnq1jRp-d7226H5kpaA4-raWEk1Q0p42M,1556097
|
|
472
472
|
udata/static/chunks/20.727bc4349ebdc499fff7.js,sha256=_9bDJsQybRmitoaVotYU9_PIKZ_QExxsJUTQNCohH0E,36778
|
|
@@ -503,10 +503,10 @@ udata/static/chunks/6.037369868acc94a7533f.js,sha256=IoBa0GeUdPXgtoRp2iqd8Eur87p
|
|
|
503
503
|
udata/static/chunks/6.037369868acc94a7533f.js.map,sha256=e7PI2w49pqthO8RoF674NG_hrzahNBQOOFvlmpnbYZw,3783237
|
|
504
504
|
udata/static/chunks/7.5237c02df1fdd7c2449a.js,sha256=pRz3iTHC8-EUqFFiotIP1VMVEXzGiUfYLGX3bOZ8ZWU,157164
|
|
505
505
|
udata/static/chunks/7.5237c02df1fdd7c2449a.js.map,sha256=YLmWzRFjhWdndddIIQoazvrmp4JAGiC7k8IBziUylUI,813053
|
|
506
|
-
udata/static/chunks/8.
|
|
507
|
-
udata/static/chunks/8.
|
|
508
|
-
udata/static/chunks/9.
|
|
509
|
-
udata/static/chunks/9.
|
|
506
|
+
udata/static/chunks/8.5ee0cf635c848abbfc05.js,sha256=bx1FVWw1fJ4Vcl_eMoLQNETloPEwtAfgRXXxIa52Ewc,222870
|
|
507
|
+
udata/static/chunks/8.5ee0cf635c848abbfc05.js.map,sha256=YbSxJcvJFY_M1GBz0u-mLYyw0ycnEsuv_MyarjP6J3I,1205115
|
|
508
|
+
udata/static/chunks/9.df3c36f8d0d210621fbb.js,sha256=WpvSa-6nF0_qnbXnt5s4Pya3D5mKMaDAEbLNv0ay2Vs,416730
|
|
509
|
+
udata/static/chunks/9.df3c36f8d0d210621fbb.js.map,sha256=ZRw1vre9rZ4qVOW6gGQtN2SMTdaMdcyCldp-pf_YSSE,2746345
|
|
510
510
|
udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
511
511
|
udata/storage/s3.py,sha256=enxbTm1IZksiKLkbafASrO2bqO44OTCn4F7_FeMjhgg,1557
|
|
512
512
|
udata/templates/admin.html,sha256=RfX03rUOW7NIlgMYNhFfx0pL-p2j8BtAKvEFUadaIIs,787
|
|
@@ -586,6 +586,7 @@ udata/tests/models.py,sha256=5oTC-cgKSL0sUdlqjUiJ6U8-YZBQanObb-MhZhQIV3M,238
|
|
|
586
586
|
udata/tests/plugin.py,sha256=dT3KfQiVYwLM61TbB894wzTelnlPIsCHaiPEH-Jirfk,11580
|
|
587
587
|
udata/tests/schemas.json,sha256=szM1jDpkogfOG4xWbjIGjLgG8l9-ZyE3JKQtecJyD1E,4990
|
|
588
588
|
udata/tests/test_activity.py,sha256=x-pDK6VW9wAG0uxYRZQ3DWTRjfCU729iaMGMJb1rWYU,3195
|
|
589
|
+
udata/tests/test_api_fields.py,sha256=c_EezPhAJSxNBMK8e5J5XVNcxL0QZKciH5gQ_dkowMo,10266
|
|
589
590
|
udata/tests/test_cors.py,sha256=b_pyxKeIyqhnsXxXryPf4d0V0QxaLQ1P_VjY89Q_j3g,3233
|
|
590
591
|
udata/tests/test_discussions.py,sha256=Qo7nhIUY7YAATZfWl5Mgo0XhngGwFULgqEoMhsHZtFE,33587
|
|
591
592
|
udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
|
|
@@ -704,9 +705,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=TpMlhwj07t7CPkzXn-qmHG4aTq6ZT7
|
|
|
704
705
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=vRqSEt9Jds--Wic-hYMkdjYaWzeHFnUn3wD5XvQL-qE,44877
|
|
705
706
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=bc-BmgT91ZJJB9DKc5YDsHqyxBhOjDJdbOy-UPo-NjA,28163
|
|
706
707
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=BKVmr4M88pfgZMU4sHIyDObV5M9E8ezZ9m7jviy2PE4,51369
|
|
707
|
-
udata-10.0.1.
|
|
708
|
-
udata-10.0.1.
|
|
709
|
-
udata-10.0.1.
|
|
710
|
-
udata-10.0.1.
|
|
711
|
-
udata-10.0.1.
|
|
712
|
-
udata-10.0.1.
|
|
708
|
+
udata-10.0.1.dev32350.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
709
|
+
udata-10.0.1.dev32350.dist-info/METADATA,sha256=GCpVTvUetj2TSV5zyJhW6J39bdSk18651TcM-_W4I4M,134145
|
|
710
|
+
udata-10.0.1.dev32350.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
711
|
+
udata-10.0.1.dev32350.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
|
|
712
|
+
udata-10.0.1.dev32350.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
713
|
+
udata-10.0.1.dev32350.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|