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/forms/fields.py +2 -2
- udata/static/admin.js +16 -16
- udata/static/admin.js.map +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_datasets_api.py +1 -1
- udata/tests/test_model.py +2 -1
- udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/fr/LC_MESSAGES/udata.po +31 -0
- udata/translations/udata.pot +101 -57
- udata/uris.py +14 -13
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/METADATA +2 -1
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/RECORD +17 -17
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/LICENSE +0 -0
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/WHEEL +0 -0
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/entry_points.txt +0 -0
- {udata-9.0.1.dev29541.dist-info → udata-9.0.1.dev29562.dist-info}/top_level.txt +0 -0
udata/static/common.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var
|
|
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
|
udata/static/common.js.map
CHANGED
|
@@ -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 ""
|
udata/translations/udata.pot
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
#, fuzzy
|
|
7
7
|
msgid ""
|
|
8
8
|
msgstr ""
|
|
9
|
-
"Project-Id-Version: udata
|
|
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-
|
|
12
|
-
"PO-Revision-Date: 2024-
|
|
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:
|
|
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:
|
|
92
|
+
#: udata/api/oauth2.py:54
|
|
57
93
|
msgid "Bearer Token"
|
|
58
94
|
msgstr ""
|
|
59
95
|
|
|
60
|
-
#: udata/api/oauth2.py:
|
|
96
|
+
#: udata/api/oauth2.py:58
|
|
61
97
|
msgid "Default scope"
|
|
62
98
|
msgstr ""
|
|
63
99
|
|
|
64
|
-
#: udata/api/oauth2.py:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
500
|
-
#: udata/tests/dataset/test_dataset_rdf.py:
|
|
501
|
-
#: udata/tests/dataset/test_dataset_rdf.py:
|
|
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:
|
|
573
|
+
#: udata/core/dataset/models.py:540
|
|
522
574
|
msgid "dataset"
|
|
523
575
|
msgstr ""
|
|
524
576
|
|
|
525
|
-
#: udata/core/dataset/rdf.py:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
703
|
+
#: udata/core/organization/models.py:115
|
|
652
704
|
msgid "Public Service"
|
|
653
705
|
msgstr ""
|
|
654
706
|
|
|
655
|
-
#: udata/core/organization/models.py:
|
|
707
|
+
#: udata/core/organization/models.py:116
|
|
656
708
|
msgid "Certified"
|
|
657
709
|
msgstr ""
|
|
658
710
|
|
|
659
|
-
#: udata/core/organization/models.py:
|
|
711
|
+
#: udata/core/organization/models.py:117
|
|
660
712
|
msgid "Association"
|
|
661
713
|
msgstr ""
|
|
662
714
|
|
|
663
|
-
#: udata/core/organization/models.py:
|
|
715
|
+
#: udata/core/organization/models.py:118
|
|
664
716
|
msgid "Company"
|
|
665
717
|
msgstr ""
|
|
666
718
|
|
|
667
|
-
#: udata/core/organization/models.py:
|
|
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:
|
|
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:
|
|
1165
|
+
#: udata/harvest/models.py:17
|
|
1126
1166
|
msgid "Manual"
|
|
1127
1167
|
msgstr ""
|
|
1128
1168
|
|
|
1129
|
-
#: udata/harvest/models.py:
|
|
1169
|
+
#: udata/harvest/models.py:25
|
|
1130
1170
|
msgid "Initializing"
|
|
1131
1171
|
msgstr ""
|
|
1132
1172
|
|
|
1133
|
-
#: udata/harvest/models.py:
|
|
1173
|
+
#: udata/harvest/models.py:26
|
|
1134
1174
|
msgid "Initialized"
|
|
1135
1175
|
msgstr ""
|
|
1136
1176
|
|
|
1137
|
-
#: udata/harvest/models.py:
|
|
1177
|
+
#: udata/harvest/models.py:27
|
|
1138
1178
|
msgid "Processing"
|
|
1139
1179
|
msgstr ""
|
|
1140
1180
|
|
|
1141
|
-
#: udata/harvest/models.py:
|
|
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:
|
|
1185
|
+
#: udata/harvest/models.py:29
|
|
1146
1186
|
msgid "Done with errors"
|
|
1147
1187
|
msgstr ""
|
|
1148
1188
|
|
|
1149
|
-
#: udata/harvest/models.py:
|
|
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:
|
|
1193
|
+
#: udata/harvest/models.py:35
|
|
1154
1194
|
msgid "Started"
|
|
1155
1195
|
msgstr ""
|
|
1156
1196
|
|
|
1157
|
-
#: udata/harvest/models.py:
|
|
1197
|
+
#: udata/harvest/models.py:38
|
|
1158
1198
|
msgid "Skipped"
|
|
1159
1199
|
msgstr ""
|
|
1160
1200
|
|
|
1161
|
-
#: udata/harvest/models.py:
|
|
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
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
raise ValidationError(msg
|
|
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.
|
|
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
|
|