udata 9.0.1.dev29541__py2.py3-none-any.whl → 9.0.1.dev29562__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/static/common.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var f=c[a]={exports:{},id:a,loaded:!1};return e[a].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var a=window.webpackJsonp;window.webpackJsonp=function(b,r){for(var t,_,n=0,d=[];n<b.length;n++)_=b[n],f[_]&&d.push.apply(d,f[_]),f[_]=0;for(t in r){var i=r[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),f=a[0];return function(a,b,r){e[f].apply(this,[a,b,r].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(b,r);d.length;)d.shift().call(null,__webpack_require__);if(r[0])return c[0]=0,__webpack_require__(0)};var c={},f={31:0};__webpack_require__.e=function(e,a){if(0===f[e])return a.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(a);else{f[e]=[a];var c=document.getElementsByTagName("head")[0],b=document.createElement("script");b.type="text/javascript",b.charset="utf-8",b.async=!0,b.src=__webpack_require__.p+"chunks/"+e+"."+{0:"93c3ae13b5b94753ee80",1:"ff8196d42cab0f031d3f",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"95e6a070a0eb2ed08fdd",5:"cc2e7bf65ef32f9c8604",6:"cad898a38692eda28965",7:"e2106342e94ee09393b1",8:"17d1afb591ad1495bd03",9:"d5b992e9ef51921aeb57",10:"e97ea231893dc435d6b5",11:"ae54612e36c6d46f85db",12:"59f035a9438e2baf5126",13:"d8ccb992a49875966313",14:"e64890872b31c55fcdf7",15:"92b2cef3032ea35da04a",16:"4565605e68bab129a471",17:"15ecbcf8f0b2968689e8",18:"1922fd0b2b7fad122991",19:"f993a75d5bfe2382548d",20:"14a92e5c503f74ff40df",21:"ccbfce6680a2b11a5284",22:"bc79367e5f4c8ad00038",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"b2464d08ccbeb40ec74e",32:"fa73a4eb8875b89f452f",33:"70f8e7b1964892a24e67"}[e]+".js",c.appendChild(b)}},__webpack_require__.m=e,__webpack_require__.c=c,__webpack_require__.p="/static/"}(function(e){for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a))switch(typeof e[a]){case"function":break;case"object":e[a]=function(a){var c=a.slice(1),f=e[a[0]];return function(e,a,b){f.apply(this,[e,a,b].concat(c))}}(e[a]);break;default:e[a]=e[e[a]]}return e}([]));
1
+ !function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var b=c[a]={exports:{},id:a,loaded:!1};return e[a].call(b.exports,b,b.exports,__webpack_require__),b.loaded=!0,b.exports}var a=window.webpackJsonp;window.webpackJsonp=function(f,r){for(var t,_,d=0,n=[];d<f.length;d++)_=f[d],b[_]&&n.push.apply(n,b[_]),b[_]=0;for(t in r){var i=r[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),b=a[0];return function(a,f,r){e[b].apply(this,[a,f,r].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(f,r);n.length;)n.shift().call(null,__webpack_require__);if(r[0])return c[0]=0,__webpack_require__(0)};var c={},b={31:0};__webpack_require__.e=function(e,a){if(0===b[e])return a.call(null,__webpack_require__);if(void 0!==b[e])b[e].push(a);else{b[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:"93c3ae13b5b94753ee80",1:"ff8196d42cab0f031d3f",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"95e6a070a0eb2ed08fdd",5:"cc2e7bf65ef32f9c8604",6:"cad898a38692eda28965",7:"e2106342e94ee09393b1",8:"17d1afb591ad1495bd03",9:"d5b992e9ef51921aeb57",10:"e97ea231893dc435d6b5",11:"ae54612e36c6d46f85db",12:"59f035a9438e2baf5126",13:"d8ccb992a49875966313",14:"e64890872b31c55fcdf7",15:"92b2cef3032ea35da04a",16:"4565605e68bab129a471",17:"15ecbcf8f0b2968689e8",18:"1922fd0b2b7fad122991",19:"f993a75d5bfe2382548d",20:"14a92e5c503f74ff40df",21:"ccbfce6680a2b11a5284",22:"bc79367e5f4c8ad00038",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"b2464d08ccbeb40ec74e",32:"b6d12ba61ce4d5b1cfb3",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),b=e[a[0]];return function(e,a,f){b.apply(this,[e,a,f].concat(c))}}(e[a]);break;default:e[a]=e[e[a]]}return e}([]));
2
2
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap 450b49c9d6fd4e6a88c4"],"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"fa73a4eb8875b89f452f\",\"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"fa73a4eb8875b89f452f\",\"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 450b49c9d6fd4e6a88c4\n **/"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap a73648e823c9154ab6ec"],"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"b6d12ba61ce4d5b1cfb3\",\"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"b6d12ba61ce4d5b1cfb3\",\"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 a73648e823c9154ab6ec\n **/"],"sourceRoot":""}
@@ -761,7 +761,7 @@ class DatasetAPITest(APITestCase):
761
761
  data['resources'].append(resource_data)
762
762
  response = self.put(url_for('api.dataset', dataset=dataset), data)
763
763
  self.assert400(response)
764
- assert response.json['errors']['resources'][0]['schema']['url'] == [_('Invalid URL')]
764
+ assert response.json['errors']['resources'][0]['schema']['url'] == [_('Invalid URL "test"')]
765
765
 
766
766
  resource_data['schema'] = {'name': 'unknown-schema'}
767
767
  data['resources'].append(resource_data)
udata/tests/test_model.py CHANGED
@@ -6,6 +6,7 @@ from datetime import date, datetime, timedelta
6
6
  from mongoengine.errors import ValidationError
7
7
  from mongoengine.fields import BaseField
8
8
 
9
+ from udata.forms.validators import _
9
10
  from udata.settings import Defaults
10
11
  from udata.models import Dataset
11
12
  from udata.mongo import db, validate_config, build_test_config
@@ -366,7 +367,7 @@ class URLFieldTest:
366
367
 
367
368
  def test_not_valid(self):
368
369
  obj = URLTester(url='invalid')
369
- with pytest.raises(ValidationError, match='Invalid URL'):
370
+ with pytest.raises(ValidationError, match=_('Invalid URL "{url}"').format(url="invalid")):
370
371
  obj.save()
371
372
 
372
373
  def test_strip_spaces(self):
Binary file
@@ -1555,3 +1555,34 @@ msgstr "Assez réutilisé"
1555
1555
  msgid "Heavily reused"
1556
1556
  msgstr "Souvent réutilisé"
1557
1557
 
1558
+ #: udata/uris.py:51
1559
+ msgid "Invalid URL \"{url}\": {reason}"
1560
+ msgstr "URL invalide \"{url}\" : {reason}"
1561
+
1562
+ #: udata/uris.py:103
1563
+ msgid "Schéma invalide {0}, schémas autorisés : {1}"
1564
+ msgstr ""
1565
+
1566
+ #: udata/uris.py:106
1567
+ msgid "Les informations d'identification dans l'URL ne sont pas autorisées"
1568
+ msgstr ""
1569
+
1570
+ #: udata/uris.py:110
1571
+ msgid "TLD invalide {0}"
1572
+ msgstr ""
1573
+
1574
+ #: udata/uris.py:119
1575
+ msgid "{0} est une IP multicast"
1576
+ msgstr ""
1577
+
1578
+ #: udata/uris.py:121
1579
+ msgid "{0} est un masque IP"
1580
+ msgstr ""
1581
+
1582
+ #: udata/uris.py:125
1583
+ msgid "est une URL locale"
1584
+ msgstr ""
1585
+
1586
+ #: udata/uris.py:128
1587
+ msgid "est une URL privée"
1588
+ msgstr ""
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: udata 7.0.7.dev0\n"
9
+ "Project-Id-Version: udata 9.0.1.dev0\n"
10
10
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
11
- "POT-Creation-Date: 2024-04-15 12:06+0200\n"
12
- "PO-Revision-Date: 2024-04-15 12:06+0200\n"
11
+ "POT-Creation-Date: 2024-06-14 11:31+0200\n"
12
+ "PO-Revision-Date: 2024-06-14 11:31+0200\n"
13
13
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
14
14
  "Language: en\n"
15
15
  "Language-Team: Open Data Team <i18n@opendata.team>\n"
@@ -43,25 +43,61 @@ msgstr ""
43
43
  msgid "Password reset instructions"
44
44
  msgstr ""
45
45
 
46
- #: udata/settings.py:430
46
+ #: udata/settings.py:433
47
47
  msgid "This dataset has been archived"
48
48
  msgstr ""
49
49
 
50
+ #: udata/uris.py:52
51
+ msgid "Invalid URL \"{url}\": {reason}"
52
+ msgstr ""
53
+
54
+ #: udata/uris.py:54
55
+ msgid "Invalid URL \"{url}\""
56
+ msgstr ""
57
+
58
+ #: udata/uris.py:105
59
+ msgid "Invalid scheme {0}, allowed schemes: {1}"
60
+ msgstr ""
61
+
62
+ #: udata/uris.py:108
63
+ msgid "Credentials in URL are not allowed"
64
+ msgstr ""
65
+
66
+ #: udata/uris.py:112
67
+ msgid "Invalid TLD {0}"
68
+ msgstr ""
69
+
70
+ #: udata/uris.py:121
71
+ msgid "{0} is a multicast IP"
72
+ msgstr ""
73
+
74
+ #: udata/uris.py:123
75
+ msgid "{0} is a mask IP"
76
+ msgstr ""
77
+
78
+ #: udata/uris.py:127
79
+ msgid "is a local URL"
80
+ msgstr ""
81
+
82
+ #: udata/uris.py:130
83
+ msgid "is a private URL"
84
+ msgstr ""
85
+
50
86
  #: udata/api/errors.py:4
51
87
  msgid ""
52
88
  "Validation error: your data cannot be updated for now, we have been notified "
53
89
  "of the error and we will fix it as soon as possible."
54
90
  msgstr ""
55
91
 
56
- #: udata/api/oauth2.py:53
92
+ #: udata/api/oauth2.py:54
57
93
  msgid "Bearer Token"
58
94
  msgstr ""
59
95
 
60
- #: udata/api/oauth2.py:57
96
+ #: udata/api/oauth2.py:58
61
97
  msgid "Default scope"
62
98
  msgstr ""
63
99
 
64
- #: udata/api/oauth2.py:58
100
+ #: udata/api/oauth2.py:59
65
101
  msgid "System administrator rights"
66
102
  msgstr ""
67
103
 
@@ -132,17 +168,17 @@ msgstr ""
132
168
  msgid "Confirm change of email instructions"
133
169
  msgstr ""
134
170
 
135
- #: udata/auth/views.py:72
171
+ #: udata/auth/views.py:73
136
172
  msgid ""
137
173
  "You did not confirm your change of email within {email_within}. New "
138
174
  "instructions to confirm your change of email have been sent to {new_email}."
139
175
  msgstr ""
140
176
 
141
- #: udata/auth/views.py:82
177
+ #: udata/auth/views.py:83
142
178
  msgid "Thank you. Your change of email has been confirmed."
143
179
  msgstr ""
144
180
 
145
- #: udata/auth/views.py:97
181
+ #: udata/auth/views.py:98
146
182
  msgid ""
147
183
  "Thank you. Confirmation instructions for changing your email have been sent "
148
184
  "to {new_email}."
@@ -168,6 +204,20 @@ msgstr ""
168
204
  msgid "Your udata instance is ready!"
169
205
  msgstr ""
170
206
 
207
+ #: udata/core/owned.py:30 udata/forms/fields.py:739
208
+ #: udata/tests/api/test_dataservices_api.py:229
209
+ msgid "You can only set yourself as owner"
210
+ msgstr ""
211
+
212
+ #: udata/core/owned.py:38
213
+ msgid "Unknown organization"
214
+ msgstr ""
215
+
216
+ #: udata/core/owned.py:41 udata/forms/fields.py:762
217
+ #: udata/tests/api/test_dataservices_api.py:238
218
+ msgid "Permission denied for this organization"
219
+ msgstr ""
220
+
171
221
  #: udata/core/badges/forms.py:14
172
222
  msgid "Kind"
173
223
  msgstr ""
@@ -193,6 +243,16 @@ msgstr ""
193
243
  msgid "Publish as"
194
244
  msgstr ""
195
245
 
246
+ #: udata/core/dataservices/models.py:129 udata/core/dataset/models.py:489
247
+ #: udata/mongo/datetime_fields.py:59
248
+ msgid "Creation date"
249
+ msgstr ""
250
+
251
+ #: udata/core/dataservices/models.py:133 udata/core/dataset/models.py:491
252
+ #: udata/mongo/datetime_fields.py:61
253
+ msgid "Last modification date"
254
+ msgstr ""
255
+
196
256
  #: udata/core/dataset/activities.py:21
197
257
  msgid "created a dataset"
198
258
  msgstr ""
@@ -233,7 +293,7 @@ msgstr ""
233
293
  msgid "Semidaily"
234
294
  msgstr ""
235
295
 
236
- #: udata/core/dataset/constants.py:15 udata/harvest/models.py:19
296
+ #: udata/core/dataset/constants.py:15 udata/harvest/models.py:20
237
297
  msgid "Daily"
238
298
  msgstr ""
239
299
 
@@ -249,7 +309,7 @@ msgstr ""
249
309
  msgid "Semiweekly"
250
310
  msgstr ""
251
311
 
252
- #: udata/core/dataset/constants.py:19 udata/harvest/models.py:18
312
+ #: udata/core/dataset/constants.py:19 udata/harvest/models.py:19
253
313
  msgid "Weekly"
254
314
  msgstr ""
255
315
 
@@ -265,7 +325,7 @@ msgstr ""
265
325
  msgid "Semimonthly"
266
326
  msgstr ""
267
327
 
268
- #: udata/core/dataset/constants.py:23 udata/harvest/models.py:17
328
+ #: udata/core/dataset/constants.py:23 udata/harvest/models.py:18
269
329
  msgid "Monthly"
270
330
  msgstr ""
271
331
 
@@ -496,9 +556,9 @@ msgid ""
496
556
  "Allowed versions: {values}"
497
557
  msgstr ""
498
558
 
499
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:452
500
- #: udata/tests/dataset/test_dataset_rdf.py:499
501
- #: udata/tests/dataset/test_dataset_rdf.py:512
559
+ #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:430
560
+ #: udata/tests/dataset/test_dataset_rdf.py:517
561
+ #: udata/tests/dataset/test_dataset_rdf.py:530
502
562
  msgid "Nameless resource"
503
563
  msgstr ""
504
564
 
@@ -506,23 +566,15 @@ msgstr ""
506
566
  msgid "Future date of update"
507
567
  msgstr ""
508
568
 
509
- #: udata/core/dataset/models.py:489 udata/mongo/datetime_fields.py:59
510
- msgid "Creation date"
511
- msgstr ""
512
-
513
- #: udata/core/dataset/models.py:491 udata/mongo/datetime_fields.py:61
514
- msgid "Last modification date"
515
- msgstr ""
516
-
517
569
  #: udata/core/dataset/models.py:500
518
570
  msgid "Pivotal data"
519
571
  msgstr ""
520
572
 
521
- #: udata/core/dataset/models.py:539
573
+ #: udata/core/dataset/models.py:540
522
574
  msgid "dataset"
523
575
  msgstr ""
524
576
 
525
- #: udata/core/dataset/rdf.py:450 udata/tests/dataset/test_dataset_rdf.py:486
577
+ #: udata/core/dataset/rdf.py:428 udata/tests/dataset/test_dataset_rdf.py:504
526
578
  msgid "{format} resource"
527
579
  msgstr ""
528
580
 
@@ -587,17 +639,17 @@ msgid "Editor"
587
639
  msgstr ""
588
640
 
589
641
  #: udata/core/organization/constants.py:11 udata/features/transfer/models.py:14
590
- #: udata/harvest/models.py:23 udata/harvest/models.py:33 udata/harvest/models.py:71
642
+ #: udata/harvest/models.py:24 udata/harvest/models.py:34 udata/harvest/models.py:77
591
643
  msgid "Pending"
592
644
  msgstr ""
593
645
 
594
646
  #: udata/core/organization/constants.py:12 udata/features/transfer/models.py:15
595
- #: udata/harvest/models.py:72
647
+ #: udata/harvest/models.py:78
596
648
  msgid "Accepted"
597
649
  msgstr ""
598
650
 
599
651
  #: udata/core/organization/constants.py:13 udata/features/transfer/models.py:16
600
- #: udata/harvest/models.py:73
652
+ #: udata/harvest/models.py:79
601
653
  msgid "Refused"
602
654
  msgstr ""
603
655
 
@@ -648,23 +700,23 @@ msgstr ""
648
700
  msgid "Role"
649
701
  msgstr ""
650
702
 
651
- #: udata/core/organization/models.py:113
703
+ #: udata/core/organization/models.py:115
652
704
  msgid "Public Service"
653
705
  msgstr ""
654
706
 
655
- #: udata/core/organization/models.py:114
707
+ #: udata/core/organization/models.py:116
656
708
  msgid "Certified"
657
709
  msgstr ""
658
710
 
659
- #: udata/core/organization/models.py:115
711
+ #: udata/core/organization/models.py:117
660
712
  msgid "Association"
661
713
  msgstr ""
662
714
 
663
- #: udata/core/organization/models.py:116
715
+ #: udata/core/organization/models.py:118
664
716
  msgid "Company"
665
717
  msgstr ""
666
718
 
667
- #: udata/core/organization/models.py:117
719
+ #: udata/core/organization/models.py:119
668
720
  msgid "Local authority"
669
721
  msgstr ""
670
722
 
@@ -1018,7 +1070,7 @@ msgstr ""
1018
1070
  msgid "Roles"
1019
1071
  msgstr ""
1020
1072
 
1021
- #: udata/core/user/models.py:273 udata/tests/api/test_me_api.py:313
1073
+ #: udata/core/user/models.py:284 udata/tests/api/test_me_api.py:313
1022
1074
  msgid "Account deletion"
1023
1075
  msgstr ""
1024
1076
 
@@ -1054,10 +1106,6 @@ msgstr ""
1054
1106
  msgid "Not a valid UUID"
1055
1107
  msgstr ""
1056
1108
 
1057
- #: udata/forms/fields.py:210 udata/tests/api/test_datasets_api.py:764
1058
- msgid "Invalid URL"
1059
- msgstr ""
1060
-
1061
1109
  #: udata/forms/fields.py:414
1062
1110
  #, python-format
1063
1111
  msgid "Tag \"%(tag)s\" must be between %(min)d and %(max)d characters long."
@@ -1097,14 +1145,6 @@ msgstr ""
1097
1145
  msgid "You must be authenticated"
1098
1146
  msgstr ""
1099
1147
 
1100
- #: udata/forms/fields.py:739
1101
- msgid "You can only set yourself as owner"
1102
- msgstr ""
1103
-
1104
- #: udata/forms/fields.py:762
1105
- msgid "Permission denied for this organization"
1106
- msgstr ""
1107
-
1108
1148
  #: udata/forms/validators.py:59
1109
1149
  #, python-format
1110
1150
  msgid "This field requires \"%(name)s\" to be set"
@@ -1122,43 +1162,43 @@ msgstr ""
1122
1162
  msgid "Backend"
1123
1163
  msgstr ""
1124
1164
 
1125
- #: udata/harvest/models.py:16
1165
+ #: udata/harvest/models.py:17
1126
1166
  msgid "Manual"
1127
1167
  msgstr ""
1128
1168
 
1129
- #: udata/harvest/models.py:24
1169
+ #: udata/harvest/models.py:25
1130
1170
  msgid "Initializing"
1131
1171
  msgstr ""
1132
1172
 
1133
- #: udata/harvest/models.py:25
1173
+ #: udata/harvest/models.py:26
1134
1174
  msgid "Initialized"
1135
1175
  msgstr ""
1136
1176
 
1137
- #: udata/harvest/models.py:26
1177
+ #: udata/harvest/models.py:27
1138
1178
  msgid "Processing"
1139
1179
  msgstr ""
1140
1180
 
1141
- #: udata/harvest/models.py:27 udata/harvest/models.py:35
1181
+ #: udata/harvest/models.py:28 udata/harvest/models.py:36
1142
1182
  msgid "Done"
1143
1183
  msgstr ""
1144
1184
 
1145
- #: udata/harvest/models.py:28
1185
+ #: udata/harvest/models.py:29
1146
1186
  msgid "Done with errors"
1147
1187
  msgstr ""
1148
1188
 
1149
- #: udata/harvest/models.py:29 udata/harvest/models.py:36
1189
+ #: udata/harvest/models.py:30 udata/harvest/models.py:37
1150
1190
  msgid "Failed"
1151
1191
  msgstr ""
1152
1192
 
1153
- #: udata/harvest/models.py:34
1193
+ #: udata/harvest/models.py:35
1154
1194
  msgid "Started"
1155
1195
  msgstr ""
1156
1196
 
1157
- #: udata/harvest/models.py:37
1197
+ #: udata/harvest/models.py:38
1158
1198
  msgid "Skipped"
1159
1199
  msgstr ""
1160
1200
 
1161
- #: udata/harvest/models.py:38
1201
+ #: udata/harvest/models.py:39
1162
1202
  msgid "Archived"
1163
1203
  msgstr ""
1164
1204
 
@@ -1555,6 +1595,10 @@ msgstr ""
1555
1595
  msgid "Here"
1556
1596
  msgstr ""
1557
1597
 
1598
+ #: udata/tests/api/test_datasets_api.py:764
1599
+ msgid "Invalid URL"
1600
+ msgstr ""
1601
+
1558
1602
  #: udata/tests/forms/test_model_field.py:155
1559
1603
  msgid "Expect a \"Target\" class but \"Wrong\" was found"
1560
1604
  msgstr ""
udata/uris.py CHANGED
@@ -3,6 +3,7 @@ import re
3
3
  from werkzeug.routing import BuildError
4
4
  from flask import current_app, url_for
5
5
  from netaddr import IPAddress, AddrFormatError
6
+ from udata.i18n import _
6
7
 
7
8
  from udata.settings import Defaults
8
9
 
@@ -47,12 +48,12 @@ class ValidationError(ValueError):
47
48
 
48
49
  def error(url, reason=None):
49
50
  __tracebackhide__ = True
50
- if not isinstance(url, str):
51
- url = url.decode('utf8')
52
- msg = 'Invalid URL "{0}"'.format(url)
53
- if reason:
54
- msg = ': '.join((msg, reason))
55
- raise ValidationError(msg.encode('utf8'))
51
+ if reason is not None:
52
+ msg = _('Invalid URL "{url}": {reason}').format(url=url, reason=reason)
53
+ else:
54
+ msg = _('Invalid URL "{url}"').format(url=url)
55
+
56
+ raise ValidationError(msg)
56
57
 
57
58
 
58
59
  def config_for(value, key):
@@ -101,14 +102,14 @@ def validate(url, schemes=None, tlds=None, private=None, local=None,
101
102
 
102
103
  scheme = (match.group('scheme') or '').lower()
103
104
  if scheme and scheme not in schemes:
104
- error(url, 'Invalid scheme {0}'.format(scheme))
105
+ error(url, _('Invalid scheme {0}, allowed schemes: {1}').format(scheme, ", ".join(schemes)))
105
106
 
106
107
  if not credentials and match.group('credentials'):
107
- error(url, 'Credentials in URL are not allowed')
108
+ error(url, _('Credentials in URL are not allowed'))
108
109
 
109
110
  tld = match.group('tld')
110
111
  if tld and tld not in tlds and idna(tld) not in tlds:
111
- error(url, 'Invalid TLD {0}'.format(tld))
112
+ error(url, _('Invalid TLD {0}').format(tld))
112
113
 
113
114
  ip = match.group('ipv6') or match.group('ipv4')
114
115
  if ip:
@@ -117,15 +118,15 @@ def validate(url, schemes=None, tlds=None, private=None, local=None,
117
118
  except AddrFormatError:
118
119
  error(url)
119
120
  if ip.is_multicast():
120
- error(url, '{0} is a multicast IP'.format(ip))
121
+ error(url, _('{0} is a multicast IP').format(ip))
121
122
  elif not ip.is_loopback() and ip.is_hostmask() or ip.is_netmask():
122
- error(url, '{0} is a mask IP'.format(ip))
123
+ error(url, _('{0} is a mask IP').format(ip))
123
124
 
124
125
  if not local:
125
126
  if ip and ip.is_loopback() or match.group('localhost'):
126
- error(url, 'is a local URL')
127
+ error(url, _('is a local URL'))
127
128
 
128
129
  if not private and ip and ip.is_private():
129
- error(url, 'is a private URL')
130
+ error(url, _('is a private URL'))
130
131
 
131
132
  return url
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 9.0.1.dev29541
3
+ Version: 9.0.1.dev29562
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -144,6 +144,7 @@ It is collectively taken care of by members of the
144
144
  - Fix reuses' datasets references [#3057](https://github.com/opendatateam/udata/pull/3057)
145
145
  - Save and show harvest logs [#3053](https://github.com/opendatateam/udata/pull/3053)
146
146
  - Fix missing `ObjectId` validation on `/sources` endpoint [#3060](https://github.com/opendatateam/udata/pull/3060)
147
+ - Improve URL validation errors [#3063](https://github.com/opendatateam/udata/pull/3063) [#2768](https://github.com/opendatateam/udata/pull/2768)
147
148
 
148
149
  ## 9.0.0 (2024-06-07)
149
150